想要自架 Git server,主流的選擇大概不脫 Gitea 和 GitLab,雖然本人一直以來都是 GitLab 的愛用者,但若是自架,就要多考慮兩下了,首先 GitLab 本身就是個大玩具,不論是架設還是維護都相對複雜一點,特別是維護,它離射後不理應該有段距離,而 Gitea 的優點自然就是精緻小巧卻又功能齊全啦,扣掉配置文件,就只有一個扎扎實實的執行檔,資料庫支援 SQLite,也是精緻小巧又功能齊全,這樣的組合正滿足本人射後不理的需求啦。

Gitea 的網頁也很明白的呈現自己的特點:

Gitea

Gitea 唯一缺的是沒有內建 CI,不過這不打緊,市面上也有一大堆的 CI 可與之串接,最多人用來和 Gitea 搭配的 CI 應該就是 Drone CI 了,總之雖然 Gitea 沒有 CI,但不會是個問題。

認識 Gitea 之後,讀者應該也可以拿捏拿捏 Gitea 適不適合自己了,接著往下看安裝與配置的部分。

Gitea 安裝與配置

安裝

最簡單的安裝不是 Docker,而是 Snap,只要一行:

$ sudo snap install gitea

裝完之後它自己會跑起來,進入 http://127.0.0.1:3000/ 進行初始化作業,初始化頁面也很簡單,在此不多提。

初始化頁面跑完應該就可以登入了,登入後長的和以前的 GitHub 有八成像,有用過 GitHub / GitLab 的朋友應該都可以無痛上手。

配置

Gitea 的配置文件在 /var/snap/gitea/common/conf/app.ini,裡面項目頗多,一般來說不需要動。

但是但是 SSH 的部分可能需要改一下。

因為 Linux 原本就有開 SSH 服務,所以埠 22 已經被占用,本著一埠做一事的原則,把 Gitea SSH 埠改到 23。

把那 app.ini 開起來,確保 [server] 區段內有以下幾行:

[server]

DISABLE_SSH      = false
START_SSH_SERVER = true
SSH_PORT         = 23

這幾行應該都能望文生義。

改完後重啟服務,Gitea 的服務名稱為 snap.gitea.web.service:

$ sudo systemctl restart snap.gitea.web.service

看一下狀態:

$ sudo systemctl status snap.gitea.web.service

狀態為綠字就沒問題,再用 Git SSH 試試 pull / push,沒問題就沒問題。

跑到這邊差不多十分鐘,收工前來聊聊為什麼要自架 Git server。

為何自架 Git Server?

前面都是自架 Gitea 的 what & how,這邊談談 why,GitLab / GitHub 這麼香,又有免費的 CI 額度,為什麼還要自架 Git server(和 Drone CI)?

不是因為免費的 CI 不夠用,想要無限 CI runner 大可只架 CI 再串接 gitlab.com 就好。

自架 Git server 背後令人暖心的原因是組織的資安政策,他們認為把 Git server、xxx server 關在內網,就會很安全

這種資訊鎖國政策有沒有用,看看新冠疫情就知道了,總之、反正,就是這樣。