JetBrains Space ヘルプ

Docker Compose 実稼働環境用の Space の構成

Space オンプレミスインスタンスのカスタマイズを有効にする

Space On-Premises の Docker Compose インストールには、すぐに使用できる事前定義された構成が付属しています。ただし、Space On-Premises を運用環境で動作させるには、追加の構成を実行する必要があります。

Space オンプレミス構成は、Space アプリケーションコンテナーに保存される conf ファイルのセットです。Space オンプレミスを構成するには、ファイルをホストマシンにコピーして変更し、Space が新しいファイルの場所を指すようにする必要があります。

  1. {space_install_dir/config} ディレクトリ (例: space-on-premises/config) を開き、次を実行します。

    docker cp {space_container_id}:/home/space/circlet-server-onprem/config .

    次の構成ファイルがホストマシンの {space_install_dir/config} ディレクトリにコピーされます。

    • langservice.on-premises.conf

    • packages.on-premises.conf

    • space.on-premises.conf

    • vcs.on-premises.properties

  2. 必要に応じて構成ファイルを編集します。

  3. Space インスタンスを停止します。

    docker-compose -p space-on-premises down docker-compose -p space-on-premises rm -f

  4. Space インストールディレクトリにある docker-compose.yml ファイルを開きます。

  5. Space 構成ファイルのデフォルトの場所を変更します。これを行うには、docker-compose.yml ファイルを編集します。

    1. config:{} 行をコメントアウトします。

      ... # config:{} ...
    2. docker ボリューム構成へのすべての参照を config から ./config に変更します。つまり、以下から。

      ... volumes: - config:/home/init-config/config ... volumes: - config:/home/space/circlet-server-onprem/config ... volumes: - config:/home/space/git/vcs-hosting/config ... volumes: - config:/home/space/packages-server/config ... volumes: - config:/home/space/langservice-server/config ...

      終了:

      ... volumes: - ./config:/home/init-config/config ... volumes: - ./config:/home/space/circlet-server-onprem/config ... volumes: - ./config:/home/space/git/vcs-hosting/config ... volumes: - ./config:/home/space/packages-server/config ... volumes: - ./config:/home/space/langservice-server/config ...
  6. 更新された構成で Space On-Premises を開始します。

    docker-compose -p space-on-premises up -d

Space On-Premises インスタンスをネットワークからアクセスできるようにする

デフォルトでは、Space On-Premises の Docker Compose インストールでは、ベース URL として 127.0.0.1 および localhost が使用されます。この構成は、Space をローカルで実行する場合の概念実証シナリオでのみ適切に機能します。Space を別のマシンで実行し、ネットワークにアクセスできるようにする場合は、nginx Web サーバーを使用する必要があります。これはリバースプロキシとして機能し、リクエストを Space にリダイレクトします。

