diff --git a/AGENTS.md b/AGENTS.md index 85592334..5cf453ae 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -99,7 +99,7 @@ git push origin main - 本地已配置 SSH 别名 `clicodeplus` 连接到生产服务器(运行服务) - 本地已配置 SSH 别名 `us-asaki-root` 连接到构建服务器(拉取代码、构建镜像) -- 生产服务器部署目录:`/root/sub2api`(正式)、`/root/sub2api-beta`(测试) +- 生产服务器部署目录:`/root/sub2api`(正式)、`/root/sub2api-beta`(测试)、`/root/sub2api-star`(Star) - 生产服务器使用 Docker Compose 部署 - **镜像统一在构建服务器上构建**,避免生产服务器因编译占用 CPU/内存影响线上服务 @@ -109,20 +109,45 @@ git push origin main |--------|----------|------| | 构建服务器 | `us-asaki-root` | 拉取代码、`docker build` 构建镜像 | | 生产服务器 | `clicodeplus` | 加载镜像、运行服务、部署验证 | +| 数据库服务器 | `db-clicodeplus` | PostgreSQL 16 + Redis 7,所有环境共用 | + +> 数据库服务器运维手册:`db-clicodeplus:/root/README.md` ### 部署环境说明 -| 环境 | 目录(生产服务器) | 端口 | 数据库 | 容器名 | -|------|------|------|--------|--------| -| 正式 | `/root/sub2api` | 8080 | `sub2api` | `sub2api` | -| Beta | `/root/sub2api-beta` | 8084 | `beta` | `sub2api-beta` | +| 环境 | 目录(生产服务器) | 端口 | 数据库 | Redis DB | 容器名 | +|------|------|------|--------|----------|--------| +| 正式 | `/root/sub2api` | 8080 | `sub2api` | 0 | `sub2api` | +| Beta | `/root/sub2api-beta` | 8084 | `beta` | 2 | `sub2api-beta` | +| OpenAI | `/root/sub2api-openai` | 8083 | `openai` | 3 | `sub2api-openai` | +| Star | `/root/sub2api-star` | 8086 | `star` | 4 | `sub2api-star` | -### 外部数据库 +### 外部数据库与 Redis -正式和 Beta 环境**共用外部 PostgreSQL 数据库**(非容器内数据库),配置在 `.env` 文件中: -- `DATABASE_HOST`:外部数据库地址 -- `DATABASE_SSLMODE`:SSL 模式(通常为 `require`) -- `POSTGRES_USER` / `POSTGRES_DB`:用户名和数据库名 +所有环境(正式、Beta、OpenAI、Star)共用 `db.clicodeplus.com` 上的 **PostgreSQL 16** 和 **Redis 7**,不使用容器内数据库或 Redis。 + +**PostgreSQL**(端口 5432,TLS 加密,scram-sha-256 认证): + +| 环境 | 用户名 | 数据库 | +|------|--------|--------| +| 正式 | `sub2api` | `sub2api` | +| Beta | `beta` | `beta` | +| OpenAI | `openai` | `openai` | +| Star | `star` | `star` | + +**Redis**(端口 6379,密码认证): + +| 环境 | DB | +|------|-----| +| 正式 | 0 | +| Beta | 2 | +| OpenAI | 3 | +| Star | 4 | + +**配置方式**: +- 数据库通过 `.env` 中的 `DATABASE_HOST`、`DATABASE_SSLMODE`、`POSTGRES_USER`、`POSTGRES_PASSWORD`、`POSTGRES_DB` 配置 +- Redis 通过 `docker-compose.override.yml` 覆盖 `REDIS_HOST`(因主 compose 文件硬编码为 `redis`),密码通过 `.env` 中的 `REDIS_PASSWORD` 配置 +- 各环境的 `docker-compose.override.yml` 已通过 `depends_on: !reset {}` 和 `redis: profiles: [disabled]` 去掉了对容器 Redis 的依赖 #### 数据库操作命令 @@ -311,14 +336,20 @@ perl -pi -e 's/^SERVER_PORT=.*/SERVER_PORT=8084/' ./.env perl -pi -e 's/^POSTGRES_USER=.*/POSTGRES_USER=beta/' ./.env perl -pi -e 's/^POSTGRES_DB=.*/POSTGRES_DB=beta/' ./.env -# 5) 写 compose override(避免与现网容器名冲突,镜像使用构建服务器传输的 sub2api:beta) +# 5) 写 compose override(避免与现网容器名冲突,镜像使用构建服务器传输的 sub2api:beta,Redis 使用外部服务) cat > docker-compose.override.yml <<'YAML' services: sub2api: image: sub2api:beta container_name: sub2api-beta + environment: + - DATABASE_HOST=${DATABASE_HOST:-postgres} + - DATABASE_SSLMODE=${DATABASE_SSLMODE:-disable} + - REDIS_HOST=db.clicodeplus.com + depends_on: !reset {} redis: - container_name: sub2api-beta-redis + profiles: + - disabled YAML # 6) 启动 beta(独立 project,确保不影响现网) @@ -332,10 +363,11 @@ docker logs sub2api-beta --tail 50 ### 数据库配置约定(beta) -- 数据库地址/SSL/密码:与现网一致(从现网 `.env` 复制即可)。 +- 数据库地址/SSL/密码:与现网一致(从现网 `.env` 复制即可),均指向 `db.clicodeplus.com`。 - 仅修改: - `POSTGRES_USER=beta` - `POSTGRES_DB=beta` + - `REDIS_DB=2` 注意:需要数据库侧已存在 `beta` 用户与 `beta` 数据库,并授予权限;否则容器会启动失败并不断重启。 @@ -415,7 +447,19 @@ git checkout -B release/custom-0.1.69 fork/release/custom-0.1.69 # 配置环境变量 cd deploy cp .env.example .env -vim .env # 配置 DATABASE_URL, REDIS_URL, JWT_SECRET 等 +vim .env # 配置 DATABASE_HOST=db.clicodeplus.com, POSTGRES_PASSWORD, REDIS_PASSWORD, JWT_SECRET 等 + +# 创建 override 文件(Redis 指向外部服务,去掉容器 Redis 依赖) +cat > docker-compose.override.yml <<'YAML' +services: + sub2api: + environment: + - REDIS_HOST=db.clicodeplus.com + depends_on: !reset {} + redis: + profiles: + - disabled +YAML ``` ### 5. 生产服务器:更新镜像标签并启动服务 @@ -540,6 +584,7 @@ x-api-key: admin-xxx | 正式 | `https://clicodeplus.com` | 生产环境 | | Beta | `http://<服务器IP>:8084` | 仅内网访问 | | OpenAI | `http://<服务器IP>:8083` | 仅内网访问 | +| Star | `https://hyntoken.com` | 独立环境 | > 以下接口文档中,`${BASE}` 代表环境基础地址,`${KEY}` 代表 `.env` 中的 `ADMIN_API_KEY`。操作前执行 `source .env` 或 `export KEY=$ADMIN_API_KEY` 加载。 diff --git a/CLAUDE.md b/CLAUDE.md index e8e9c93f..5cf453ae 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -99,7 +99,7 @@ git push origin main - 本地已配置 SSH 别名 `clicodeplus` 连接到生产服务器(运行服务) - 本地已配置 SSH 别名 `us-asaki-root` 连接到构建服务器(拉取代码、构建镜像) -- 生产服务器部署目录:`/root/sub2api`(正式)、`/root/sub2api-beta`(测试) +- 生产服务器部署目录:`/root/sub2api`(正式)、`/root/sub2api-beta`(测试)、`/root/sub2api-star`(Star) - 生产服务器使用 Docker Compose 部署 - **镜像统一在构建服务器上构建**,避免生产服务器因编译占用 CPU/内存影响线上服务 @@ -120,10 +120,11 @@ git push origin main | 正式 | `/root/sub2api` | 8080 | `sub2api` | 0 | `sub2api` | | Beta | `/root/sub2api-beta` | 8084 | `beta` | 2 | `sub2api-beta` | | OpenAI | `/root/sub2api-openai` | 8083 | `openai` | 3 | `sub2api-openai` | +| Star | `/root/sub2api-star` | 8086 | `star` | 4 | `sub2api-star` | ### 外部数据库与 Redis -所有环境(正式、Beta、OpenAI)共用 `db.clicodeplus.com` 上的 **PostgreSQL 16** 和 **Redis 7**,不使用容器内数据库或 Redis。 +所有环境(正式、Beta、OpenAI、Star)共用 `db.clicodeplus.com` 上的 **PostgreSQL 16** 和 **Redis 7**,不使用容器内数据库或 Redis。 **PostgreSQL**(端口 5432,TLS 加密,scram-sha-256 认证): @@ -132,6 +133,7 @@ git push origin main | 正式 | `sub2api` | `sub2api` | | Beta | `beta` | `beta` | | OpenAI | `openai` | `openai` | +| Star | `star` | `star` | **Redis**(端口 6379,密码认证): @@ -140,6 +142,7 @@ git push origin main | 正式 | 0 | | Beta | 2 | | OpenAI | 3 | +| Star | 4 | **配置方式**: - 数据库通过 `.env` 中的 `DATABASE_HOST`、`DATABASE_SSLMODE`、`POSTGRES_USER`、`POSTGRES_PASSWORD`、`POSTGRES_DB` 配置 @@ -581,6 +584,7 @@ x-api-key: admin-xxx | 正式 | `https://clicodeplus.com` | 生产环境 | | Beta | `http://<服务器IP>:8084` | 仅内网访问 | | OpenAI | `http://<服务器IP>:8083` | 仅内网访问 | +| Star | `https://hyntoken.com` | 独立环境 | > 以下接口文档中,`${BASE}` 代表环境基础地址,`${KEY}` 代表 `.env` 中的 `ADMIN_API_KEY`。操作前执行 `source .env` 或 `export KEY=$ADMIN_API_KEY` 加载。