POST

用飞牛做 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 服务器的价值是私有、可控、备份顺手。

装起来十分钟,用起来和公网平台差别不大,除了外网访问要自己搭通道。

👁 - 次浏览

留言

← 返回首页