前提条件:

  • Space コンポーネントのドメイン名はすでに登録されており、ホストマシンの IP アドレスに解決されます。Space コンポーネントには、Space アプリケーション、VCS、パッケージサーバーが含まれます。この例では、space.example.comgit.example.compackages.example.com という名前を使用します。

  • 対応する TLS 証明書がホストマシンにインストールされます。証明書は、信頼できる認証局 (例: 暗号化しましょう (英語)) から取得できます。

  • ホストマシンには nginx Web サーバーがインストールされています。インストール手順は公式 Web サイト(英語)でご覧いただけます。

  1. ホストマシンの /etc/nginx/conf.d ディレクトリに space.conf NGINX 構成ファイルを作成します。例:

    server { client_max_body_size 0; server_name space.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8084/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; ssl_certificate /path_to_certs/space.example.com/fullchain.pem; ssl_certificate_key /path_to_certs/space.example.com/privkey.pem; } server { client_max_body_size 0; server_name git.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8080/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; ssl_certificate /path_to_certs/git.example.com/fullchain.pem; ssl_certificate_key /path_to_certs/git.example.com/privkey.pem; } server { client_max_body_size 0; server_name packages.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8390/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; ssl_certificate /path_to_certs/packages.example.com/fullchain.pem; ssl_certificate_key /path_to_certs/packages.example.com/privkey.pem; } server { client_max_body_size 0; server_name minio.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:9000/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; ssl_certificate /path_to_certs/packages.example.com/fullchain.pem; ssl_certificate_key /path_to_certs/packages.example.com/privkey.pem; } # configuring HTTP redirects server { if ($host = space.example.com) { return 301 https://$host$request_uri; } server_name space.example.com; listen 80; return 404; } server { if ($host = git.example.com) { return 301 https://$host$request_uri; } server_name git.example.com; listen 80; return 404; } server { if ($host = packages.example.com) { return 301 https://$host$request_uri; } server_name packages.example.com; listen 80; return 404; } server { if ($host = minio.example.com) { return 301 https://$host$request_uri; } server_name minio.example.com; listen 80; return 404; }

    上の例では、次のように変更します。

    • 証明書への実際のパスへのすべての ssl_certificate および ssl_certificate_key パス。

    • すべての server_name 値 (space.example.comgit.example.compackages.example.com) を実際のドメイン名に変換します。

  2. 変更を保存し、構成を適用します。

    sudo nginx -s reload
  3. Space インスタンスをカスタマイズできるようにします

  4. Space インスタンスが実行中の場合は停止します。

  5. Space のインストールディレクトリを開きます。

  6. space.on-premises.conf ファイルで、すべての url および altUrls パラメーターを新しい URL 値で更新します。例:

    circlet { frontend { url = "https://space.example.com" internalUrl = "http://space:9084" } packages { notifications { enabled = true } types { maven { url = "https://packages.example.com" } nuget { url = "https://packages.example.com" } npm { url = "https://packages.example.com" } container { url = "https://packages.example.com" } pypi { url = "https://packages.example.com" } composer { url = "https://packages.example.com" } dart { url = "https://packages.example.com" } files { url = "https://packages.example.com" } crates { url = "https://packages.example.com" } } } }
  7. packages.on-premises.conf ファイルで、すべての url および internalUrl パラメーターを新しい URL 値で更新します。例:

    circlet { packages { url = "https://packages.example.com" internalUrl = "http://packages:9390" } space { url = "https://space.example.com" internalUrl = "http://space:9084" } storage { aws { publicUrl = "https://minio.example.com" } } }
  8. vcs.on-premises.properties ファイルで、base.url および circlet.url.ext パラメーターを新しい URL 値で更新します。例:

    base.url=https://git.example.com circlet.url.int=http://space:9084 circlet.url.ext=https://space.example.com
  9. 更新された構成で Space On-Premises を開始します。

    docker-compose up -d

メールサーバーを有効にする

Docker Compose のインストールには、事前構成されたメールサーバーは含まれません。以下の手順は、MailHog メールサーバーを作成して Space に登録する方法を示しています。

  1. Space インスタンスが実行中の場合は停止します。

  2. Space のインストールディレクトリを開きます。

  3. docker-compose.yml ファイルに、メールサーバー構成を追加します。

    services: mailhog: image: mailhog/mailhog ports: - 1025:1025 # SMTP server port - 8025:8025 # UI port networks: - "frontend"
  4. Space にメールサーバーの設定を提供します。これは、Space 管理 UI を使用する方法と Space 構成ファイルを使用する方法の 2 つの方法で実行できます。

    1. 更新された構成で Space On-Premises を開始します。

      docker-compose up -d
    2. ブラウザーで Space インスタンスを開き、このページに示されているようにメール設定を指定します。

    1. Space インスタンスをカスタマイズできるようにします

    2. space.on-premises.conf ファイルを開き、要件に従ってメール構成を変更します。

      mail { outgoing { enabled = true // protocol settings fromAddress = "space@space.example.com" host = "mailhog" port = 1025 protocol = "SMTP" // "SSL" and "TLS" are also supported login = "space" password = "space" messageQueuePrefix = "mailQueue" // handling properties aggregationDelaySecs = 900 rateLimitPerSecond = 3 } }
    3. 更新された構成で Space On-Premises を開始します。

      docker-compose up -d

(ケース固有) Space パッケージでの手動ダウンロードを有効にする

Space インスタンスにカスタムオブジェクトストレージを使用する場合は、任意のオリジンからの GET リクエストの受信を許可するように CORS ポリシーを構成する必要があります。

Access-Control-Allow-Methods: GET Access-Control-Allow-Origin: *

そうしないと、ユーザーは Space のリポジトリページからパッケージを手動でダウンロードできなくなります。ダウンロードボタンをクリックするとエラーになります。

  1. AWS マネジメントコンソールにサインインし、Amazon S3 コンソール(英語)を開きます。

  2. Space パッケージに使用される S3 バケットを開きます。

  3. 許可タブを開き、次の構成を CORS セクションに追加します。

    [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [] } ]
  4. 変更内容を保管します。