Gitea 维护模块
概述
这是 macOS 工具集中的 Gitea 维护模块,提供完整的 Gitea Git 服务器管理解决方案,包括服务部署、自动备份、健康监控和一键恢复功能。
功能特性
- ✅ 一键部署: Docker Compose 快速部署 Gitea 服务
- ✅ 自动备份: 双重定时任务保障 (cron + launchd)
- ✅ 安全恢复: 支持一键恢复和安全回滚
- ✅ 健康监控: 实时监控服务状态和数据完整性
- ✅ 环境配置: 灵活的环境变量配置管理
- ✅ macOS 集成: 原生支持 macOS 系统特性
目录结构
gitea/
├── docker-compose.yml # Docker 服务配置
├── gitea-data-protection.sh # 主管理脚本
├── gitea-backup.sh # 快速备份脚本
├── gitea-restore.sh # 快速恢复脚本
├── .env.example # 环境变量模板
└── README.md # 本文档
快速开始
1. 环境准备
确保系统已安装:
- Docker Desktop for Mac
- Git
2. 初始化设置
# 进入项目目录
cd /path/to/macos/gitea
# 复制环境配置文件
cp .env.example .env
# 根据需要修改配置(可选)
nano .env
# 初始化设置(自动配置定时任务等)
./gitea-data-protection.sh setup
3. 启动服务
# 启动 Gitea 服务
./gitea-data-protection.sh start
# 检查服务状态
./gitea-data-protection.sh health
4. 访问 Gitea
- Web 界面: http://192.168.1.83:33000
- SSH: git@192.168.1.83:32222
使用说明
服务管理
# 启动服务
./gitea-data-protection.sh start
# 停止服务
./gitea-data-protection.sh stop
# 健康检查
./gitea-data-protection.sh health
备份操作
# 手动备份(自动命名)
./gitea-backup.sh
# 手动备份(指定名称)
./gitea-backup.sh my-backup-20251019
# 查看备份文件
ls -la ~/ops/backups/gitea/
恢复操作
# 查看可用备份
./gitea-restore.sh
# 从指定备份恢复
./gitea-restore.sh gitea-20251019-120000.tar.gz
高级操作
# 完整功能菜单
./gitea-data-protection.sh help
# 重新初始化设置
./gitea-data-protection.sh setup
配置说明
环境变量 (.env)
| 变量名 | 默认值 | 说明 |
|---|---|---|
GITEA_DOMAIN |
192.168.1.83 | Gitea 服务器域名 |
GITEA_SSH_DOMAIN |
192.168.1.83 | SSH 服务器域名 |
GITEA_BACKUP_DIR |
~/ops/backups/gitea | 备份存储目录 |
GITEA_BACKUP_RETENTION_DAYS |
30 | 备份保留天数 |
GITEA_BACKUP_INTERVAL_HOURS |
6 | 自动备份间隔(小时) |
Docker 配置
- 镜像:
gitea/gitea:1.21 - 端口: 33000 (HTTP), 32222 (SSH)
- 数据库: SQLite3
- 数据卷:
gitea-data
备份机制
自动备份
系统提供双重保障的自动备份:
- Cron 任务: 传统 Unix 定时任务
- Launchd 任务: macOS 原生定时任务
默认每 6 小时自动备份一次,保留 30 天的备份文件。
备份内容
- Gitea 数据库 (SQLite)
- Git 仓库数据
- 用户配置和设置
- LFS 数据 (如果启用)
备份位置
~/ops/backups/gitea/
├── gitea-20251019-120000.tar.gz # 备份文件
├── gitea-20251019-120000.tar.gz.meta # 备份元数据
└── safety-backup-*.tar.gz # 恢复时的安全备份
恢复机制
安全恢复流程
- 停止服务: 安全停止所有 Gitea 服务
- 安全备份: 自动创建当前状态的安全备份
- 数据恢复: 从指定备份恢复数据
- 服务启动: 重启服务并验证状态
- 完整性检查: 验证数据完整性
恢回滚
如果恢复出现问题,可以使用安全备份回滚:
./gitea-restore.sh safety-backup-20251019-130000.tar.gz
监控和日志
健康检查内容
- Docker 环境状态
- Gitea 服务运行状态
- 数据卷完整性
- 仓库数量统计
- 备份状态检查
- 定时任务状态
日志文件位置
~/ops/logs/
├── gitea-protection.log # 主脚本日志
├── gitea-backup_stdout.log # 备份输出日志
└── gitea-backup_stderr.log # 备份错误日志
查看日志
# 查看主日志
tail -f ~/ops/logs/gitea-protection.log
# 查看定时任务日志
tail -f ~/ops/logs/gitea-backup_*.log
故障排除
常见问题
-
Docker 服务未启动
# 启动 Docker Desktop open /Applications/Docker.app -
端口冲突
# 检查端口占用 lsof -i :33000 lsof -i :32222 -
权限问题
# 设置脚本权限 chmod +x gitea-*.sh -
定时任务未执行
# 检查 launchd 任务 launchctl list | grep gitea # 检查 cron 任务 crontab -l | grep gitea
手动恢复定时任务
# 重新加载 launchd 任务
launchctl unload ~/Library/LaunchAgents/com.ljwx.gitea.backup.plist 2>/dev/null || true
launchctl load -w ~/Library/LaunchAgents/com.ljwx.gitea.backup.plist
# 重新设置 cron 任务
./gitea-data-protection.sh setup
性能优化
备份优化
- 调整备份频率:修改
GITEA_BACKUP_INTERVAL_HOURS - 调整保留策略:修改
GITEA_BACKUP_RETENTION_DAYS - 使用外部存储:修改
GITEA_BACKUP_DIR到外部磁盘
服务优化
- 调整 Docker 资源限制
- 使用外部数据库(PostgreSQL/MySQL)
- 配置 CDN 或反向代理
安全建议
- 定期备份: 确保自动备份正常运行
- 异地备份: 将重要备份同步到云存储
- 访问控制: 配置防火墙规则限制访问
- 定期更新: 定期更新 Gitea 版本
- 监控告警: 配置服务状态监控
升级指南
Gitea 版本升级
# 1. 备份当前数据
./gitea-backup.sh pre-upgrade-$(date +%Y%m%d)
# 2. 停止服务
./gitea-data-protection.sh stop
# 3. 更新镜像版本
# 编辑 docker-compose.yml,修改 image 标签
# 4. 启动服务
./gitea-data-protection.sh start
# 5. 验证升级
./gitea-data-protection.sh health
扩展集成
与 CI/CD 集成
# CI 脚本示例
./gitea-backup.sh ci-pre-build-$(BUILD_NUMBER)
# 执行构建任务
./gitea-restore.sh ci-pre-build-$(BUILD_NUMBER).tar.gz
与监控系统集成
# 健康检查 API 调用
./gitea-data-protection.sh health
echo $?
许可证
MIT License - 可自由使用和修改
支持
如有问题或建议,请通过以下方式联系:
- 查看日志文件排查问题
- 检查 GitHub Issues
- 提交新的 Issue 或 Pull Request