樹莓派Gitea搭建私有git服務器


背景

買了內網穿透用來ssh和blog,一直也沒發掘正式用途,
考慮到還有閑置隧道,打算搭建個人git服務器托管代碼。

需求

  • 支持web前端
  • 支持私有倉庫
  • 支持SSH免密
  • 支持GitHub遷移
  • 支持多種數據庫
  • 支持備份恢復
  • 盡可能輕量化

至於CD/CI什么的,不拿來生產,可有可無。

對比

滿足上述需求的解決方案有:

  • GitLab CE

滿足開發人員所有幻想,比較吃性能
通常單獨部署,低於4G內存就別想了
公司用比較合適,自己用着實浪費
pass

  • Gitbucket

基於JVM虛擬機,支持大文件(LFS)
性能要求適中,web前端太丑
pass

  • Gogs / Gitea

這倆是folk的關系,放在一起講
均使用go實現,輕量化設計
部署、資源開銷、文檔支持大同小異
均有全平台二進制文件發布(支持樹莓派部署)

選擇

經過對比
部署Gogs內存開銷會略低於Gitea
對應缺少GPG、LFS等功能不痛不癢
但個人比較認同Gitea的文化

As Kahlil Gibran wrote about children:
Your children are not your children. They are the sons and daughters of Life’s longing for itself. They come through you but not from you, and though they are with you yet they belong not to you.

太裝逼了,其實是因為:Gitea有深色模式
正好手上有個Raspberry Pi Zero W閑置
armv6單核,512M內存,8G硬盤(SD卡)
試試看極限低配環境能否帶起Gitea

部署

根據測試以下方法對gogs也完全適用
主要區別在於工作目錄以及服務配置

環境信息

Raspberry Pi OS (previously called Raspbian) based on Debian Buster
Gitea 1.12.1 for Linux arm-6

創建用戶

直接使用root用戶存在較大風險
通常git服務器使用單獨的管理賬戶
這里創建一個名為git的用戶並禁用登錄

sudo adduser --disabled-login --gecos 'Gitea' git
sudo su git
cd ~
mkdir gitea

下載安裝

Gitea官網有很詳細的文檔和編譯好的發行版
https://dl.gitea.io/gitea/

下載對應linux-armv6最新版本1.12.1的二進制文件
更名為gitea並添加執行權限,其中-p參數為端口號(默認3000)

cd ~/gitea
https://dl.gitea.io/gitea/1.12.1/gitea-1.12.1-linux-arm-6
mv gitea-1.12.1-linux-arm-6 gitea
chmod +x gitea
./gitea web -p 3000

注意:非root用戶無法使用1024以下的低端口號,如80,解決方法后面講。

此時登錄樹莓派ip:3000即可訪問web頁面進行安裝

數據庫選擇SQLite3就行,輕量化設計無需配置
賬號權限和域名可按需修改,完成后^C結束進程

配置服務

想要Gitea開機自啟動有很多方法
這里用官方推薦的配置服務法實現
創建名為gitea的服務

sudo vi /etc/systemd/system/gitea.service

寫入以下內容

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target

[Service]
# Modify these two values ​​and uncomment them if you have
# repos with lots of files and get to HTTP error 500 because of that
###
# LimitMEMLOCK=infinity
# LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gitea
ExecStart=/home/git/gitea/gitea web -p 3000
Restart=always
Environment=USER=git
HOME=/home/git

[Install]
WantedBy=multi-user.target

按Esc ZZ保存后激活服務

sudo systemctl daemon-reload     # 載入服務
sudo systemctl start gitea              # 啟動服務
sudo systemctl enable                    # 開機啟動

端口映射

前文提到非root用戶無法使用80端口
Linux的1024以下端口是只有root用戶才有權限占用
如果想用git用戶把Gitea部署在80端口上
比較穩妥的做法是端口轉發,使80指向3000

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

內網直接訪問服務器ip顯示正常跳轉
外網訪問將域名的80端口映射到內網服務器的3000即可

性能開銷

硬件Raspberry Pi Zero W
實測Gitea靜默狀態下
總內存開銷為156M/433M
Load average: 0.61 0.51 0.45
全部10個線程內存占用32.4%
web前端響應時間
頁面: 158ms 模板: 40ms

參考

https://docs.gitea.io/zh-cn/linux-service/
https://www.jianshu.com/p/4d2a97eb2df8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM