###### tags: `Install` `Gitlab` # Gitlab Install 近期須在工廠內需要Gitlab Server,因此幫部門架設Gitlab Server。做個架設SOP紀錄,工廠為內網,憑證部分看公司是否有公司憑證,不建議使用let’s encrypt。如果沒有乾脆不使用憑證,這邊紀錄就不做憑證部分的設置紀錄。之後有遇到再補上。另外部屬上這邊為了之後後人要走CICD設置上稍微方便些..所以直接用實體部屬方式。 ## 一、安裝部分 ### 資源配置 - OS : Ubuntu20.04 - Core : 4核 - Memory : 8G ### 安裝步驟 #### Step1:更新系統與安裝openssh-server、ca-certificates與tzdata 套件 ```bash= sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates tzdata ``` - curl:GitLab Server 使用 curl 命令來從遠程源下載安裝腳本和其他必要的軟體包,以及向 GitLab API 發送請求。在沒有 curl 的情況下,這些操作將無法進行。 - openssh-server:GitLab 通常使用 SSH 進行認證和授權,以保證 Git 存儲庫和其他 GitLab 服務的安全性。因此,安裝 openssh-server 可以使 GitLab Server 支援 SSH 連線,以便管理人員可以使用 SSH 協議遠程登入到 GitLab 伺服器,以進行管理和維護工作 - ca-certificates:GitLab 通常使用 SSL/TLS 協議來保護敏感數據的傳輸,例如使用 HTTPS 連線到 GitLab API 或 Git 存儲庫。安裝 ca-certificates 可以幫助 GitLab Server 確保 SSL/TLS 連線的安全性,通過驗證數位憑證的有效性和真實性,以防止可能的安全漏洞和中間人攻擊 - tzdata:在 GitLab 中,時間戳記和時區設定是非常重要的,這將直接影響到記錄和報告的準確性。安裝 tzdata 可以幫助 GitLab Server 在不同的時區中運作,以保持正確的時間顯示和時間戳記記錄。 #### Step2:添加 GitLab 存儲庫並安裝 GitLab 社區版 ```bash= curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash ``` curl 命令下載了一個包含註冊 GitLab 社區版的套件源到系統中的腳本(script.deb.sh),而管道符號 | 將該腳本傳遞到了 Bash shell 中執行。腳本執行後,會自動將 GitLab 社區版的套件源註冊到系統中。以便之後可以使用 apt-get 命令安裝或更新 GitLab CE 套件。(apt-get觸發安裝) > sudo bash 命令僅啟動一個新的 Bash shell,並賦予該 shell 超級用戶權限,使您可以在該 shell 中運行任何命令。當您退出該 shell 時,您將返回到普通用戶權限的終端機中。他跟sudo -i不太一樣 #### Step3:設置GitLab URL ```bash= # http://your-gitlab-domain改成你要的網域 export GITLAB_URL=http://your-gitlab-domain ``` 先設置,後續還是可以修改。 #### Step4:安裝 GitLab 社區版 ```bash= sudo EXTERNAL_URL=${GITLAB_URL} apt-get install gitlab-ce ``` 基本上就安裝完成,安裝過程需要一點時間。過程會自動安裝 PostgreSQL,完全不用手動安裝設定,預設資料檔在 /var/opt/gitlab/postgresql/data/ 目錄。 ## 二、前置使用(這邊大部分用保哥的[文章](https://blog.miniasp.com/post/2023/04/24/Install-and-Configure-GitLab-on-Ubuntu-2204-LTS)) ### 設定防火牆 ```bash= sudo ufw status sudo ufw allow http sudo ufw allow https sudo ufw allow OpenSSH sudo ufw enable sudo ufw status ``` ### 調整GitLab Configuration File 編輯/etc/gitlab/gitlab.rb 檔案 #### external_url 如果你之前安裝已設好GITLAB_URL,這邊即可不用設置。 ```bash= sudo vi /etc/gitlab/gitlab.rb ``` ```bash= external_url 'http://your-gitlab-domain' ``` 調整 external_url 參數為你的 GitLab 網址,如果網址是 https:// 開頭且為外部網址的話,還會自動透過 Let's Encrypt 幫你申請一個免費憑證,只是Let's Encrypt申請上有些Rule,建議去了解。這邊因為是公司內部網域,這部分我直接使用http。 設好後,因為要透過url去連Gitlab Server需設置DNS去設置url與IP的對應,公司應該都有自己的DNS Server,這邊建議與公司IT詢問。如果是你自己想透過電腦去連Gitlab Server,沒有DNS伺服器下則可到你的Windows下述路徑 ``` C:\Windows\System32\drivers\etc ``` 路徑下有個host的文件,用admin去開啟,加入ip與url的對應,這邊稍微注意一下..url務必與gitlab.rb檔案裡的url相同,下述為範例 ``` 192.168.100.101 your-gitlab-domain.local ``` #### 調整 SMTP 發信設定 發信部分算Gitlab較麻煩的環節...可以參考[smtp.md](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md)這份文件,保哥給的範例如下 ```rb= gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.sendgrid.net" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "apikey" gitlab_rails['smtp_password'] = "SG.**********" gitlab_rails['smtp_domain'] = "smtp.sendgrid.net" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['gitlab_email_from'] = 'gitlab@example.com' gitlab_rails['gitlab_email_display_name'] = 'GitLab' gitlab_rails['gitlab_email_reply_to'] = 'gitlab@example.com' ``` #### 重啟設定 當修改gitlab.rb盪案後,請執行 ```bash= sudo gitlab-ctl reconfigure ``` Gitlab就會開始重新啟動設定 ## 三、第一次登入Web網頁設定(直接使用保哥的[文章](https://blog.miniasp.com/post/2023/04/24/Install-and-Configure-GitLab-on-Ubuntu-2204-LTS)) 你可以透過IP或url直接連到你的Gitlab Server Dashboard,root登入密碼在下述路徑 ``` /etc/gitlab/initial_root_password ``` 直接cat出來 ![](https://i.imgur.com/kk8D4hF.png) - 登入帳號:root - 登入密碼:p60/qkdKpbIpTIWua2F70OoQf/qzga5F4XbcD7LONWw= ### 更改密碼 ![](https://i.imgur.com/zd25Agp.png) ### 更新 Profile 與 Account 設定 ![](https://i.imgur.com/zzop87e.png) ### 註冊限制設置 ![](https://i.imgur.com/2t8sTt8.png) 公司內部使用建議停用註冊帳號功能 ![](https://i.imgur.com/kA0rTY1.png) 如果要開放註冊帳號功能,也建議可以加入 E-mail 域名檢查 ![](https://i.imgur.com/EGuQm34.png) ### 建立專案權限 如果不希望大家都可以建立專案,可以將 Default projects limit 設定為 0。 ![](https://i.imgur.com/oai9mQn.png) 設置完後按save changes ## 四、問題排解紀錄 ### url連不到gitlab web dashboard 設置過程有遇到url連接不到web dashboard,只能透過ip。因為當時自己是在自己本機測試VM,沒透過DNS伺服器。確定host設定與gitlab.rb設置也相同...去ping網域看起來也沒問題。但瀏覽器怎麼連就是503。最後透過curl看一下拿到的html code是什麼,看起來也沒問題.....最後發現是VPN沒關..將VPN關起來就OK了。