# 部署与升级指南 本文介绍 ChatGPT2API 的常见部署方式,以及后续升级项目时需要保留的数据和执行步骤。 ## 部署前准备 服务器需要安装: - Docker - Docker Compose v2 - Git 首次部署前建议确认: ```bash docker version docker compose version git --version ``` 项目核心持久化文件: | 路径 | 作用 | | --- | --- | | `config.json` | 主配置、后台密钥、代理、图片、备份等配置 | | `.env` | Docker compose 环境变量 | | `data/` | 账号、日志、图片、任务记录等运行数据 | 升级和迁移时重点保留以上内容。 ## 方式一:普通 Docker 部署 适合不需要 WARP / FlareSolverr 清障的场景。 ```bash git clone git@github.com:basketikun/chatgpt2api.git cd chatgpt2api ``` 设置 `config.json` 中的 `auth-key`,或在 `docker-compose.yml` 中配置: ```yaml environment: - CHATGPT2API_AUTH_KEY=your_secret_key ``` 启动: ```bash docker compose up -d ``` 访问: ```text http://localhost:3000 ``` API 基础地址: ```text http://localhost:3000/v1 ``` 查看日志: ```bash docker logs -f chatgpt2api ``` 停止: ```bash docker compose down ``` ## 方式二:WARP / FlareSolverr 部署 适合上游请求经常遇到 Cloudflare 拦截的场景。该方式会启动: - `warp-proxy` - `privoxy` - `flaresolverr` - `init-config` - `app` 复制环境变量模板: ```bash cp .env.example .env ``` 至少修改 `.env` 中的: ```text CHATGPT2API_AUTH_KEY=your_secret_key_here ``` 启动: ```bash docker compose -f docker-compose.warp.yml up -d --build ``` 访问: ```text http://localhost:3000 ``` FlareSolverr 相关配置可以在后台设置页的 `FlareSolverr` tab 中查看和测试。 查看容器状态: ```bash docker compose -f docker-compose.warp.yml ps ``` 查看日志: ```bash docker logs -f chatgpt2api-warp docker logs -f chatgpt2api-flaresolverr ``` 停止: ```bash docker compose -f docker-compose.warp.yml down ``` ## 方式三:源码运行 适合本地开发或临时调试。 后端: ```bash git clone git@github.com:basketikun/chatgpt2api.git cd chatgpt2api uv sync uv run main.py ``` 前端开发服务: ```bash cd web bun install bun run dev ``` 源码方式运行时,后端默认读取项目根目录的 `config.json` 和 `data/`。 ## 存储后端 默认使用本地 JSON 文件: ```text STORAGE_BACKEND=json ``` 可选值: | 值 | 说明 | | --- | --- | | `json` | 本地 JSON 文件,默认方式 | | `sqlite` | 本地 SQLite,通常存放在 `data/accounts.db` | | `postgres` | 外部 PostgreSQL | | `git` | Git 私有仓库存储账号数据 | PostgreSQL 示例: ```yaml environment: - STORAGE_BACKEND=postgres - DATABASE_URL=postgresql://user:password@host:5432/dbname ``` SQLite 示例: ```yaml environment: - STORAGE_BACKEND=sqlite - DATABASE_URL=sqlite:////app/data/accounts.db ``` ## 升级前备份 升级前建议备份: ```bash mkdir -p backups tar -czf backups/chatgpt2api-$(date +%Y%m%d-%H%M%S).tgz config.json .env data ``` 如果没有 `.env`,可以去掉: ```bash tar -czf backups/chatgpt2api-$(date +%Y%m%d-%H%M%S).tgz config.json data ``` 也可以在后台设置页配置 Cloudflare R2 备份,用于定时备份关键数据。 ## 升级:普通 Docker 部署 进入项目目录: ```bash cd chatgpt2api ``` 备份: ```bash mkdir -p backups tar -czf backups/chatgpt2api-$(date +%Y%m%d-%H%M%S).tgz config.json .env data ``` 拉取最新代码和镜像: ```bash git pull docker compose pull docker compose up -d ``` 查看状态: ```bash docker compose ps docker logs -f chatgpt2api ``` ## 升级:WARP / FlareSolverr 部署 进入项目目录: ```bash cd chatgpt2api ``` 备份: ```bash mkdir -p backups tar -czf backups/chatgpt2api-$(date +%Y%m%d-%H%M%S).tgz config.json .env data ``` 拉取最新代码并重新构建: ```bash git pull docker compose -f docker-compose.warp.yml up -d --build ``` 查看状态: ```bash docker compose -f docker-compose.warp.yml ps docker logs -f chatgpt2api-warp ``` ## 升级:源码运行 ```bash cd chatgpt2api git pull uv sync ``` 如果需要重新构建前端静态产物: ```bash cd web bun install bun run build ``` 然后按你的进程管理方式重启后端服务。 ## 回滚 如果升级后需要回滚代码: ```bash git log --oneline -n 20 git checkout <旧版本commit> ``` 普通 Docker 部署: ```bash docker compose up -d ``` WARP / FlareSolverr 部署: ```bash docker compose -f docker-compose.warp.yml up -d --build ``` 如果需要恢复数据: ```bash tar -xzf backups/你的备份文件.tgz ``` 恢复数据前建议先停止容器,避免运行中写入覆盖: ```bash docker compose down ``` 或: ```bash docker compose -f docker-compose.warp.yml down ``` ## 常用维护命令 查看容器: ```bash docker compose ps ``` 查看主服务日志: ```bash docker logs -f chatgpt2api ``` 查看 WARP 部署主服务日志: ```bash docker logs -f chatgpt2api-warp ``` 重启普通部署: ```bash docker compose restart ``` 重启 WARP 部署: ```bash docker compose -f docker-compose.warp.yml restart ``` 清理未使用镜像: ```bash docker image prune ``` 不要直接删除 `data/`、`config.json`、`.env`,除非已经确认有可用备份。