如何安全地安裝 Gitlab(教程)

你已經決定要開始使用 GitLab 來進行項目管理,但不確定如何安全地安裝 GitLab 嗎?安裝 GitLab 不僅是一個複雜的過程,而且如果操作不當,您的數據可能會受到風險。但請不要擔心,您來到了正確的地方!

在本教程中,您將學習安全安裝 GitLab 的整個過程,以便設置 SSL 加密並為 GitLab 配置最佳性能。

聽起來很有趣嗎?馬上開始吧!

先備條件

本教程將進行實踐演示。如果您想跟著做,請確保您擁有以下內容:

  • A Linux server with root access – This demo uses Ubuntu 20.04 LTS, but any Linux distribution will work.

安裝 GitLab 社區版

現在您已經擁有 FQDN 和準備好的服務器,是時候安裝 GitLab 了。安裝 GitLab 有幾種方式,例如使用 Omnibus 包或從源代碼編譯。但本教程專注於使用 GitLab 開發者的 GitLab 存儲庫安裝 GitLab。

GitLab 有 兩個版本

  • GitLab 社區版 (CE) – 適用於偏好開源、社區支援版本的使用者。
  • GitLab 企業版 (EE) – 適用於需要 GitLab 企業版提供的額外功能的使用者。

但此示範將使用社區版在您的開發環境中測試應用程式。

1. 開啟終端機,執行下方的指令 apt update,以確保系統可以取得所有最新的軟體更新。

指令 apt update 會更新 apt 工具使用的套件索引檔案,以取得可用套件的資訊。

sudo apt update -y
Updating your package index

2. 接著,執行下方的指令 apt install,下載 (curl) 並安裝以下 GitLab 安裝所需的相依套件:

  • openssh-server 套件 – 包含 OpenSSH 伺服器守護程式及相關工具,例如主機金鑰管理工具和伺服器,以提供遠端登入存取給使用者。
  • ca-certificates 套件 – 包含 CA 憑證列表。此套件提供必要的檔案,以在您的伺服器上啟用 HTTPS 支援。
sudo apt install curl openssh-server ca-certificates -y
Installing the required dependencies

3. 執行以下 curl 指令,從 GitLab 下載安裝腳本(curl)(https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce)。該指令將安裝腳本保存為 shell 腳本(script.deb.sh),並以超級使用者(sudo bash)身份執行。

sudo curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

一旦 curl 指令完成,您將獲得以下輸出。

Adding the GitLab repository to your system

4. 執行以下 apt-cache 指令,以驗證您已成功添加 GitLab 存儲庫。

apt-cache policy docker-ce
Verifying if GitLab Repository Exists

5. 現在,重新執行 apt update 指令,以更新可用套件列表。此指令確保在安裝 GitLab 時系統將使用新添加的 GitLab 存儲庫。

sudo apt update -y

6. 最後,執行以下 apt install 指令,以在您的系統上安裝 GitLab(gitlab-ce)。

sudo apt install gitlab-ce -y
Installing GitLab

安裝將需要一些時間,但當安裝完成時,您將看到以下輸出。此輸出確認您已成功在系統上安裝了 GitLab。

Getting the Welcome Page after Installing GitLab

配置您的 GitLab 安裝

你的系统上现在已经安装了GitLab,但在使用GitLab之前,你需要进行一些配置更改。GitLab的配置文件(/etc/gitlab/gitlab.rb)包含了GitLab的全局设置,这些设置不特定于GitLab服务器的环境。

你将修改GitLab的配置文件,以设置你的FQDN域名和与你的域的安全连接。

1. 使用你喜欢的文本编辑器打开/etc/gitlab/gitlab.rb配置文件。

GitLab配置文件中最重要的条目之一是external url指令,如下所示。该指令允许用户通过Web浏览器访问GitLab。

external url指令的值从http://gitlab.example.com更改为https://gitlab.yourdomain.com,其中yourdomain.com是你的FQDN域名。

Setting FQDN domain name in the external URL directive

2. 接下来,转到底部的Let’s Encrypt integration部分,并配置以下指令:

  • 通过删除前面的#取消注释letsencrypt['enable']指令,并将值从nil更改为true。此指令告诉GitLab自动在服务器上配置HTTPS。
  • 通过删除前面的#取消注释letsencrypt['contact_emails']指令,并将你的电子邮件地址作为值。Let’s Encrypt将使用此电子邮件地址在需要更新SSL证书时与你联系(每90天一次)。
  • 保存更改並退出編輯器。
Configuring Let’s Encrypt Integration

3. 最後,執行以下命令來重新配置並將更改應用到GitLab的/etc/gitlab/gitlab.rb配置文件中。

sudo gitlab-ctl reconfigure
Reconfiguring GitLab

為SSL連接配置防火牆

現在您已經配置了GitLab,您需要配置防火牆規則以允許SSL和安全連接到您的服務器。 Uncomplicated Firewall(UFW)是Ubuntu中管理防火牆規則的默認程序。

如果將您的服務器放在防火牆後,則需要打開HTTP端口80和HTTPS端口443以進行SSL連接。

運行以下命令以為GitLab服務器打開OpenSSHHTTPHTTPS端口。

sudo ufw allow OpenSSH && sudo ufw allow http && sudo ufw allow http
Adding new firewall rule

現在,運行以下命令檢查防火牆的狀態。

sudo ufw status 
Checking the status of your firewall

通過Web界面保護GitLab

您的防火牆已啟用,但這是否意味著您的GitLab是安全的?增加安全層從來不嫌多。因此,您將通過Web界面進一步保護您的GitLab安裝。

1. 打開您喜歡的Web瀏覽器,並導航到您的GitLab服務器。例如,http://gitlab.example.com,其中example.com是您的FQDN域名。

