The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

快速上手 GitLab EE on Docker 安裝:以 Ubuntu 22.04 LTS 為例

今天我體驗了 GitLab EE on Docker 的安裝程序,我覺得文件寫的相當不錯,安裝的過程也頗為順利,只是在 Ubuntu 22.04 LTS 還是踩到了一些地雷,有些注意事項在官方文件上並沒有詳細提及,這篇文章我就帶大家來體驗一下完整的安裝設定流程。

gitlab

注意: 官網有說 GitLab on Docker 不支援 Docker for Windows,要用的人風險自負!

安裝 Ubuntu 22.04.2 LTS

本篇文章我將使用 Ubuntu Server (minimized) 進行最小安裝!

  1. 先到 Get Ubuntu Server 下載最新版 ISO

  2. 建立 HyperV 並採用 Ubuntu Server (minimized) 安裝

    image

    安裝過程可以安裝 Install OpenSSH Server 選項,也要記得安裝 docker 套件!

變更預設 OpenSSH Server 的埠號

由於 GitLab 會用到 Port 22 做為 SSH 的通道,做為 git clone 之用,所以我們可以將預設的 Port 22 修改為其他 Port 埠號。

  1. 先安裝 vim 編輯器

    sudo apt install vim
    
  2. 修改 Port 從 22 調整為 22000

    sudo vi /etc/ssh/sshd_config
    
    Port 22000
    
  3. 重啟 OpenSSH Server

    sudo systemctl restart sshd
    
  4. 登出並重新登入

    exit
    
    ssh 192.168.1.103 -p 22000
    

執行 GitLab EE on Docker

執行步驟與注意事項如下:

  1. 設定 GITLAB_HOME 目錄

    在 Ubuntu 22.04 LTS 預載的 Docker 是透過 Snap 安裝的,這個版本的 Docker 只要使用 -v--volume 掛載磁碟,本地目錄一定要在 $HOME 目錄下,所以當我們用 root 身分執行 GitLab 容器時,我們的 GITLAB_HOME 一定要設定在 /root 目錄下!

    export GITLAB_HOME=/root/gitlab
    
  2. 執行 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 查看啟動狀況。

  3. 查詢預設 root 登入密碼

    sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
    

    注意: 這組密碼會在啟動後的 24 小時後自動失效。

  4. 登入 Web 介面

    由於我們尚未設定 TLS 憑證(HTTPS),所以請先透過 http://gitlab.example.com 登入即可!

調整 GitLab EE on Docker 設定

  1. 進入到 GitLab 容器中

    sudo docker exec -it gitlab /bin/bash
    
  2. 透過 vi 編輯主要的 /etc/gitlab/gitlab.rb 設定檔

    sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
    

    你至少要編輯最重要的 external_url 設定,給定未來使用時的主要網址。

    external_url 'https://gitlab.example.com'
    
  3. 手動設定 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.pemgitlab.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
    
  4. 重新啟動 GitLab 容器

    sudo docker restart gitlab
    

    這裡的啟動時間可能蠻長的,我的電腦就要啟動 2 分鐘左右,你可以用 sudo docker logs -f gitlab 查看啟動狀況。

  5. 登入 Web 介面

    由於我們已經設定好 TLS 憑證(HTTPS),所以此時你已經可以透過 HTTPS 的 https://gitlab.example.com 登入網站!👍

  6. 設定 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」章節說明。

相關連結

留言評論