进阶技巧

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

2026-07-30 5 admin

为什么要在飞牛NAS上部署Gitea

作为NAS用户,你一定体验过文件存储、媒体管理和下载带来的便利。但你是否想过,你的NAS还能化身一个高效的代码托管平台?Gitea是一个轻量级、自托管的Git服务,功能类似GitHub或GitLab,但资源消耗极低,非常适合在飞牛NAS这类家庭服务器上运行。

在NAS上部署Gitea有几个明显优势:代码数据完全掌握在自己手中,不受第三方平台限制;NAS的大容量硬盘可以存储海量仓库;当你需要团队协作或管理个人项目时,内网访问速度快,还能通过飞牛NAS的DDNS或公网IP实现外网访问。

本文将带你在飞牛NAS上通过Docker Compose部署Gitea,并集成MariaDB数据库,确保数据持久化与稳定运行。

前期准备

在动手操作前,请确认你的飞牛NAS已满足以下条件:

飞牛NAS系统已更新到最新版本,建议内核版本不低于6.x。Docker和Docker Compose插件已安装(飞牛应用中心可直接安装)。建议准备一个独立的存储空间,比如在存储池中新建一个名为“gitea”的共享文件夹,用于存放Gitea配置文件和仓库数据。

如果你已经安装了Portainer或熟悉命令行操作,可以直接使用SSH连接NAS。飞牛NAS默认开启SSH,你可以在控制面板中查看或修改端口号。

第一步:创建目录结构

打开你的SSH客户端,连接到飞牛NAS。首先创建Gitea专用的数据目录。假设你的存储池挂载在/vol1下,执行以下命令:

sudo mkdir -p /vol1/1000/Docker/gitea/data
sudo mkdir -p /vol1/1000/Docker/gitea/mysql

这里1000是你的用户UID,实际路径请根据你的飞牛NAS存储结构调整。如果你在文件管理器中创建了共享文件夹,可以直接使用该路径。这样做的好处是,所有Gitea相关文件都集中管理,备份和迁移都非常方便。

第二步:编写docker-compose.yml

进入Gitea目录并创建编排文件:

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

将以下内容粘贴到文件中:

version: '3'

services:
  db:
    image: mariadb:10
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea_root_pwd
      - MYSQL_DATABASE=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea_user_pwd
    volumes:
      - ./mysql:/var/lib/mysql
    networks:
      - gitea_net

  server:
    image: gitea/gitea:latest
    restart: always
    depends_on:
      - db
    ports:
      - "3000:3000"
      - "2222:22"
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - DB_TYPE=mysql
      - DB_HOST=db:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=gitea_user_pwd
      - ROOT_URL=http://192.168.1.100:3000
      - SSH_DOMAIN=192.168.1.100
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:22"
    networks:
      - gitea_net

networks:
  gitea_net:
    driver: bridge

请务必修改以下几项:

将MYSQL_ROOT_PASSWORD和MYSQL_PASSWORD替换为强密码,不要使用示例密码。ROOT_URL和SSH_DOMAIN改为你飞牛NAS的实际IP地址。如果你计划通过域名访问,这里填写你的域名。USER_UID和USER_GID需要与你的NAS用户ID一致,通常飞牛NAS的第一个用户UID为1000,可以通过id命令查看。

第三步:启动服务

保存文件后,在docker-compose.yml所在目录执行启动命令:

sudo docker-compose up -d

系统会自动拉取MariaDB和Gitea的最新镜像,并创建容器。首次启动可能需要几分钟时间,取决于你的网络速度。你可以通过以下命令查看容器运行状态:

sudo docker-compose ps

如果看到两个容器状态都是“Up”,说明启动成功。如果某个容器异常退出,用sudo docker-compose logs查看日志排查错误。

第四步:初始化配置

打开浏览器,输入http://你的NAS IP:3000,你会看到Gitea的安装页面。这里需要填写一些关键配置:

数据库设置部分,数据库类型选择MySQL,主机填写db:3306(这是docker-compose中数据库服务的名称和端口),数据库名称、用户和密码填入之前设置的值。网站设置中,站点名称可以自定义,Gitea基础URL填写你访问的地址(如http://192.168.1.100:3000),SSH服务器端口填写2222。管理员账号设置可以留空,第一次注册的用户会自动成为管理员。

填写完毕后点击“安装Gitea”,等待几秒即可完成。

第五步:创建用户与仓库

安装完成后,你会进入登录页面。注册第一个账号,该账号将成为系统管理员。登录后,点击右上角的“+”号创建新仓库,填写仓库名称、描述,选择公开或私有。

现在你已经拥有了一个属于自己的Git服务器。在本地电脑上,可以用以下命令测试:

git clone http://你的NAS IP:3000/用户名/仓库名.git

或者通过SSH方式(端口2222):

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

进阶设置

如果想让Gitea更安全易用,可以考虑以下几点:

配置HTTPS。如果你有域名和SSL证书,可以在Gitea的配置文件(位于./data/gitea/conf/app.ini)中修改PROTOCOL=https,并配置证书路径。

使用反向代理。如果你已经在飞牛NAS上部署了Nginx或Caddy,可以将Gitea置于反向代理之后,实现统一端口访问和负载均衡。

启用自动备份。编写一个简单的cron脚本,定期备份./data和./mysql目录到其他存储位置,防止数据丢失。

常见问题解决

如果容器无法启动,首先检查端口是否被占用。飞牛NAS的3000端口可能被其他服务占用,可以在docker-compose中修改映射端口,比如改为“3001:3000”。

遇到权限错误时,确认./data和./mysql目录的属主和属组与USER_UID/USER_GID一致。可以用chown命令修正。

如果SSH连接失败,检查飞牛NAS的防火墙是否放行了2222端口,或者SSH服务本身是否占用了22端口。

总结

通过以上步骤,你在飞牛NAS上成功部署了Gitea Git服务器。整个过程使用了Docker Compose,将Gitea和MariaDB容器化运行,既保证了环境的隔离性,又方便了后续的升级和维护。现在你可以将自己的代码库迁移到NAS上,或者邀请团队成员一起协作,享受自托管带来的数据安全与访问自由。如果你在部署过程中遇到问题,欢迎在评论区交流讨论。