私のDockerコンテナにあるSynology NAS(DSM 5.2)の公式GitLabパッケージを介してGitLabのインストールが機能しています。
今では、httpだけでなくhttpsを介してWebインターフェースにアクセスしたいと思っています。いくつかの投稿で、Dockerマジックを使用して実行できることを確認しましたが、詳細な手順は見つかりませんでした。
誰でもこれを達成する方法を説明できますか?
これがデフォルトではないのは残念です。
使用しているgitlabイメージを指定していません:
最も一般的なコンテナイメージには、SSLを有効にする方法の詳細を含む手順がすでに含まれています。
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環境をセットアップします。
Cramiがパッケージのインストール(sameersbn/gitlab:7.9.3)を使用してくれた指示。絶対です:
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
/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"
},
パッケージセンターでパッケージを開始する
DSM 6.2.1の場合
私はこれをインストールしただけで、ここでの回答のいくつかが役に立ちましたが、それでも問題が発生しました。だから私は私の発見を共有することを考えました:
Synology DSM内で既に生成したlet-encrypt証明書を使用したいと思いました。
タスクスケジューラ(ユーザー定義スクリプト)を作成する
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」)。
Sslが開いている任意のマシンにdhparam.pemファイルを作成します
openssl dhparam -out dhparam.pem 2048
遅いため、NASではこれを行わないことをお勧めします(待機する患者がいる場合は、キーの複雑さが増す可能性があります)。
Dhparam.pmをgitlab内のcertificatsフォルダーの場所にコピーします
/volume1/docker/gitlab-ce/gitlab/certs/
gitlabをインストールするときに、選択した名前/フォルダーに調整します(私の場合は「gitlab-ce」)。
パッケージセンターでgitlabを停止します(すべてのツリーDockerコンテナーを停止します)
Synology_gitlabコンテナ上
5.1 2つの環境変数を追加する
GITLAB_HTTPS=true
SSL_SELF_SIGNED=false
5.2。 gitlabポートバインディング(コンテナーポート)を80から443に変更します。
この方法では、Synology DSM(または手動で)が新しい証明書を作成した場合、設定した時間(ユーザー定義スクリプトで選択)で、生成したSSL証明書が自動的に更新されます。ただし、これは即時更新ではありませんが、タスクスケジューラインターフェイスから手動でトリガーできます。それでも、このアプローチは個人的なNASソリューションの場合は一種の心配がありません。
@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 +です。
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ではなくなりました。