Java, サーバ

JFrog Artifactoryをインストール #jfrog_jp @jfrog_jp

JFrog ArtifactoryはArtifact、つまりプロジェクトの成果物のリポジトリです。
競合製品としてはMaven Central Repositoryに使われているSonatypeなんかが有名。
JFrogの特徴はなんといっても対応しているプラットフォームの幅の広さ。MavenはもちろんのことNPM、Nuget、Gem、Dockerなどなど考えつく大概のパッケージ形式に対応しています。
Maven、Gradle、IvyのみをサポートするArtifactory OSSから、全部入りのArtifactory Enterpriseまで、5種類の製品展開があります。

https://jfrog.com/open-source/より抜粋

以下、JFrog Artifactory Proを試しにインストールしてみたログです:

export JFROG_HOME=~/jfrog
mkdir -p $JFROG_HOME/artifactory/var/etc/
cd $JFROG_HOME/artifactory/var/etc/
touch ./system.yaml
sudo chown -R 1030:1030 $JFROG_HOME/artifactory/var

sudo vi ./system.yaml

system.yaml はマルチノード構成にする際など、shared.node.idとshared.node.ipを設定しておく必要があるそうです。
今回はシングルノード構成だけれども、一応以下のように設定しておきました
https://pastebin.com/Lfy2qcFN

起動と確認は以下の通り。今回はArtifactory Proを選んでいます。

$ docker run --name artifactory -v $JFROG_HOME/artifactory/var/:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 docker.bintray.io/jfrog/artifactory-pro:latest

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9bde3c83b9e1 docker.bintray.io/jfrog/artifactory-pro:latest "/entrypoint-artifac…" 14 seconds ago Up 13 seconds 0.0.0.0:8081-8082->8081-8082/tcp artifactory

これでArtifactoryが起動していますが、自分の環境では8081,8082ポートが外向けに空いている訳ではないのでドキュメントを参考にNginxのリバースプロキシを設定します。
ドキュメントにあるrewrite ^/(v1|v2)/(.*) /artifactory/api/docker/$repo/$1/$2;の行があると起動できませんでしたのでとりあえず削除しています。

server {
    listen 443 ssl;

    server_name jfrog.samuraism.com;
    if ($http_x_forwarded_proto = '') {
        set $http_x_forwarded_proto  $scheme;
    }
    ## Application specific logs
    ## access_log /var/log/nginx/yourdomain.com-access.log timing;
    ## error_log /var/log/nginx/yourdomain.com-error.log;
    rewrite ^/$ /ui/ redirect;
    rewrite ^/ui$ /ui/ redirect;
    chunked_transfer_encoding on;
    client_max_body_size 0;
    location / {
        proxy_read_timeout  2400s;
        proxy_pass_header   Server;
        proxy_cookie_path   ~*^/.* /;
        proxy_pass          http://localhost:8082;
        proxy_next_upstream error timeout non_idempotent;
        proxy_next_upstream_tries    1;
        proxy_set_header    X-JFrog-Override-Base-Url $http_x_forwarded_proto://$host:$server_port;
        proxy_set_header    X-Forwarded-Port  $server_port;
        proxy_set_header    X-Forwarded-Proto $http_x_forwarded_proto;
        proxy_set_header    Host              $http_host;
        proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;

        location ~ ^/artifactory/ {
            proxy_pass    http://localhost:8081;
        }
    }
}

しばらくすると https://jfrog.samuraism.com/ui/login/ で管理画面を開けます。
デフォルトのID、パスワードはadmin/password

初期パスワードを設定。1PasswordとかBitwardenで生成したパスワードを設定すると安心

評価版ライセンスを入れました

プロキシ設定。自分の環境では必要ないのでスキップ

リポジトリ、なんとなく使う可能性があるものをチェック。たぶん後からでも追加できる。

早速肝心のMavenを指定し忘れていたことに気がつきました。まぁいいや、後で設定してみる。

インストール完了!

Nginxのリバースプロキシの設定はAdministration > Artifactory > HTTP Settings > Reverse Proxy Settings から生成することも出来ます。

もっともこの画面にたどり着くのにリバースプロキシが必要なのですが、sshポートフォワードして最初http://localhost:8081/uiにアクセスして生成するのもありですね。