Ssl
使用 Plesk 和 LetsEncrypt 配置 GitLab Docker 容器
嗨,我的 GitLab 設置有問題。
我想要達到的目標:
- 在 Docker 容器中執行 GitLab
- 通過埠 80 和 443 上的子域 (gitlab.mydomain.com) 訪問 GitLab 以獲取 https
- 通過 LetsEncrypt 和 Plesk 提供的 *.mydomain.com 萬用字元證書管理 SSL(已用於 Plesk 管理的子域)
- 能夠在 GitLab 容器(npm 腳本等)中執行建構任務,並最終將特定的輸出文件移動到 Plesk 管理的子域的目錄(容器外部)
到目前為止我做了什麼:
- 有一個執行 Ubuntu 18.04.2 並預裝了 Plesk Onyx 17.8.11 的 v-server
- 通過 Plesk 設置 mydomain.com
- 通過 Plesk 為 mydomain.com 設置 LetsEncrypt 萬用字元證書
- 通過 ssh 安裝 Docker(不是 Plesk)
- 在 mydomain.com:30080 的容器內執行 GitLab
我對伺服器環境和 Docker 完全陌生,所以我不確定所需的事物結構。也許你們知道該怎麼做?
謝謝!
此設置對我有用:
- 從 Plesk 創建一個子域(例如 gitlab.mydomain.com)
- 在“主機設置”中選擇您的 Let’s Encrypt 證書,並確保在 HTTPS 上設置永久 301 重定向(只需勾選複選框)
- 啟動 Docker 容器時,公開埠 80(例如 80:10080)
- 在“Apache & nginx 設置”中添加以下內容:
location / { proxy_pass http://localhost:10080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }
這將通過 HTTPS 和 Let’s Encrypt 證書為您的子域提供服務,同時將請求代理到容器的埠 80,因此您不必費心將證書從容器外部傳遞給 GitLab。
據我了解,這是安全的,因為未加密的流量被限制在伺服器中(如果您的 Docker 守護程序與 Plesk 在同一台伺服器上)並且無法從外部訪問。
–
最後一點
能夠在 GitLab 容器(npm 腳本等)中執行建構任務,並最終將特定的輸出文件移動到 Plesk 管理的子域的目錄(容器外部)
這本身就是一個完整的問題。
要執行建構,您需要安裝 GitLab Runner。GitLab 文件建議將其安裝在不同的主機上,但您可以嘗試在同一主機上使用他們的Docker 映像。
有關建構和部署應用程序的資訊,請參閱 GitLab Runner文件。您需要為所謂的“持續部署”設置“管道”。
要為每個應用創建子域,您可以:
- 從 Plesk 手動創建子域並使用腳本部署文件作為“管道”建構的最後一步
- 使用一些腳本和 Plesk API 來自動創建子域
- 忽略 Plesk 並使用完整的 Docker;使用將處理所有子域和 Let’s Encrypt 證書的反向代理,例如Traefik
這些只是指針,我建議您搜尋和閱讀更多關於 CI/CD 的主題。