进阶技巧

飞牛NAS自建Git服务器:Gitea部署教程

在开发者的日常工作中,代码版本管理是刚需。虽然 GitHub、Gitee 等公有云服务很方便,但出于代码隐私、访问速度或团队内部协作的考量,自建一套 Git 服务器往往更稳妥。飞牛NAS(fnOS)作为一款强大的私有云设备,不仅适合存储影音,其 Docker 支持能力也让它成为搭建开发环境的绝佳平台。今天,我们就来一步步完成在飞牛NAS上部署 Gitea 的完整流程,让你拥有一个轻量、快速且功能完备的私有 Git 服务。

为什么选择 Gitea 而非 GitLab?

在开始操作之前,先明确选型理由。GitLab 功能全面但极其吃内存,NAS 上跑起来会拖垮其他服务。Gitea 则是一个用 Go 语言编写的极简 Git 服务,二进制文件仅几十 MB,运行内存占用通常低于 300MB,对飞牛NAS 这种低功耗设备非常友好。它提供了 Issue 跟踪、Pull Request、Web 编辑器、Actions(CI/CD)等核心功能,足以覆盖中小团队和个人的全部需求。

准备工作:确认环境与数据目录

首先,确保你的飞牛NAS 系统版本在 0.8.20 以上,并且已经安装了 Docker 应用(在应用中心直接搜索安装即可)。我们将采用 Docker Compose 方式部署,便于后期管理。

建议为 Gitea 创建独立的数据目录。打开飞牛NAS 的文件管理,在 Docker 卷(例如 /vol1/1000/docker)下新建文件夹,命名为 gitea。在该文件夹下再创建两个子目录:data(用于存放 Gitea 的数据库和仓库文件)和 config(用于存放配置文件)。这样做的好处是备份和迁移时只需打包这一个文件夹。

第一步:编写 docker-compose.yml

打开飞牛NAS 的 SSH 终端(或使用文件编辑器直接创建文件),进入 gitea 目录。我们使用 SQLite 作为数据库,以最大限度降低资源占用。在终端中执行:

cd /vol1/1000/docker/gitea
nano docker-compose.yml

将以下内容粘贴进去:

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=sqlite3
      - GITEA__server__DOMAIN=yourdomain.com
      - GITEA__server__SSH_DOMAIN=yourdomain.com
      - GITEA__server__HTTP_PORT=3000
      - GITEA__server__ROOT_URL=http://yourdomain.com:3000/
    volumes:
      - ./data:/data
      - ./config:/etc/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:22"
    restart: unless-stopped

注意,上面的 yourdomain.com 请替换为你自己的域名或 NAS 的 IP 地址。如果你没有域名,直接写 NAS 的内网 IP 即可,例如 192.168.1.100。SSH 端口映射为 2222 是为了避免与 NAS 自身的 22 端口冲突。

第二步:启动容器并完成初始配置

保存文件后,在终端执行:

docker compose up -d

等待镜像拉取并启动。首次启动后,打开浏览器访问 http://你的IP:3000,你会看到 Gitea 的安装引导页面。这里需要填写几个关键项:

在“一般设置”中,站点名称随意填写,例如“我的代码仓库”。在“数据库设置”中,因为我们已经通过环境变量指定了 SQLite,直接保持默认即可。重点在“服务器和第三方服务设置”:

  • SSH 服务器端口:填写 2222(与 docker-compose 中映射的端口一致)。
  • Gitea 基础 URL:填写 http://你的IP:3000/,注意末尾的斜杠。
  • 管理员账号设置:勾选“立即创建管理员账号”,填写用户名、密码和邮箱,这样就不用再通过命令行创建了。

点击“安装 Gitea”,等待几秒钟,系统会自动初始化数据库并跳转到登录页面。

第三步:通过反向代理绑定域名(可选)

如果你希望使用 80 端口或 HTTPS 访问,而不带端口号,可以在飞牛NAS 的“控制面板 -> 反向代理”中新建规则。源协议选择 HTTP,源端口填写 80(或 443),目标地址填写 127.0.0.1,目标端口填写 3000。之后你就可以通过 http://yourdomain.com 直接访问,无需再加端口。此时记得修改 docker-compose.yml 中的 ROOT_URL 为不带端口的地址,然后执行 docker compose restart 让配置生效。

第四步:配置 SSH 访问与仓库创建

Gitea 安装完成后,我们需要确保 Git 客户端能通过 SSH 推送代码。在 Gitea 网页右上角点击头像,进入“设置 -> SSH 密钥”,将你本机生成的公钥(~/.ssh/id_rsa.pub)粘贴进去。注意,因为我们的 SSH 端口是 2222,本地克隆仓库时需要指定端口,命令格式如下:

git clone ssh://git@你的IP:2222/用户名/仓库名.git

如果你不想记端口,可以在本机的 ~/.ssh/config 文件中添加以下配置:

Host gitea
    HostName 你的IP
    Port 2222
    User git

之后就能直接用 git clone gitea:用户名/仓库名.git 了,非常方便。

第五步:日常维护与备份策略

Gitea 的数据全部存储在 /vol1/1000/docker/gitea/data 目录下。备份时,只需停止容器,然后复制整个 data 目录即可。建议在飞牛NAS 的“定时任务”中设置每周自动执行以下脚本:

docker stop gitea
tar -czf /vol1/1000/backup/gitea_$(date +%Y%m%d).tar.gz -C /vol1/1000/docker/gitea data
docker start gitea

恢复时,将备份解压回原目录,再启动容器即可。由于使用的是 SQLite,恢复过程非常简单,几乎不会遇到兼容性问题。

进阶优化:开启 Actions 与 Web 编辑器

如果你希望 Gitea 能自动构建代码,可以在“站点管理 -> 应用设置”中启用 Actions 功能。Gitea 支持 GitHub Actions 语法,你可以将现有的 CI 流程直接迁移过来。此外,在“设置 -> 偏好”中开启“启用文件编辑”,这样就能在网页端直接修改代码,适合快速修复小 bug。

总结

通过以上五步,你已经成功在飞牛NAS 上拥有了一套属于自己的 Git 服务器。整个过程不依赖外部网络,数据完全掌握在自己手中,而且资源占用极低,不会影响 NAS 的影音服务。Gitea 的轻量特性与飞牛NAS 的 Docker 生态完美契合,无论是个人学习还是小团队协作,这套方案都足够专业且稳定。现在,你可以放心地把重要代码托管在私有仓库中,享受随时随地的版本控制自由。

💬 评论区
发表评论

暂无评论,来说两句吧