web-dev-qa-db-ja.com

SynologyのDockerでGitLabのSSLを有効にするNAS

私のDockerコンテナにあるSynology NAS(DSM 5.2)の公式GitLabパッケージを介してGitLabのインストールが機能しています。

今では、httpだけでなくhttpsを介してWebインターフェースにアクセスしたいと思っています。いくつかの投稿で、Dockerマジックを使用して実行できることを確認しましたが、詳細な手順は見つかりませんでした。

誰でもこれを達成する方法を説明できますか?

これがデフォルトではないのは残念です。

11
Crami

使用しているgitlabイメージを指定していません:

最も一般的なコンテナイメージには、SSLを有効にする方法の詳細を含む手順がすでに含まれています。

1
Mark O'Connor

DSM6では、dsm dockerインターフェースを使用して変更(証明書の生成を除く)が可能になりました。

1)キー/証明書を作成します。

mkdir /volume1/docker/gitlab/certs
cd /volume1/docker/gitlab/certs
openssl genrsa -out gitlab.key 2048
openssl req -new -key gitlab.key -out gitlab.csr
openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
openssl dhparam -out dhparam.pem 2048
chmod 400 gitlab.key

2)gitlab docker環境をセットアップします。

setting gitlab docker environment vars via DSM gui

3)gitlab dockerポートのバインディングを設定します: Set port binding for gitlab

10
helt

Cramiがパッケージのインストール(sameersbn/gitlab:7.9.3)を使用してくれた指示。絶対です:

  1. Cramiのコマンドラインの指示に従って、証明書を生成します。

    mkdir /volume1/docker/gitlab/certs
    cd /volume1/docker/gitlab/certs
    openssl genrsa -out gitlab.key 2048
    openssl req -new -key gitlab.key -out gitlab.csr
    openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
    openssl dhparam -out dhparam.pem 2048
    chmod 400 gitlab.key
    
  2. パッケージセンターでパッケージを停止する
  3. /usr/syno/etc/packages/Docker/synology_gitlab.configで構成ファイルを編集します。これはコマンドラインではなくJSONファイルですが、何を変更/追加するかを簡単に確認できます。追加する必要があります:

    {
       "key" : "GITLAB_HTTPS",
       "value" : "true"
    },
    {
       "key" : "SSL_SELF_SIGNED",
       "value" : "true"
    },
    

    同じファイルで、代わりに80から443へのポートバインディング:

    {
       "container_port" : 443,
       "Host_port" : 30000,
       "type" : "tcp"
    },
    
  4. パッケージセンターでパッケージを開始する

4
Joe Wirtley

DSM 6.2.1の場合

私はこれをインストールしただけで、ここでの回答のいくつかが役に立ちましたが、それでも問題が発生しました。だから私は私の発見を共有することを考えました:

Synology DSM内で既に生成したlet-encrypt証明書を使用したいと思いました。

  1. タスクスケジューラ(ユーザー定義スクリプト)を作成する

    cp /usr/syno/etc/certificate/system/default/privkey.pem  /volume1/docker/gitlab-ce/gitlab/certs/gitlab.key
    cp /usr/syno/etc/certificate/system/default/fullchain.pem /volume1/docker/gitlab-ce/gitlab/certs/gitlab.crt
    

    gitlabをインストールするときに、選択した名前/フォルダーに調整します(私の場合は「gitlab-ce」)。

  2. Sslが開いている任意のマシンにdhparam.pemファイルを作成します

    openssl dhparam -out dhparam.pem 2048
    

    遅いため、NASではこれを行わないことをお勧めします(待機する患者がいる場合は、キーの複雑さが増す可能性があります)。

  3. Dhparam.pmをgitlab内のcertificatsフォルダーの場所にコピーします

    /volume1/docker/gitlab-ce/gitlab/certs/
    

    gitlabをインストールするときに、選択した名前/フォルダーに調整します(私の場合は「gitlab-ce」)。

  4. パッケージセンターでgitlabを停止します(すべてのツリーDockerコンテナーを停止します)

  5. Synology_gitlabコンテナ上

    5.1 2つの環境変数を追加する

    GITLAB_HTTPS=true  
    SSL_SELF_SIGNED=false
    

    5.2。 gitlabポートバインディング(コンテナーポート)を80から443に変更します。

この方法では、Synology DSM(または手動で)が新しい証明書を作成した場合、設定した時間(ユーザー定義スクリプトで選択)で、生成したSSL証明書が自動的に更新されます。ただし、これは即時更新ではありませんが、タスクスケジューラインターフェイスから手動でトリガーできます。それでも、このアプローチは個人的なNASソリューションの場合は一種の心配がありません。

3
AnafiFlyer

@heltソリューションを使用しましたが、Docker情報ページ( https://hub.docker.com/r/sameersbn/gitlab/#ssl )を見て、certsフォルダーが "docker"にあることを確認しました/ gitlab/gitlab/certs/"...

@heltソリューションの場合、これを更新しました:

mkdir /volume1/docker/gitlab/gitlab/certs
cd /volume1/docker/gitlab/gitlab/certs
openssl genrsa -out gitlab.key 2048
openssl req -new -key gitlab.key -out gitlab.csr
openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
openssl dhparam -out dhparam.pem 2048
chmod 400 gitlab.key

「/ volume1/docker/gitlab/certs」のみを使用すると、GitLabページにアクセスすると「PR_END_OF_FILE_ERROR」のエラーページが表示され、「/ volume1/docker/gitlab/gitlab/certs」を使用するとエラーが表示されなくなり、すべて正常に動作します...

Synologyステーションは、DSM 6.2.2-24922 Update 3を実行しているDS718 +です。

1
Patrick Perron

NASに新しいDockerコンテナーを作成し、すべてが希望どおりに機能するようになりました。

次のようにgitlabパッケージの説明のようにssl証明書を作成する必要があります:

mkdir /volume1/docker/gitlab/certs
cd /volume1/docker/gitlab/certs
openssl genrsa -out gitlab.key 2048
openssl req -new -key gitlab.key -out gitlab.csr
openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
openssl dhparam -out dhparam.pem 2048
chmod 400 gitlab.key

次に、コンテナを削除して再作成します。

docker rm synology_gitlab    

docker run --name synology_gitlab -d --link synology_gitlab_redis:redisio \
  --publish 30001:22 --publish 30080:80 --publish 30000:443 \
  --env "GITLAB_HTTPS=true" --env "SSL_SELF_SIGNED=true" \
  --env "GITLAB_Host=nas.freestone.net" \
  --env "GITLAB_PORT=30000" \
  --env "GITLAB_SSH_PORT=30001" \
  --env "[email protected]" \
  --env "DB_TYPE=mysql" \
  --env "DB_Host=172.17.42.1" \
  --env "DB_NAME=gitlab" \
  --env "DB_USER=gitlab" \
  --env "DB_PASS=yourdbpassword" \
  --env "SMTP_ENABLED=true" \
  --env "SMTP_DOMAIN=mailserver.example.com" \
  --env "SMTP_Host=mailserver.example.com" \
  --env "SMTP_PORT=587" \
  --env "[email protected]" \
  --env "SMTP_PASS=mailpassword" \
  --env "SMTP_OPENSSL_VERIFY_MODE=none" \
  --volume /volume1/docker/gitlab/:/home/git/data \
  sameersbn/gitlab:7.9.3

その後、再び稼働します。ポート30000がhttpsになり、httpではなくなりました。

1
Crami