Git 私服第一品牌 - Gitea
5 | 23,171 |
昨天聊到在 Windows 架 Git 私服,留言區大家一面倒狂推 Gitea,力道之強,讓我覺得不試試看會終生遺憾。改變計劃,決定先把矮黑猩猩 (Bonobo Git Server) 放一旁,先來試試 Gitea。
我向來偏好輕巧簡單的解決方案,GitLab 功能強大但太笨重,相較之下,Gitea 更符合我的要求:
- 跨平台 - 使用 Go 語言開發,可在 Windows、macOS、Linux 執行
- 輕巧 - 在 Raspberry Pi 上都可以跑
- 安裝簡便 - 在 Windows 上可用 Chocolatey 安裝(參考),轉成 Windows 服務只需一行指令,或是直接用 Docker 跑更省事
- 文件豐富 - 官方文件十分完整,且有不少章節己中文化(但中文版跟英文版有些出入,後面會提到)
雖被定位成「輕量級」,Gitea 的功能卻多到超出我的預期,像是:
- 同時支援 SSH/HTTP/HTTPS 存取
- 支援 LDAP/SMTP 認證
- 有 Issue/Pull Request/Wiki
- 可選擇 MySQL、PostgreSQL、SQLite 或 MSSQL 作為資料庫
- 提供 Github、GitLab 匯入功能
評估下來,Gitea 確實是很出色的自架 Git 伺服器選項,那還等什麼,先裝一台起來玩。
既然是試水溫,我選擇最快速最不沾手的做法 - Docker。依據文件說明(註:我發現中文翻譯省略許多,若想看完整資訊建議看英文),準備一個 docker-compose.yml 如下:(ports 部分的 8088 與 222 是對外 HTTP 及 SSH 使用的 TCP 埠號,要依網路環境修改。valumes 的 ./gitea 是用來存放 Git 儲存庫、設定檔的路徑,若是 CentOS 記得要設 chcon -Rt svirt_sandbox_file_t ...設權限)
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.13.1
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "8088:3000"
- "222:22"
使用 docker-compose up -d 執行 Docker 容器,瀏覽器連上 8088 Port,Gitea 網站己經在運轉中了:
第一次啟動前需要初始化,點擊上方選單的【探索】會被帶到設定頁,選擇資料庫(若沒特殊需求,用預設的 SQLite 就夠了),設定網站標題,若 Docker 對映對外 HTTP Port 不是 3000 (本範例為 8088),要將【Gitea 基本 URL】由 http://localhost:3000/ 改成 http://對外IP:對外Port/,其他選項可以用預設值,設定好按下【安裝 Gitea】;
之後便會導向登入畫面,第一位註冊登入帳號的使用者會成為管理者。
Gitea 幾乎復刻了 Github 的操作介面,有用過 Github 就能上手:
客戶端的操作跟 Github/TFS 無異,遇到需要登入時也會彈出 Git Credential Manager 帳號密碼對話框,其他沒什麼特別之處:
簡單試用的感想 - 這根本是在家裡架出一台小 Github 呀! 完全能理解為什麼所有人都大推 Gitea,只裝完試用五分鐘,我也加入 Gitea 推坑團了。相較之下 Bonobo Git Server 的功能陽春許多,唯一的優勢是它用 ASP.NET MVC 開發,想改造的話我能較快上手,但衡量功能性及相關資源,Gitea 是較好的選擇,如真想客製改造,就學點 Golang 吧! (咬牙)
我計劃開始用 Gitea 來管一些小組或個人小專案,未來若有實戰心得再陸續分享。
Introduce to the best choice of private Git server - Gitea.
Comments
# by Jackson2764
Gitea 無法禁止大檔上傳,這會讓 repo 被灌爆... 如果有人惡搞 push 了 20G 的檔案上來怎麼辦?
# by Ramis
Gitea建議是for小組或小團體使用, 基本上不建議對外開放, 所以在人員控管上會比較嚴謹, 你說的問題我覺得不太容易遇到
# by TonyJ7777
Dear Jackson2762, see https://docs.gitea.com/next/administration/config-cheat-sheet#repository---upload-repositoryupload To set the config of FILE_MAX_SIZE, it may solve your problem.
# by Jackson2764
Tony 前輩謝謝。 ;[repository.upload] ;; Max size of each file in megabytes. Defaults to 50MB ;FILE_MAX_SIZE = 50 ;; Max number of files per upload. Defaults to 5 ;MAX_FILES = 5 這邊的參數,指的是經由瀏覽器(HTTPS)方式上傳,只允許一次上傳5個檔案、單檔50MB。 但是經由指令 git push 推送,檔案大小及數目是未被限制的!
# by AllenRMP
gitea 若發生pull request衝突 該如何處理呢 網頁介面上似乎沒有像github有解決衝突的按鈕可選