使用 Gitea 架設自己的 GitHub 服務

在昨天下午 GitHub 突然無預警的連不上,後來上 ptt.cc 果然就有人發文詢問了,看起來好像是中華電信的問題啊,每次只要 GitHub 連不上,好像順間什麼都不會了一樣啊哈哈,是不是可以收書包下班走人啦!:grimacing:

在認識的幾個朋友中,他們公司內部蠻多都自架 GitLab 來存放程式碼,其實架設 GitLab 來放程式碼沒有什麼不好,但維護和管理機器本來就是一件不容易的事情,如果公司沒有 DevOps 的話,其實放在 GitHub 是一個不錯的選擇,只要付一些費用,就不需要擔心機器的管理和維護其實還蠻不錯!

這幾天剛好在整理一些舊的 side project,有些其實沒有上 GitHub,但是又想要可以方便的使用 GitHub 的一些服務,像是程式碼修改後的比較等等之類的,希望可以在本機端可以直接方便瀏覽,於是找了一些相關的資訊,最後選擇 Gitea 來使用。

Gitea

Gitea

Gitea 是一個由 Go 語言撰寫而成,它是從 Gogs 這個專案 fork 出來的,可以看到在 Gitea 的 Logo 下的標語:

A painless self-hosted Git service.

翻成中文也就是「無痛架設自己的 Git 服務」,可以知道 Gitea 是希望可以讓架設 Git 服務是非常簡單容易的,接下來文章就來記錄如何安裝 Gitea。

安裝 Gitea

Gitea 提供了六種安裝方式,非常的多樣,你可以透過 binary、docker、等等方式來安裝,請選擇你自己喜歡的一個方式來安裝 Gitea,本文使用 Docker 來安裝 Gitea

首先,請根據你的作業系統來安裝 Docker,安裝完成後執行 Docker,並輸入以下的指令來拉取 Gitea Docker 映像檔(Pull Docker Image):

$ docker pull gitea/gitea:latest

接著,請建立一個目錄,這是用來儲存你 Git Repository 的資料的:

$ mkdir -p ~/gitea-demo

啟動 Gitea

透過 docker 將 Gitea 服務給執行起來:

$ docker run -d --name=gitea-demo -p 10022:22 -p 10080:3000 -v ~/gitea-demo:/data gitea/gitea:latest

透過 docker ps 查看執行的 container:

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eac8128a07f5 gitea/gitea:latest "/usr/bin/entrypoint…" 4 minutes ago Up 4 minutes 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->3000/tcp gitea-demo

接著在你的瀏覽器輸入 localhost:10080 來初始化 Gitea 的一些設定,可以看到如下圖的畫面:

Gitea inital setup

這邊可以選擇你的資料庫類型,支援 MySQL、PostgreSQL、MSSQL、SQLite3,我選擇 SQLite3 做使用,其他的設定基本上如果沒有特別的需求可以維持原來的預設值,但是請注意到連接埠的埠號(Port)設定,SSH 預設 Port 為 22 沒有什麼太大問題,但是 HTTP 的 Port 如果設定 3000,當你按下「立即安裝」後,會發現網頁錯誤,因為我們在執行 docker container 時,將我們本機端的 Port 10080 與內部 Container Port 3000 做了 Mapping,所以這邊連接埠應該需要改成:

Edit Gitea Port

設定完成後,按下「立即安裝」就設定將會導到登入畫面:

Gitea Login

這樣你的 Git 服務就架設完畢囉!:tada:

Demo

Diff Compare

Reference