當訪問GitLab服務器時,請選擇Chrome或Firefox以獲得更好的安全性。這些網頁瀏覽器使用自己的HTTP/HTTPS協議,有助於執行安全策略。

下面是GitLab的登錄頁面。

Accessing the GitLab Log in screen

2. 接下來,點擊地址欄旁邊的鎖形圖標(左上角),您將看到您的連接狀態。此演示顯示連接已安全,這表示您與服務器的連接是通過HTTPS進行的。

Checking your connection status

返回到您的終端,運行下面的cat命令以獲取您的initial_root_password

默認情況下,GitLab安裝時會生成一個自動生成的初始根密碼。

 cat /etc/gitlab/initial_root_password

複製並保存您的初始根密碼在一個安全的地方。您將使用此密碼登錄GitLab(第四步)。

Getting your initial root password

4. 返回到您的網頁瀏覽器,輸入root作為用戶名,然後輸入您的初始根密碼作為密碼。點擊登錄以登錄到您的GitLab服務器。

Logging in to your GitLab server

登錄到您的GitLab服務器後,瀏覽器將重定向到GitLab儀表板,如下所示。

Viewing GitLab Dashboard

將SSH密鑰添加到您的GitLab帳戶

除了Web界面,您還可以通過命令行環境以安全的方式訪問GitLab。如何實現?首先,您需要將一個SSH密鑰添加到您的帳戶中,這樣您就可以通過在終端上運行命令來訪問GitLab,而無需輸入密碼。

1. 運行 ssh-keygen 命令生成適用於SSH連接的SSH密鑰對。在提示時,按Enter鍵保留SSH密鑰的默認保存位置(/root/.ssh/id_rsa),並且不要添加密碼。

ssh-keygen
Generating an SSH keypair

2. 運行下面的 cat 命令將您的公鑰打印到屏幕上,如下所示。複製整個ssh-rsa公鑰字符串並安全地保存在某個地方。您稍後將在GitLab中添加此公鑰(第三步)。

 cat ~/.ssh/id_rsa.pub
Viewing the entire ssh-rsa public key string

3. 返回到您瀏覽器上的GitLab儀表板,通過以下方式添加您的公鑰:

  • 點擊左側 SSH Keys 選單以訪問 User Settings 頁面的 SSH Keys 頁面。
  • 將您複製的公鑰(第二步)粘貼到 Key 欄位中,如下所示
  • Title 欄位中提供您喜歡的鍵名稱。但是,為了這個演示,名稱設置為 ATAGitHub。
  • 點擊 Add Key 以確定將公鑰添加到您的帳戶。
Adding SSH Keys

禁用公共註冊

為了額外的安全性,您可以在GitLab上禁用公共註冊。為什麼?GitLab中的公共註冊功能允許任何人在GitLab服務器上創建帳戶。禁用此功能可避免您的服務器受到暴力攻擊。

1. 從 GitLab 儀表板,點擊 選單 —> 管理員 以進入管理員面板,然後點擊 設定 以進入管理員面板的 一般 設定頁面(第二步)。

Viewing the GitLab Admin panel

2. 在 註冊限制 區域下停用 啟用註冊 選項。這樣做將停用 GitLab 的公共註冊功能。

Disabling GitLab Public Sign-ups

3. 捲動至底部並點擊 儲存變更 以儲存您對註冊限制設定所做的更改。

Saving your changes

4. 最後,登出您的帳戶並前往您的 GitLab 登入畫面。

如下所示,現在註冊 鏈接已消失。

Verifying if the Register now link is gone

測試您的 GitLab 伺服器

此時,您已經配置並保護了您的 GitLab 伺服器,這很棒!但是,您如何知道您的 GitLab 伺服器實際上是在運作?您將通過在 GitLab 儀表板上創建一個 GitLab 專案並將該專案克隆到您的伺服器來測試您的伺服器。

1. 在 GitLab 儀表板上,點擊搜索框旁邊的加號(+)圖標,然後點擊 新專案,如下所示,以創建一個新的 GitLab 專案。

Adding New GitLab Project

2. 接下來,提供您首選的 專案 名稱,但是對於此演示,專案名稱設置為 ATA GitLab,而 專案縮略 設置為(atagitlab)。

點擊 創建 專案 以創建您的新專案。

Creating a new project

3. 返回到您的終端機並執行以下命令以設置您的全局用戶名(--global user.name)和電子郵件(--global user.email)用於 Git。每個用戶名和電子郵件在 GitLab 服務器上的所有帳戶中都是全局唯一的。

git config --global user.name "ATA"
git config --global user.email "[email protected]"

4. 現在,執行下面的 git clone 命令來克隆您創建的 ATA GitLab 項目(第二步)到當前目錄。將 yourdomain.com 替換為您的 FQDN。

git clone http://gitlab.yourdomain.com/root/ATA-GitLab.git

如果一切順利,您將看到類似於下面的輸出。克隆完成後,您將擁有一個名為 ATA-GitLab 的新目錄。

Cloning the ATA GitLab project

5. 最後,運行 ls 命令驗證 ATA-GitLab 目錄是否存在。

ls

由於您可以克隆新的 ATA GitLab 項目並且 ATA GitLab 目錄存在,下面的輸出確認您的 GitLab 服務器正常運作。

Listing new directory ATA-GitLab

結論

在本教程中,您學會了如何在 Ubuntu Linux 系統上執行安全的 GitLab 安裝。您確保通過 Web 界面保護了您的 GitLab 服務器,將 SSH 金鑰添加到您的 GitLab 帳戶中,並測試了您的 GitLab 服務器是否正常工作。

有了這些新的知識,也許您想學習如何 使用 GitLab 設置自動化的持續集成(CI)系統

Source:
https://adamtheautomator.com/install-gitlab/