树莓派轻量部署指南:从零搭建私有Gitea代码仓库

📅 2026/7/14 21:01:59
树莓派轻量部署指南:从零搭建私有Gitea代码仓库
1. 为什么选择Gitea和树莓派如果你是一名个人开发者或者小型团队成员想要一个完全由自己掌控的代码托管平台那么Gitea和树莓派的组合绝对是你的不二之选。我最初也是在树莓派3B上尝试安装GitLab结果发现性能完全跟不上卡得连网页都打不开。后来发现了Gitea这个轻量级方案实测下来简直不要太香Gitea是用Go语言编写的自托管Git服务它的设计目标就是极简安装、快速运行。官方甚至明确表示一台廉价的树莓派就足以满足最低硬件要求。相比之下GitLab这类全功能平台对硬件的要求高得多光是内存就得4GB起步而Gitea在树莓派上运行时内存占用通常只有100-200MB。我现在的树莓派4B4GB内存上跑着Gitea同时还能运行其他服务完全不会卡顿。最让我满意的是Gitea提供了GitHub/GitLab最核心的代码托管功能包括仓库管理支持私有/公开Issue跟踪Pull RequestWiki文档简单的CI/CD集成而且它的界面非常清爽响应速度极快完全是为小规模开发场景量身定制的。如果你不需要GitLab那些复杂的企业级功能Gitea绝对能满足你的日常开发需求。2. 准备工作与环境配置2.1 硬件与系统要求在开始之前先确认你的树莓派满足以下条件树莓派型号建议3B及以上我用3B也能跑但4B更流畅内存至少1GB2GB以上更佳存储建议16GB以上的SD卡或外接SSD系统Raspberry Pi OS基于Debian或其他Linux发行版我强烈推荐使用Raspberry Pi OS Lite版本无桌面环境这样可以节省更多资源。如果你已经安装了带桌面的版本也没关系只是会占用更多内存。2.2 系统更新与依赖安装首先通过SSH连接到你的树莓派然后执行以下命令更新系统sudo apt-get update sudo apt-get upgrade -y接下来安装必要的依赖包。Gitea需要Git作为基础依赖如果你打算使用SQLite数据库推荐轻量级方案还需要安装SQLitesudo apt-get install -y git sqlite3验证Git是否安装成功git --version # 应该输出类似 git version 2.30.2 的信息如果提示找不到git命令说明安装有问题可以尝试重新安装。3. 安装Gitea二进制文件3.1 下载GiteaGitea提供了预编译的二进制文件直接下载就能运行这是最轻量级的安装方式。首先创建一个专用目录来存放Giteamkdir -p ~/gitea cd ~/gitea访问 Gitea下载页面 查看最新版本。对于树莓派ARM架构我们需要下载对应的ARM版本。以1.16.8版本为例wget -O gitea https://dl.gitea.io/gitea/1.16.8/gitea-1.16.8-linux-arm-6 chmod x gitea注意从Gitea 1.8.2版本开始官方不再单独提供armv7的构建版本但armv6版本在armv7设备上也能完美运行。3.2 测试运行下载完成后可以先测试Gitea是否能正常运行./gitea web你应该能看到类似下面的输出2023/08/15 10:00:00 Starting Gitea on PID: 12345 2023/08/15 10:00:00 Listen: http://0.0.0.0:3000这表示Gitea已经启动并在3000端口监听。按CtrlC可以停止服务。4. 配置Gitea服务4.1 创建系统服务为了让Gitea在后台运行并且开机自动启动我们需要将其配置为systemd服务。首先创建服务文件sudo nano /etc/systemd/system/gitea.service将以下内容粘贴到文件中注意修改User、Group和WorkingDirectory为你实际的用户和路径[Unit] DescriptionGitea (Git with a cup of tea) Aftersyslog.target Afternetwork.target [Service] Typesimple Userpi Grouppi WorkingDirectory/home/pi/gitea ExecStart/home/pi/gitea/gitea web Restartalways EnvironmentUSERpi HOME/home/pi [Install] WantedBymulti-user.target保存退出后重新加载systemd配置sudo systemctl daemon-reload4.2 管理Gitea服务现在你可以使用systemctl命令来管理Gitea服务了# 启动服务 sudo systemctl start gitea # 查看状态 sudo systemctl status gitea # 设置开机自启 sudo systemctl enable gitea # 停止服务 sudo systemctl stop gitea # 重启服务 sudo systemctl restart gitea5. 初始化Gitea配置5.1 通过Web界面配置确保Gitea服务正在运行然后在同一局域网内的电脑浏览器中访问http://树莓派IP:3000你会看到Gitea的安装页面。以下是几个关键配置项数据库设置数据库类型选择SQLite3最简单适合个人使用如果需要MySQL/PostgreSQL需要提前安装并创建数据库常规设置站点名称给你的Gitea实例起个名字服务器域名填写你的树莓派局域网IP如192.168.1.100SSH服务端口保持默认22如果被占用可以改为其他端口管理员账户设置你的管理员账号和密码配置完成后点击立即安装按钮等待初始化完成。5.2 配置文件详解Gitea的主要配置文件位于~/gitea/custom/conf/app.ini。安装完成后你可以根据需要修改这个文件。以下是一些常用配置项[server] DOMAIN your.local.ip HTTP_PORT 3000 ROOT_URL http://your.local.ip:3000 [database] DB_TYPE sqlite3 PATH /home/pi/gitea/data/gitea.db [repository] ROOT /home/pi/gitea/repos [log] ROOT_PATH /home/pi/gitea/log修改配置后需要重启Gitea服务使更改生效sudo systemctl restart gitea6. 日常使用与维护6.1 创建第一个仓库登录Gitea后点击右上角的按钮选择新建仓库输入仓库名称选择私有/公开点击创建仓库按钮创建完成后你可以像使用GitHub一样使用这个仓库# 克隆仓库 git clone http://树莓派IP:3000/username/repo.git # 添加文件并提交 cd repo echo # My Project README.md git add . git commit -m initial commit git push origin main6.2 备份与恢复定期备份Gitea数据非常重要。Gitea的数据主要包括配置文件app.ini数据库文件如果是SQLite仓库数据附件等一个简单的备份脚本#!/bin/bash BACKUP_DIR/path/to/backup DATE$(date %Y%m%d) # 停止Gitea服务 sudo systemctl stop gitea # 创建备份 mkdir -p $BACKUP_DIR/$DATE cp ~/gitea/custom/conf/app.ini $BACKUP_DIR/$DATE/ cp ~/gitea/data/gitea.db $BACKUP_DIR/$DATE/ tar -czvf $BACKUP_DIR/$DATE/repos.tar.gz ~/gitea/repos # 重启Gitea sudo systemctl start gitea恢复时只需将备份文件复制回原位置然后重启Gitea即可。6.3 常见问题解决问题1无法识别git命令exec: git: executable file not found in $PATH解决方法安装git并确保它在PATH中sudo apt-get install git问题2SSH克隆失败确保Gitea配置中的SSH域名和端口正确并且树莓派的SSH服务正常运行。问题3内存不足如果树莓派内存较小可以尝试增加swap空间关闭不必要的服务使用轻量级数据库SQLite7. 进阶配置与优化7.1 使用Nginx反向代理如果你想通过域名访问Gitea或者启用HTTPS可以配置Nginx作为反向代理。首先安装Nginxsudo apt-get install nginx然后创建Nginx配置文件sudo nano /etc/nginx/sites-available/gitea添加以下内容替换your.domain.com为你的域名server { listen 80; server_name your.domain.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }启用配置并重启Nginxsudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx7.2 启用HTTPS使用Lets Encrypt免费证书为你的Gitea实例启用HTTPSsudo apt-get install certbot python3-certbot-nginx sudo certbot --nginx -d your.domain.comCertbot会自动修改Nginx配置并设置证书自动续订。7.3 性能优化对于资源有限的树莓派可以通过以下设置优化Gitea性能修改app.ini中的缓存设置[cache] ADAPTER memory INTERVAL 60限制Gitea的内存使用 编辑systemd服务文件添加[Service] MemoryLimit500M定期清理临时文件和日志8. 与其他工具的集成8.1 CI/CD集成虽然Gitea本身不包含完整的CI/CD功能但可以通过以下方式实现自动化使用Drone CI轻量级的CI工具与Gitea完美集成Web钩子配置Webhook在代码推送时触发外部脚本Gitea Actions较新版本Gitea开始支持类似GitHub Actions的功能8.2 代码镜像如果你同时在GitHub和Gitea上维护代码可以设置自动镜像# 在Gitea仓库中添加GitHub远程 git remote add github gitgithub.com:username/repo.git # 设置推送时自动同步 git push origin main git push github main或者使用Gitea的镜像仓库功能在仓库设置中配置上游URL。8.3 移动端访问Gitea提供了移动友好的Web界面你也可以使用第三方客户端如GitNexAndroid上的Gitea客户端Working CopyiOS上的Git客户端支持Gitea9. 安全最佳实践定期更新保持Gitea和系统软件为最新版本./gitea -v # 查看当前版本 # 更新时重复下载和替换二进制文件的步骤强密码策略在app.ini中配置[password] MIN_LENGTH 12 REQUIRE_COMPLEXITY true双因素认证鼓励团队成员启用2FA防火墙设置只开放必要的端口sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable定期备份如前所述建立自动化备份流程10. 从GitLab迁移到Gitea如果你之前使用GitLab可以通过以下步骤迁移到Gitea在GitLab上导出项目进入项目设置选择导出项目下载导出文件.tar.gz格式在Gitea上导入登录Gitea点击 迁移外部仓库选择GitLab上传导出文件设置仓库属性并创建更新本地仓库远程URLgit remote set-url origin http://gitea.example.com/username/repo.git迁移完成后建议保持GitLab仓库只读一段时间确保所有协作者都已切换到新的Gitea仓库。11. 监控与日志了解如何监控Gitea的运行状态对于维护很重要查看日志journalctl -u gitea -f # 实时日志 cat ~/gitea/log/gitea.log # Gitea应用日志基本监控使用htop查看系统资源使用情况设置磁盘空间监控监控Gitea服务状态性能指标 Gitea提供了内置的metrics端点需要在app.ini中启用[metrics] ENABLED true12. 社区与支持Gitea拥有活跃的开源社区遇到问题时可以寻求帮助官方文档https://docs.gitea.ioGitHub Issues报告问题和功能请求论坛https://discourse.gitea.io聊天室Matrix或Discord上的Gitea频道13. 替代方案比较虽然Gitea在树莓派上表现优异但了解其他选项也很重要特性GiteaGogsGitLab CEBitbucket Server资源占用低最低高高安装难度简单简单复杂复杂功能完整性中等基础完整完整社区活跃度高一般高高ARM支持优秀优秀有限无对于树莓派用户Gitea在资源占用和功能完整性之间取得了很好的平衡。14. 实际使用体验分享我在树莓派4B上运行Gitea已经超过一年托管了大约20个私有仓库和5个公开仓库。以下是一些实际观察性能表现日常推送/拉取操作几乎瞬时完成同时5-6个用户访问时依然流畅内存占用稳定在200MB左右稳定性连续运行数月无需重启系统更新后无缝恢复从未出现数据损坏情况限制大型二进制文件处理不如GitLab高效复杂CI/CD需求需要额外工具支持缺少一些企业级功能如精细权限控制15. 未来升级路径随着项目增长你可能需要考虑硬件升级从树莓派迁移到更强大的硬件考虑使用SSD替代SD卡数据库迁移从SQLite迁移到MySQL/PostgreSQL使用Gitea内置的数据库迁移工具高可用性设置负载均衡配置数据库复制实现多地备份16. 常见问题FAQQGitea适合多大的团队A官方建议10人以下团队但实际测试20人左右的小团队也能很好工作。Q可以导入GitHub仓库吗A可以Gitea支持从GitHub、GitLab等平台直接迁移仓库包括Issues等数据。Q如何限制注册A在app.ini中设置[service] DISABLE_REGISTRATION trueQ支持LDAP认证吗A支持Gitea提供完整的LDAP集成配置。Q可以禁用Git LFS吗A可以在配置文件中禁用LFS支持以节省资源。17. 实用技巧与小贴士命令行工具Gitea提供了gitea命令行工具可以执行管理任务./gitea admin user list # 列出所有用户批量操作使用Gitea的API可以编写脚本批量创建仓库、用户等主题定制通过修改custom/public目录下的文件可以自定义界面插件系统虽然不如GitLab丰富但Gitea支持通过webhook集成各种服务定期维护每月执行一次./gitea admin regenerate hooks更新所有仓库钩子18. 资源监控与调优对于长期运行的Gitea实例监控这些指标很重要磁盘空间df -h # 查看磁盘使用情况 du -sh ~/gitea # 查看Gitea数据大小内存使用free -m top数据库性能 如果是SQLite定期执行sqlite3 ~/gitea/data/gitea.db VACUUM;日志轮转 配置logrotate防止日志文件过大sudo nano /etc/logrotate.d/gitea19. 备份策略详解一个完整的备份策略应该包括数据库备份sqlite3 ~/gitea/data/gitea.db .backup gitea.db.bak配置文件备份cp ~/gitea/custom/conf/app.ini app.ini.bak仓库备份tar -czvf repos.tar.gz ~/gitea/repos自动化脚本 创建一个每日执行的备份脚本并上传到云存储或其他服务器。恢复测试 定期测试备份文件是否能成功恢复。20. 结束语在树莓派上部署Gitea是一个既经济又实用的解决方案特别适合个人开发者和小型团队。我自己使用这套组合已经很久它完全满足了我的代码托管需求而且维护成本极低。最重要的是所有数据都掌握在自己手中不用担心第三方服务的限制或突然的政策变化。如果你遇到任何问题Gitea的文档和社区都是很好的资源。不要害怕尝试和调整配置这是学习过程的一部分。记住技术是为我们服务的选择最适合自己需求的工具才是关键。