添加portainer,优化部署
This commit is contained in:
156
gitea/README.md
156
gitea/README.md
@@ -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>
|
||||
|
||||
---
|
||||
|
||||
## 五、安全加固清单
|
||||
## 六、安全加固清单
|
||||
|
||||
- [ ] 域名已启用 HTTPS(deploy.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/
|
||||
|
||||
Reference in New Issue
Block a user