簡體   English   中英

在 Synology NAS 上使用 Docker 在 GitLab 上啟用 SSL

[英]Enable SSL on GitLab with Docker on Synology NAS

我通過 Docker 容器中 Synology NAS (DSM 5.2) 上的官方 GitLab 軟件包安裝了 GitLab。

我現在喜歡通過 https 而不是 http 訪問 Webinterface。 我在幾個帖子中看到可以用一些 docker 魔法來做,但沒有找到任何詳細的說明。

誰能解釋一下如何實現這一目標?

遺憾的是,這不是默認值。

使用 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環境:

通過 DSM gui 設置 gitlab docker 環境變量

3)設置gitlab docker端口綁定: 為 gitlab 設置端口綁定

在 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 添加兩個環境變量

    GITLAB_HTTPS=true SSL_SELF_SIGNED=false

    5.2. 將 gitlab 端口綁定(容器端口)從 80 更改為 443

如果 Synology DSM(或您手動)創建一個新的證書,此方法將在設定的時間(您在用戶定義的腳本中選擇)自動更新您生成的 ssl 證書。 然而,這不是即時更新,但您可以從任務計划程序界面手動觸發它。 對於個人 NAS 解決方案,這種方法仍然是一種無憂無慮的方法。

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. 在套件中心啟動套件

您尚未指明您使用的是哪個 gitlab 圖像:

最常見的容器映像已經包含有關如何啟用 SSL 的詳細說明的說明:

我設法在 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 "GITLAB_EMAIL=your@example.com" \
  --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 "SMTP_USER=user@example.com" \
  --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。

我使用了@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+。

只有Patrick Perron的答案有效-DSM 6.2.2-24922更新2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM