添加portainer,优化部署

This commit is contained in:
2026-04-08 09:58:40 +08:00
parent 14584aed3d
commit e5f841c624
31 changed files with 1882 additions and 1261 deletions

View File

@@ -322,28 +322,7 @@ docker compose down # 停止并移除容器
docker compose up -d # 启动
```
### 升级组件(一键脚本)
```bash
cd /opt/gitea
# 交互式选择要升级的组件
bash upgrade.sh
# 或直接指定组件
bash upgrade.sh gitea # 仅升级 Gitea
bash upgrade.sh mysql # 仅升级 MySQL
bash upgrade.sh nginx # 仅升级 Nginx
bash upgrade.sh certbot # 仅升级 Certbot
bash upgrade.sh docker # 仅升级 Docker
bash upgrade.sh all # 升级全部
```
> 脚本会自动显示当前版本、执行备份、拉取新镜像、重启服务并验证。
---
### 手动升级详细步骤
### 升级组件
#### 升级 Gitea
@@ -570,7 +549,7 @@ gunzip < /var/backups/gitea/db_20260406_030000.sql.gz | \
docker compose up -d
```
### 迁移到新服务器(一键脚本)
### 迁移到新服务器
将已部署的 Gitea 完整迁移到另一台服务器包含数据库、仓库、LFS、配置等全部数据。
@@ -580,49 +559,6 @@ docker compose up -d
# ===== 旧服务器 =====
cd /opt/gitea
# 导出迁移包(会自动停服 → mysqldump → 打包数据 → 打包配置)
bash migrate.sh export
# 生成: /var/backups/gitea/gitea_migrate_日期.tar.gz
# 传输到新服务器
scp /var/backups/gitea/gitea_migrate_*.tar.gz root@新服务器IP:/opt/gitea/
```
```bash
# ===== 新服务器 =====
# 前提:已安装 Docker可先运行 deploy.sh 的 Docker 安装步骤,或手动安装)
mkdir -p /opt/gitea
cd /opt/gitea
# 导入迁移包(会自动恢复配置 → 恢复数据 → 导入数据库 → 启动 → regenerate hooks → doctor check
bash migrate.sh import gitea_migrate_日期.tar.gz
# 验证迁移完整性
bash migrate.sh verify
```
**脚本自动完成的操作:**
| 阶段 | 操作 |
|------|------|
| 导出 | 停止 Gitea → mysqldump 导出数据库 → 打包 Gitea 数据目录 → 打包部署配置 → 生成迁移包 |
| 导入 | 解压 → 恢复配置 → 恢复数据目录 → 启动 MySQL → 导入数据库 → 启动 Gitea → regenerate hooks → doctor check |
| 验证 | 检查容器状态 → API 可达性 → 数据库连接 → 仓库/用户数量 → 数据目录完整性 → Nginx 状态 |
**迁移后注意事项:**
- 如域名或 IP 变更,导入前需修改 `.env` 中的 `GITEA_DOMAIN`
- 域名变更后需更新 DNS 解析并重新申请 SSL 证书:`certbot certonly --webroot -w /var/www/certbot -d 新域名`
- 如新服务器未安装 Nginx/Certbot可运行 `bash deploy.sh` 补装(脚本会跳过已有组件)
- 确保新服务器 Gitea 版本 ≥ 旧服务器版本(不支持降级)
- 官方建议使用 `mysqldump` 而非 `gitea dump` 的 XORM 导出(脚本已采用此方案)
<details>
<summary>手动迁移步骤(不使用脚本)</summary>
```bash
# ===== 旧服务器 =====
cd /opt/gitea
# 1. 停止 Gitea
docker compose stop server
@@ -677,11 +613,82 @@ docker compose exec -u git server \
/usr/local/bin/gitea -c /data/gitea/conf/app.ini doctor check --all --fix
```
**迁移后注意事项:**
- 如域名或 IP 变更,导入前需修改 `.env` 中的 `GITEA_DOMAIN`
- 域名变更后需更新 DNS 解析并重新申请 SSL 证书:`certbot certonly --webroot -w /var/www/certbot -d 新域名`
- 如新服务器未安装 Nginx/Certbot可运行 `bash deploy.sh` 补装(脚本会跳过已有组件)
- 确保新服务器 Gitea 版本 ≥ 旧服务器版本(不支持降级)
- 官方建议使用 `mysqldump` 而非 `gitea dump` 的 XORM 导出
---
## 五、完全卸载
如果需要从服务器上完全移除 Gitea使用卸载脚本
```bash
cd /opt/gitea
bash uninstall.sh
```
脚本会**交互式确认**每个危险操作,按顺序执行:
| 步骤 | 操作 | 确认方式 |
|------|------|----------|
| 0 | 卸载前备份(可选) | y/N |
| 1 | 停止并删除 Gitea + MySQL 容器和卷 | 输入 YES |
| 2 | 删除 Docker 镜像 | 自动 |
| 3 | 删除 Nginx 站点配置并重载 | 自动 |
| 4 | 删除 Let's Encrypt SSL 证书 | 自动 |
| 5 | 关闭防火墙 SSH 端口 (2222) | 自动 |
| 6 | 清理 Certbot 定时任务(仅当无其他证书时) | 自动 |
| 7 | 删除数据目录Gitea + MySQL | 输入 DELETE |
| 8 | 删除部署目录 `/opt/gitea` | y/N |
**备份目录 `/var/backups/gitea/` 始终保留**,不会被删除。
> 卸载后如需恢复,参考上方「恢复备份」章节。
<details>
<summary>手动卸载步骤(不使用脚本)</summary>
```bash
cd /opt/gitea
# 1. 建议先备份
bash backup.sh
# 2. 停止并删除容器、网络、卷
docker compose down -v
# 3. 删除 Docker 镜像(可选)
docker image rm gitea/gitea:1.25 mysql:8.4
# 4. 删除 Nginx 配置
rm -f /etc/nginx/sites-enabled/gitea /etc/nginx/sites-available/gitea
nginx -t && systemctl reload nginx
# 5. 删除 SSL 证书
certbot delete --cert-name 你的域名
# 6. 关闭防火墙端口
ufw delete allow 2222/tcp && ufw reload
# 7. 删除数据目录(⚠ 不可恢复)
rm -rf /var/lib/gitea
rm -rf /var/lib/mysql/gitea
# 8. 删除部署目录(可选)
rm -rf /opt/gitea
# 备份目录保留在 /var/backups/gitea/
```
</details>
---
## 、安全加固清单
## 、安全加固清单
- [ ] 域名已启用 HTTPSdeploy.sh 自动完成)
- [ ] SSL 证书自动续期deploy.sh 自动配置 cron
@@ -696,7 +703,7 @@ docker compose exec -u git server \
---
## 、常见问题
## 、常见问题
**Q: 部署完成后访问显示 502 Bad Gateway**
- 这是正常现象,说明 Nginx 已就绪但 Gitea 容器尚未启动完成
@@ -731,16 +738,6 @@ docker compose exec server gitea admin user change-password -u 管理员用户
- 或安装 [Gpg4win](https://www.gpg4win.org/)
- 生成密钥时请在 **Git Bash** 中执行 `gpg --full-generate-key`PowerShell/CMD 下交互式生成会失败)
**Q: 如何迁移到新服务器?**
使用迁移脚本一键完成,详见上方「迁移到新服务器」章节:
```bash
# 旧服务器导出
bash migrate.sh export
# 新服务器导入
bash migrate.sh import gitea_migrate_xxx.tar.gz
bash migrate.sh verify
```
---
## 服务器目录结构
@@ -751,9 +748,8 @@ bash migrate.sh verify
├── .env.example # 环境变量模板
├── .env # 运行时配置(自动生成)
├── deploy.sh # 全新服务器一键部署脚本
├── upgrade.sh # 组件升级脚本Gitea/MySQL/Nginx/Certbot/Docker
├── migrate.sh # 服务器迁移脚本(导出/导入/验证)
├── backup.sh # MySQL + 数据备份脚本
├── uninstall.sh # 完全卸载脚本
├── .gitignore
├── README.md
└── nginx/