要自行架設gitserver,除了使用gogs外,另外一套gitea也是很有名且很多人推薦的gitserver。
要安裝gitea比較建議是要參考它的英文網頁,說明的比較清楚。如果要快速先參考的話,是可以先看中文的,不過中文並沒有全部翻譯過來,所以只能知道一部份而已。
在這裏,我使用的是docker方式的安裝及設定,因為這樣比較方便,而且錯了也可以再重來。
事前準備
要啟重一組新的docker服務前,我會先考量一下它是否需要有新的帳號來執行服務,以及它要用來儲存資料的地方,也就是volume。
因為我希望gitea的docker使用一位新的gitea使用者,所以我就先新增一位host主機中的使用者,名稱也叫gitea:
useradd gitea
usermod -s /bin/bash gitea
passwd
新增完新的使用者後,也要查詢一下這位新的使用者的UID及GID,因為後續在啟動gitea docker時需要指定UID及GID以便對volume有存取的權限。
接著就是要安排給gitea docker使用的資料儲存位置,可看你的方式或習慣來新增一個目錄,並將這個目錄授權給gitea這位使用者:
cd /mnt/extHD
mkdir giteadata
chown gitea:gitea giteadata
接著就是將gitea的docker image先取回來:
sudo docker pull gitea:gitea
啟動gitea docker
要啟動gitea docker image基本上也可以用sudo docker run的方式,但gitea的網站是提供使用docker-compose的方式,所以這裏我也採用docker-compose的方式。
先編寫一份docker-compose.yml檔案:
version: "3.3"
networks:
mynet:
external: true
# name: bridge
services:
server:
image: gitea/gitea:1.15.6
container_name: gitea
environment:
- USER_UID=1003
- USER_GID=1003
restart: always
# networks:
# - mynet
network_mode: bridge
volumes:
- /mnt/extHD/giteadata:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3100:3000"
- "3122:22"
這裏要特別留意的是,在使用的網路上我是希望我的gitea docker image是使用原本docker就有的bridge這個服務,因為我已經有執行一組nginx服務,並希望讓nginx作為代理伺服器的方式來轉址到gitea的網站上。
在這裏我試過許多方式,最後才知道在docker-compose檔案中不用去設定networks的相關指令,只要加上network_mode: bridge就可以了。
寫好docker-compose檔後就可以執行它:
docker-compose up -d
設定

在設定頁面中要留意的:
- 以使用者名稱執行:請保留git,雖然我們有新增一位gitea,但在gitea docker image中只有git這位user。不過因為我們在docker-compose檔案中有指定UID及GID,所以git的權限就等同於我們外面host主機上的gitea這位使用者。
- Gitea基本URL:可以先保留不改,等到後來你在nginx中建好代理網站後,再調整config/app.ini就好
基本設定使用預設值就可以了,接著就可以安裝gitea。安裝完成就可以登入網站。