# vigreen-devops **Repository Path**: RichardLiew/vigreen-devops ## Basic Information - **Project Name**: vigreen-devops - **Description**: Devops for vigreen - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-15 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vigreen-devops 一站式 DevOps 管理系统:**一条命令,全新服务器一步到位全部部署完毕**。 ## 架构概览 ``` ┌─────────────────────────────────────┐ │ 目标云服务器 │ │ (49.232.237.100) │ │ │ 80/443 ──────────┤ Caddy (反代 + 自动 HTTPS/SSL) │ │ │ │ │ ├── www.vigreen.cn → 9000 │ │ ├── pony-toolbox.vigreen.cn → 9020/9021 │ ├── pony-violation.vigreen.cn → 9030/9031 │ ├── pony-geo.vigreen.cn → 9040/9041 │ ├── pony-cab.vigreen.cn → 9050 │ │ ├── pony-ai.vigreen.cn → 9010 │ │ ├── vigreen-mobility.vigreen.cn → 9060/9061 │ ├── www.antmobility.cn → 6000 │ │ ├── kuma.vigreen.cn → Kuma │ │ ├── portainer.vigreen.cn → Portainer │ └── hook.vigreen.cn → WebHook │ │ │ WebHook (systemd:9999) → CI/CD │ │ 定时备份 (cron: 03:00) │ └─────────────────────────────────────┘ ``` ## 快速开始(一键部署) 在全新服务器上执行: ```bash # 方式一:直接执行(推荐) git clone https://gitee.com/RichardLiew/vigreen-devops.git /opt/devops && bash /opt/devops/scripts/setup.sh # 方式二:curl 管道 curl -fsSL https://gitee.com/RichardLiew/vigreen-devops/raw/master/scripts/setup.sh | bash ``` **无需任何后续操作**,脚本自动完成: 1. 安装 git/curl/wget、Docker、webhook 工具 2. 克隆所有 8 个业务项目并部署 3. 启动 Caddy 反代(自动申请 SSL 证书) 4. 启动 Uptime Kuma 监控、Portainer 容器面板 5. 注册 WebHook CI/CD 服务 6. 配置防火墙、fail2ban 安全加固 7. 配置每日 03:00 自动数据备份 > **注意**:默认登录用户 `ubuntu`(非 root),脚本自动处理 sudo 权限和 docker 组。 ## 统一管理命令 所有操作通过 `devops.sh` 统一管理: ```bash # 在服务器上 cd /opt/devops ./scripts/devops.sh <命令> [项目名] [选项] ``` ### 全量操作 | 命令 | 说明 | |------|------| | `./devops.sh setup` | 一键初始化全新服务器 | | `./devops.sh deploy` | 部署所有项目 | | `./devops.sh start` | 启动所有项目 | | `./devops.sh stop` | 停止所有项目 | | `./devops.sh restart` | 重启所有项目 | | `./devops.sh upgrade` | 拉取最新代码并重新构建所有项目 | | `./devops.sh status` | 查看所有项目运行状态 | | `./devops.sh backup` | 备份所有项目数据 | ### 个别项目操作 ```bash ./devops.sh deploy pony-toolbox # 部署单个项目 ./devops.sh start pony-geo # 启动单个项目 ./devops.sh stop vigreen-website # 停止单个项目 ./devops.sh restart antmobility-website ./devops.sh upgrade pony-violation # 升级单个项目 ./devops.sh remove pony-cab --purge # 彻底删除(含数据) ./devops.sh status pony-toolbox # 查看单个项目状态 ./devops.sh logs vigreen-mobility # 查看日志(实时跟踪) ./devops.sh backup pony-geo # 备份单个项目 ``` ### 新增项目 ```bash ./devops.sh add my-app https://gitee.com/xxx/my-app.git my-app.vigreen.cn ``` ### 基础设施管理 ```bash ./devops.sh infra start # 启动 Caddy/Kuma/Portainer ./devops.sh infra stop # 停止基础设施 ./devops.sh infra restart # 重启基础设施 ./devops.sh infra status # 查看基础设施状态 ``` ### SSL 证书 ```bash ./devops.sh ssl # 查看证书状态 ``` Caddy 自动管理所有域名的 Let's Encrypt 证书,到期前 30 天自动续签,**无需手动操作**。 ### 列出所有项目 ```bash ./devops.sh list ``` ## 项目清单 | 项目 | 域名 | 前端端口 | 后端端口 | 说明 | |------|------|---------|---------|------| | vigreen-website | www.vigreen.cn / vigreen.cn | 9000 | - | 官网 | | pony-ai | pony-ai.vigreen.cn | 9010 | - | 维护页 | | pony-toolbox | pony-toolbox.vigreen.cn | 9020 | 9021 | 工具箱 | | pony-violation | pony-violation.vigreen.cn | 9030 | 9031 | 违规管理 | | pony-geo | pony-geo.vigreen.cn | 9040 | 9041 | 地理服务 | | pony-cab | pony-cab.vigreen.cn | 9050 | - | 维护页 | | vigreen-mobility | vigreen-mobility.vigreen.cn | 9060 | 9061 | 出行服务 | | antmobility-website | www.antmobility.cn / antmobility.cn | 6000 | - | 官网 | 端口规则:前端取偶数,后端取奇数。 ## 数据备份与持久化 ### 自动备份 每日 03:00 自动执行,备份内容: - 各项目 .env 配置和 docker-compose.yml - MySQL/PostgreSQL/Redis 数据库 dump - 各项目 data/uploads/media/storage 等数据目录 - Caddy 数据(含 SSL 证书) - Portainer 和 Uptime Kuma 数据 备份存储在 `/opt/devops/backups/`,保留 7 天。 ### 手动备份 ```bash ./devops.sh backup # 备份所有项目 ./devops.sh backup pony-toolbox # 备份单个项目 ``` ### 恢复 ```bash ./devops.sh restore pony-toolbox # 列出可用备份 ./devops.sh restore pony-toolbox /opt/devops/backups/xxx.tar.gz # 从指定文件恢复 ``` ## WebHook CI/CD 每个项目已配置 Gitee WebHook,push 到 master 分支后自动触发部署。 ### 配置 WebHook 在 Gitee 仓库 → 管理 → WebHooks: - URL: `https://hook.vigreen.cn/hooks/deploy-<项目名>` - 密码: `.env` 中的 `WEBHOOK_SECRET` 值 - 触发事件: Push ### WebHook 列表 | 项目 | Hook URL | |------|----------| | vigreen-website | `https://hook.vigreen.cn/hooks/deploy-vigreen-website` | | pony-toolbox | `https://hook.vigreen.cn/hooks/deploy-pony-toolbox` | | pony-violation | `https://hook.vigreen.cn/hooks/deploy-pony-violation` | | pony-geo | `https://hook.vigreen.cn/hooks/deploy-pony-geo` | | pony-cab | `https://hook.vigreen.cn/hooks/deploy-pony-cab` | | pony-ai | `https://hook.vigreen.cn/hooks/deploy-pony-ai` | | vigreen-mobility | `https://hook.vigreen.cn/hooks/deploy-vigreen-mobility` | | antmobility-website | `https://hook.vigreen.cn/hooks/deploy-antmobility-website` | ## 安全相关 - **SSL/HTTPS**:Caddy 自动申请和续签 Let's Encrypt 证书,所有域名强制 HTTPS - **防火墙**:仅开放 22(SSH)/80(HTTP)/443(HTTPS) 端口,业务端口不对外暴露 - **fail2ban**:SSH 防暴力破解 - **Docker Socket**:Portainer 通过 Docker Socket 管理,不暴露管理端口 - **WebHook**:通过 Caddy 反代访问,密钥校验 - **数据持久化**:所有项目数据通过 bind mount 持久化到宿主机 ## 目录结构 ``` /opt/devops/ # DevOps 管理系统 ├── .env # 环境变量(含端口/域名/密钥配置) ├── .env.example # 环境变量模板 ├── projects.conf # 项目注册表 ├── docker-compose.yml # 基础设施编排(Caddy/Kuma/Portainer) ├── caddy/ │ └── Caddyfile # 反向代理 + HTTPS 配置 ├── scripts/ │ ├── setup.sh # 一键部署入口 │ ├── devops.sh # 统一管理脚本 │ ├── backup.sh # 独立备份脚本 │ └── common.sh # 公共函数 ├── webhook/ │ ├── hooks.json # WebHook 配置 │ ├── webhook.service # systemd 服务 │ └── scripts/ │ ├── common.sh # 部署公共函数 │ └── deploy-*.sh # 各项目部署脚本 ├── backups/ # 备份存储(git忽略) ├── caddy/data/ # Caddy数据(含SSL证书,git忽略) ├── uptime-kuma/data/ # 监控数据(git忽略) └── portainer/data/ # 容器面板数据(git忽略) /opt/apps/ # 业务项目部署目录 ├── vigreen-website/ ├── pony-toolbox/ ├── pony-violation/ ├── pony-geo/ ├── pony-cab/ ├── pony-ai/ ├── vigreen-mobility/ └── antmobility-website/ ``` ## 兼容性 - **操作系统**:Ubuntu/Debian/CentOS/RHEL/AlmaLinux/Rocky/Fedora/Amazon Linux/Alpine - **用户权限**:兼容 root 和非 root 用户(如 ubuntu),自动处理 sudo - **Docker**:自动安装,非 root 用户自动加入 docker 组 ## 运维面板 | 服务 | 地址 | 说明 | |------|------|------| | Uptime Kuma | https://kuma.vigreen.cn | 服务监控 | | Portainer | https://portainer.vigreen.cn | 容器管理面板 | | WebHook | https://hook.vigreen.cn/hooks/ | CI/CD 回调 | ## 故障排查 ```bash # 查看基础设施状态 ./devops.sh infra status # 查看项目状态 ./devops.sh status # 查看项目日志 ./devops.sh logs <项目名> # 查看 Caddy 日志 docker logs devops-caddy --tail 50 # 查看 WebHook 日志 sudo journalctl -u webhook -f # 重启基础设施 ./devops.sh infra restart # 重新部署某个项目 ./devops.sh upgrade <项目名> ```