用飞牛做 Git 服务器:自己的代码放自己家里
不想把私有仓库放第三方,NAS 装个 Git 服务就够用。轻量、可控,备份也简单。
个人项目、小团队代码,放在 GitHub 私有仓库要付费,放公网又不放心。NAS 上跑一个 Git 服务,几百兆内存就能解决。
三种方案
Gitea:最推荐。界面差不多是轻量版 GitHub,Issues、PR、Actions 都有,资源占用低。
GitLab CE:功能全,但也重,4G 内存起步,家庭 NAS 有点勉强。
纯 SSH + git 裸仓库:最轻,没有网页界面,只能命令行操作。
大多数家庭场景,Gitea 是甜点。
Gitea 部署
Docker Compose 一份就够:
services:
gitea:
image: gitea/gitea:latest
ports:
- "3000:3000"
- "2222:22"
volumes:
- /mnt/存储空间/应用数据/gitea:/data
restart: unless-stopped
两个端口分别是:3000 网页,2222 SSH(避开宿主机的 22)。
起来之后打开 http://NAS的IP:3000,初始化,选 SQLite,管理员账号设好。
克隆和推送
网页上建仓库,然后:
git clone ssh://git@NAS的IP:2222/用户名/仓库名.git
注意端口写在 URL 里,不然会默认连 22。
用 HTTPS 也行,但 SSH 更省事,配好公钥就不用每次输密码。
数据在哪、怎么备份
Gitea 的所有东西都在 /data 目录:
- 仓库本体:
/data/git/repositories; - 数据库:SQLite 文件;
- 附件和 LFS 对象。
备份就是备份这个目录。停容器,复制,走 rsync 一起备份。
关键:备份的时候最好停一下容器,或者用 Gitea 自带的 dump 命令:
gitea dump -c /data/gitea/conf/app.ini
安全上的注意
- 别把 3000 端口直接开到公网,需要远程就上 VPN 或隧道;
- 开双重验证;
- 仓库权限按团队分配,别一律给管理员;
- 定期看看有没有异常的 SSH 公钥。
容量规划
代码仓库通常不大,但要注意:
- 图片、二进制文件放 Git 里会让仓库膨胀;
- 大文件用 LFS,但 LFS 对象也占空间;
- 定期跑
git gc清理,或者用 Gitea 的仓库清理功能。
值不值得
- 只有一两个小项目:直接用本地 Git + 备份就够了;
- 需要多设备同步、Issues 管理:Gitea 合适;
- 团队协作、CI:可以考虑,但 CI 在 NAS 上跑会吃 CPU。
小结
NAS 做 Git 服务器的价值是私有、可控、备份顺手。
装起来十分钟,用起来和公网平台差别不大,除了外网访问要自己搭通道。
留言