绿联NAS部署Gitea:轻量级代码托管实战指南

张开发
2026/4/16 22:40:26 15 分钟阅读

分享文章

绿联NAS部署Gitea:轻量级代码托管实战指南
1. 为什么选择绿联NAS部署Gitea最近在折腾家庭实验室时发现用绿联NAS跑Gitea简直是绝配。作为一款开源的轻量级代码托管平台Gitea相比GitLab这类重型工具对硬件资源的需求简直友好到哭——实测在绿联DH2100这种双盘位NAS上就能流畅运行内存占用长期稳定在200MB以内。我自己用下来的三大核心优势零成本私有化再也不用担心商业代码托管平台的突然收费或服务变更极致轻量化老款NAS也能轻松驾驭我甚至在5年前的ARM架构设备上成功部署完整Git功能issues、pull request、Webhook等企业级功能一个不少特别适合这些场景个人开发者想要备份GitHub私有仓库小团队需要内部代码协作但预算有限物联网项目需要本地化版本控制学生党做毕业设计时管理代码版本2. 部署前的准备工作2.1 硬件配置建议虽然Gitea对硬件要求极低但根据我的踩坑经验建议配置至少双核CPUJ4025级别足够4GB内存实测2GB也能跑但会卡剩余存储空间20GB以上代码仓库很吃容量我的绿联DX4600实测数据同时运行10个私有仓库日均提交50次左右资源占用峰值CPU 12% / 内存 1.2GB2.2 系统环境准备首先登录绿联NAS的Docker管理界面确保已开启SSH功能控制面板→系统设置→终端启用Docker服务正常运行资源监控→服务状态检查创建专用存储目录建议命名为gitea_data需要特别注意权限问题建议通过命令行预先配置mkdir -p /mnt/gitea_data chmod -R 775 /mnt/gitea_data chown -R 1000:1000 /mnt/gitea_data这里的1000对应默认用户UID后面容器配置会用到。3. 详细部署步骤3.1 镜像拉取技巧在绿联Docker界面点击镜像管理→添加镜像推荐使用官方镜像gitea/gitea:latest遇到过镜像拉取失败的坑试试这个方案更换国内镜像源使用命令行拉取后导入docker pull registry.cn-shanghai.aliyuncs.com/gitea/gitea docker save -o gitea.tar gitea/gitea然后在绿联界面选择本地导入3.2 容器创建关键配置点击创建容器后这些参数必须按我说的设置基础设置交互开启TTY开启重启策略总是重启容器意外退出时自动恢复网络设置网络模式桥接别选host模式端口映射40000→3000后面会解释为什么存储空间挂载路径/data必须绝对路径类型读写主机路径选择之前创建的/mnt/gitea_data3.3 环境变量玄机这是最容易出问题的部分必须严格按以下配置HTTP_PORT40000 USER_UID1000 USER_GID1000特别注意UID/GID绝对不能设0root权限会导致容器崩溃端口号要与映射的外部端口一致如需SMTP发邮件还需添加邮件服务器配置4. 首次运行配置指南容器启动后浏览器访问http://你的NAS_IP:40000会看到初始化界面重点注意这几个配置项数据库选择小仓库用SQLite3足够默认选项团队使用建议PostgreSQL需额外部署应用常规设置域名填写NAS内网IP或DDNS域名应用URL必须包含端口号如http://192.168.1.100:40000最大文件大小建议改为4096对应之前创建的4GB限制管理员账户务必立即创建否则第一个注册用户会自动成为管理员密码强度要求至少12位含特殊字符5. 进阶优化技巧5.1 自动备份方案怕数据丢失用这个cron脚本每天凌晨3点自动备份0 3 * * * docker exec -u git gitea bash -c cd /data; /app/gitea/gitea dump -c /data/gitea/conf/app.ini然后把备份文件同步到云存储rclone copy /mnt/gitea_data/gitea-dump-*.zip onedrive:/gitea_backup5.2 性能调优参数编辑/data/gitea/conf/app.ini增加这些配置[repository] ROOT /data/git/repositories [database] MAX_OPEN_CONNS 100 [server] PROTOCOL http DOMAIN your_nas_ip HTTP_PORT 400005.3 安全加固措施定期更新镜像每月检查新版本配置Nginx反向代理HTTPS开启双因素认证在用户设置→安全中启用限制注册功能管理员账户创建后立即关闭公开注册6. 常见问题排坑指南容器不断重启怎么办检查USER_UID/GID不是0查看日志docker logs gitea确认/data挂载点权限正确推送大文件失败检查app.ini中的FILE_MAX_SIZE确认NAS存储空间充足可能是git缓冲区限制尝试git config --global http.postBuffer 524288000Web界面卡顿调整CONCURRENCY_QUEUE_LENGTH参数升级NAS内存禁用非必要插件如PWA最近帮朋友部署时发现个隐藏坑点某些绿联机型默认的cgroup版本会导致Docker资源限制失效。解决方法是在SSH中执行echo cgroup_enablememory swapaccount1 /etc/default/grub update-grub reboot这套方案我已经在三个不同型号的绿联NAS上验证通过最老的ARM架构设备跑了半年多没出过问题。如果遇到其他奇葩情况建议去Gitea的GitHub仓库搜issue90%的问题都能找到现成解决方案。

更多文章