今天我體驗了 GitLab EE on Docker 的安裝程序,我覺得文件寫的相當不錯,安裝的過程也頗為順利,只是在 Ubuntu 22.04 LTS 還是踩到了一些地雷,有些注意事項在官方文件上並沒有詳細提及,這篇文章我就帶大家來體驗一下完整的安裝設定流程。
注意: 官網有說 GitLab on Docker 不支援 Docker for Windows,要用的人風險自負!
安裝 Ubuntu 22.04.2 LTS
本篇文章我將使用 Ubuntu Server (minimized)
進行最小安裝!
-
先到 Get Ubuntu Server 下載最新版 ISO
-
建立 HyperV 並採用 Ubuntu Server (minimized)
安裝
安裝過程可以安裝 Install OpenSSH Server
選項,也要記得安裝 docker
套件!
變更預設 OpenSSH Server 的埠號
由於 GitLab 會用到 Port 22 做為 SSH 的通道,做為 git clone
之用,所以我們可以將預設的 Port 22 修改為其他 Port 埠號。
-
先安裝 vim 編輯器
sudo apt install vim
-
修改 Port 從 22 調整為 22000
sudo vi /etc/ssh/sshd_config
Port 22000
-
重啟 OpenSSH Server
sudo systemctl restart sshd
-
登出並重新登入
exit
ssh 192.168.1.103 -p 22000
執行 GitLab EE on Docker
執行步驟與注意事項如下:
-
設定 GITLAB_HOME
目錄
在 Ubuntu 22.04 LTS 預載的 Docker 是透過 Snap 安裝的,這個版本的 Docker 只要使用 -v
或 --volume
掛載磁碟,本地目錄一定要在 $HOME
目錄下,所以當我們用 root
身分執行 GitLab 容器時,我們的 GITLAB_HOME
一定要設定在 /root
目錄下!
export GITLAB_HOME=/root/gitlab
-
執行 GitLab 容器
這裡我們直接執行 GitLab EE 企業版,若未來想要升級企業版時,可以直接購買授權原地升級!
這裡我們直接以 gitlab.example.com
這個域名做示範,我在我的個人電腦會設定 hosts
檔案連接到這個暫時的域名。
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:latest
這裡的啟動時間可能蠻長的,我的電腦就要啟動 2 分鐘左右,你可以用 sudo docker logs -f gitlab
查看啟動狀況。
-
查詢預設 root
登入密碼
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
注意: 這組密碼會在啟動後的 24 小時後自動失效。
-
登入 Web 介面
由於我們尚未設定 TLS 憑證(HTTPS),所以請先透過 http://gitlab.example.com
登入即可!
調整 GitLab EE on Docker 設定
-
進入到 GitLab 容器中
sudo docker exec -it gitlab /bin/bash
-
透過 vi 編輯主要的 /etc/gitlab/gitlab.rb
設定檔
sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
你至少要編輯最重要的 external_url
設定,給定未來使用時的主要網址。
external_url 'https://gitlab.example.com'
-
手動設定 HTTPS 安全連線
停用 letsencrypt 自動設定
sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
letsencrypt['enable'] = false
安裝 mkcert 自簽憑證建立工具
sudo apt install libnss3-tools -y
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
rm -f mkcert-v*-linux-amd64
使用 mkcert 快速建立自簽憑證
mkcert -install
mkcert gitlab.example.com
此命令會產生 gitlab.example.com-key.pem
與 gitlab.example.com.pem
檔案,且預設根憑證放在 ~/.local/share/mkcert/
目錄下。
在容器中建立憑證資料夾與複製憑證進去 (需注意金鑰與憑證的檔名格式)
sudo docker exec -it gitlab mkdir -p /etc/gitlab/ssl
sudo docker exec -it gitlab chmod 755 /etc/gitlab/ssl
sudo docker cp gitlab.example.com-key.pem gitlab:/etc/gitlab/ssl/gitlab.example.com.key
sudo docker cp gitlab.example.com.pem gitlab:/etc/gitlab/ssl/gitlab.example.com.crt
-
重新啟動 GitLab 容器
sudo docker restart gitlab
這裡的啟動時間可能蠻長的,我的電腦就要啟動 2 分鐘左右,你可以用 sudo docker logs -f gitlab
查看啟動狀況。
-
登入 Web 介面
由於我們已經設定好 TLS 憑證(HTTPS),所以此時你已經可以透過 HTTPS 的 https://gitlab.example.com
登入網站!👍
-
設定 HTTP 自動轉向 HTTPS 安全連線
透過 vi 編輯主要的 /etc/gitlab/gitlab.rb
設定檔
sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
加入以下設定
nginx['redirect_http_to_https'] = true
重新啟動 GitLab 容器
sudo docker restart gitlab
解決 Git 無法信任自簽憑證的問題
我在如何在 Windows 安裝 Gitea 源碼版控系統與 PostgreSQL 14 資料庫文章中有個「設定 Git 用戶端工具信任 Gitea 的自簽憑證」段落,有提到相關處理方法。
若想找到 mkcert 的預設 Root CA 憑證所在的路徑,可以用以下命令查詢出來:
mkcert -CAROOT
若想找到 git 預設的 CA 憑證檔在哪裡,可以用以下命令查詢出來:
git config --system http.sslCAInfo
GitLab 首次使用設定
請參考 快速上手 GitLab 安裝與首次使用設定:以 Ubuntu 22.04 LTS 為例 文章的「從 Web 介面初始化設定 GitLab」章節說明。
相關連結