Gitlab 與 gitlab-ce 的前言

Gitlab 有企業版和社區版 (gitlab-ce),個人使用者就選擇社區版夠用了。

gitlab-ce 是套很完整的 git server,在完整的前題下整合著許多的服務,當然運行速度上也會比較肥大,執行時間上也會較久,由 docker 開啟 gitlab-ce 容器運行後,也大約需要十至二十分的時間才能讓網頁介面呈現,進行使用者登入。


安裝 gitlab-ce

下載 gitlab-ce 映像

開啟 docker 介面,前往 倉庫伺服器 gitlab-ce 尋找映像檔,找到後點按下載按鈕將映像檔載下,因為很肥大所以所載下的檔案也需要一大段的時間。

前往映像檔面版查看,完成下載的 gitlab-ce 映像檔足足有 3G 的大小,接著在右上方的佈署按鈕點按,準備設定 gitlab-ce 容器。

增加 docker 資料夾下所需的組態對應路徑資料夾

本地路徑容器路徑說明
/docker/gitlab-ce/data /var/opt/gitlab資料目錄
/docker/gitlab-ce/logs /var/log/gitlab日誌目錄
/docker/gitlab-ce/config /etc/gitlab組態檔案等

對應設定的資料夾路徑如下圖。

連接埠設定

組態連接埠對應,在本機連接埠所設定的組態,會是 web 使用的端口連接埠 <nas ip or domain>:3080,其他二個分別是 ssh 的 3022 與 ssl 的 3443。

環境設定

這裡只有參考文章設定 GITLAB_HOST 變數,這裡如果是在區網使用的話,會需要直接指定 nas 主機的 ip 加上埠號,如果是對外的 domain name 要完整的對應 ssl 的 http or https 與網址。


Web 操作

取得 initial_root_password 文件檔裡會有自動產生的密碼,以 root 帳號初步登入 gitlab-ce

到這裡已 gitlab-ce 完成容器的初步設定,在執行容器運行需要一段時間,大約至少十分鐘以上,依主機效能有所差異,當運行完成後就可以使用 http://<nas ip or domain>:3080 於瀏覽器開啟網頁,過程中會出現 400 與 502 狀態回應,但如果見到 502 頁面時也表示成功運行起 gitlab-ce。

gitlab-ce 透過 docker 運行後,會產生出 config/initial_root_password 文件檔裡會有自動產生的密碼,會是以最高權限的 root 帳號來使用。

參考文章於 gitlab-ce 在容器設定時,加入 GITLAB_ROOT_PASSWORD 變數與設定密碼 (值),但實際運行後確無法啟動 gitlab-ce,之後刻意將 GITLAB_ROOT_PASSWORD 變數加入容器設定中,也成功的將 gitlab-ce 運行起來, GITLAB_ROOT_PASSWORD 變數不設定直接進 config/initial_root_password 文件檔取得運行自動產生的密碼。

取得的密碼也在下面程式碼片段 Password: 的後方,也就是一長串的 hash 字串的 <gitlab-ce 自動產生的密碼>

gitlab.rb 設定 gitlab-ce 的常規組態

常規組態都在 /docker/gitlab-ce/config/gitlab.rb 檔案中。

有不少文章說修改組態檔案: /docker/gitlab-ce/data/gitlab-rails/etc/gitlab.yml
其實這個檔案是不建議修改,因為執行 gitlab-ctl reconfigure 後會被覆蓋,要修改只能修改 /docker/gitlab-ce/config/gitlab.rb 檔案。

設定網址網址 (domain or nas ip)

登入 gitlab-ce 之後先進入預設建立的 Monitoring 的 repo,因為是初建還沒有相關的程式碼加入 git 版控,呈現的介面會是幾個針對專案的 git 設定,其中見到 clone 按鈕點按下的網址,在 HTTP 與 SSH 的網址是以 gitlab-ce 做為主機網址,接著下來就會需要處理這部份。

開啟 gitlab.rb 檔裡面會都是 # 的方式註解設定,直接加入 external_url 設定,在沒有 https 的 ssl 方式下直接對應容器的網址埠號 3080 設定,這裡需要將整個網址完整輸入。

如果習慣程式碼習慣置於對應的說明區下,配合關鍵字 external_url 查尋到對應位置。

進行了上面的設定後,在原本的 gitlab-ce 容器對應的容器連接埠 80,也需要改成 3080 (本機與容器的埠號都相同),才能在瀏覽器正常開啟 gitlab-ce 的網頁。

external_url 所設定的是容器整個的路由,會對應上的是 SSL、domain (or ip)、埠號,以相對的方式處理,所以在 gitlab-ce 設定也需要往 Docker 的容器設定,以相對將原有的 80 改成 3080 埠號。

組態 SMTP 信箱

其他的設定如下,如果沒要用外部 domain 與信箱,基本上可略過。

信樝的 SMTP 設定加入 gitlab.rb 檔之後,前往終端機新增按鈕新開 bash,使用指令 gitlab-ctl reconfigure 相關設定進行重新配置。

關閉註冊

初登入介面後,上方會提示 Check your sign-up restrictions (檢查您的註冊限制),點按下 deactivate 按鈕。

前往 Sign-up restrictions 設定頁,預設是開放註冊,可以關閉註冊以手動來新增使用者,將 Sign-up enabled 不勾選後 Save Changes 儲存設定。

root 帳號修改密碼

右上角的帳號圖示,點按收合選單後點按 Preferences

進入 Preferences 頁面後,在左方的功能選單中有個鎖頭圖示,點按後會前往 Password 頁面,更動需先將 config/initial_root_password 檔中取得的密碼貼入 Current password,再進行設定新的密碼,之後在登入 gitlab-ce 之後會是使用新的密碼。

新建帳戶

點按 Menu > Admin

左方功能選單點按到 Users。

進入到 Users 列表頁後,再點按右方的 New user 按鈕進行新增使用者用。

新增使用者帳號,是由 root 管理權限的帳號所新增,如果有設定 smtp 信箱設定,在創建新的使用者帳號時,在 email 信箱中會收到註冊信,進行驗証之後新的帳號才能進入 gitlab-ce。

新帳號註冊不以信箱驗証,只能走註冊頁面進行新增使用者帳號與直接設定密碼。


參考資料

Gary的個人技術記錄-群暉NAS搭建私有Gitlab倉庫