# GPT2API Node - 部署文档 ## 🎉 系统功能 ### 核心功能 - ✅ OpenAI Codex 反向代理服务 - ✅ 完整的 Web 管理后台 - ✅ 多账号管理和批量操作 - ✅ 自动 Token 刷新机制 - ✅ 负载均衡(轮询/随机/最少使用) - ✅ API Key 管理和认证 - ✅ 请求统计和数据分析 - ✅ 实时活动记录 ### 管理后台功能 #### 1. 仪表盘 - 系统概览和实时统计 - API Keys 数量 - Token 账号数量 - 今日请求数和成功率 - 最近活动记录(API请求、账号添加等) #### 2. API Keys 管理 - 创建和管理 API Keys - 查看使用统计 - 启用/禁用 API Key - 删除 API Key #### 3. 账号管理 - **批量导入 Token**(支持 JSON 文件和多文件) - **批量删除账号**(支持多选) - 手动添加账号 - 查看账号额度和使用情况 - 刷新账号额度(单个/全部) - 负载均衡策略配置 - 账号总数实时显示 #### 4. 数据分析 - **请求量趋势图表**(基于真实数据) - 模型使用分布 - 账号详细统计(带滚动条) - API 请求日志(带滚动条) - 支持时间范围筛选(24小时/7天/30天) #### 5. 系统设置 - 修改管理员密码 - 负载均衡策略设置 - GitHub 项目链接 ## 🚀 快速部署 ### 1. 环境要求 - Node.js 16+ - npm 或 yarn ### 2. 安装步骤 ```bash # 克隆项目 git clone https://github.com/lulistart/gpt2api-node.git cd gpt2api-node # 安装依赖 npm install # 初始化数据库 npm run init-db # 启动服务 npm start ``` ### 3. 访问管理后台 打开浏览器访问:`http://localhost:3000/admin` 默认管理员账户: - 用户名:`admin` - 密码:`admin123` **重要**:首次登录后请立即修改密码! ## 📁 项目结构 ``` gpt2api-node/ ├── src/ │ ├── config/ │ │ └── database.js # 数据库配置和初始化 │ ├── middleware/ │ │ └── auth.js # 认证中间件 │ ├── models/ │ │ └── index.js # 数据模型(User、ApiKey、Token、ApiLog) │ ├── routes/ │ │ ├── auth.js # 认证路由(登录、登出、修改密码) │ │ ├── apiKeys.js # API Keys 管理路由 │ │ ├── tokens.js # Tokens 管理路由(含批量删除) │ │ ├── stats.js # 统计路由(含最近活动) │ │ └── settings.js # 设置路由 │ ├── scripts/ │ │ └── initDatabase.js # 数据库初始化脚本 │ ├── index.js # 主入口文件 │ ├── tokenManager.js # Token 管理模块 │ └── proxyHandler.js # 代理处理模块 ├── public/ │ └── admin/ │ ├── login.html # 登录页面 │ ├── index.html # 管理后台主页 │ └── js/ │ └── admin.js # 管理后台脚本 ├── database/ │ └── app.db # SQLite 数据库 ├── models.json # 模型配置 ├── package.json ├── README.md └── DEPLOYMENT.md ``` ## 🔧 配置说明 ### 环境变量 创建 `.env` 文件: ```env # 服务端口 PORT=3000 # Session 密钥(生产环境必须修改) SESSION_SECRET=your-random-secret-key-change-in-production # 负载均衡策略:round-robin(轮询)、random(随机)、least-used(最少使用) LOAD_BALANCE_STRATEGY=round-robin # 模型配置文件 MODELS_FILE=./models.json # 数据库路径 DATABASE_PATH=./database/app.db ``` ### 负载均衡策略 支持三种策略: 1. **round-robin(轮询)**:按顺序依次使用每个账号,默认策略 2. **random(随机)**:随机选择一个可用账号 3. **least-used(最少使用)**:选择请求次数最少的账号 可通过环境变量或管理后台配置。 ## 📊 数据库结构 ### users 表 - 管理员账户信息 - 字段:id, username, password_hash, created_at ### api_keys 表 - API 密钥管理 - 字段:id, name, key, is_active, usage_count, last_used_at, created_at ### tokens 表 - OpenAI Token 账户 - 字段:id, name, email, account_id, access_token, refresh_token, id_token, expired_at, last_refresh_at, is_active, total_requests, success_requests, failed_requests, quota_total, quota_used, quota_remaining, created_at ### api_logs 表 - API 请求日志 - 字段:id, api_key_id, token_id, model, endpoint, status_code, error_message, created_at ## 🔐 安全建议 ### 生产环境配置 1. **修改默认密码** - 首次登录后立即修改管理员密码 - 使用强密码(至少8位,包含大小写字母、数字、特殊字符) 2. **设置环境变量** ```bash SESSION_SECRET=$(openssl rand -base64 32) ``` 3. **启用 HTTPS** - 使用 Nginx 或 Caddy 作为反向代理 - 配置 SSL 证书 - 设置 `cookie.secure = true` 4. **防火墙配置** - 只开放必要的端口 - 限制管理后台访问 IP 5. **定期备份** - 备份 `database/app.db` 数据库文件 - 备份环境变量配置 ### Nginx 反向代理示例 ```nginx server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name your-domain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ## 🎯 使用指南 ### 1. 创建 API Key 1. 登录管理后台 2. 进入 **API Keys** 页面 3. 点击 **创建 API Key** 4. 输入名称(可选) 5. 复制生成的 API Key(只显示一次) ### 2. 导入 Token 账号 #### 方式一:批量导入 JSON 1. 准备 JSON 文件: ```json [ { "access_token": "your_access_token", "refresh_token": "your_refresh_token", "id_token": "your_id_token", "account_id": "account_id", "email": "email@example.com", "name": "账号名称" } ] ``` 2. 进入 **账号管理** 页面 3. 点击 **导入 JSON** 4. 选择文件或粘贴 JSON 内容 5. 点击 **预览导入** 6. 确认后点击 **确认导入** #### 方式二:手动添加 1. 进入 **账号管理** 页面 2. 点击 **手动添加** 3. 填写 Access Token 和 Refresh Token 4. 点击 **添加** ### 3. 批量删除账号 1. 进入 **账号管理** 页面 2. 勾选要删除的账号 3. 点击 **删除选中** 按钮 4. 确认删除 ### 4. 使用 API ```bash curl http://localhost:3000/v1/chat/completions \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.3-codex", "messages": [ {"role": "user", "content": "Hello!"} ] }' ``` ## 🐛 故障排除 ### 无法访问管理后台 1. 检查服务是否启动:`npm start` 2. 检查端口是否被占用:`netstat -ano | findstr :3000` 3. 检查防火墙设置 ### 数据库初始化失败 ```bash # 删除旧数据库 rm database/app.db # 重新初始化 npm run init-db ``` ### Token 刷新失败 1. 检查网络连接 2. 确认 refresh_token 是否有效 3. 重新导入新的 token ### API 请求失败 1. 检查 API Key 是否正确 2. 确保有可用的 Token 账号 3. 查看管理后台的请求日志 4. 检查账号是否被禁用 ### 请求趋势图表显示异常 - 图表数据基于 `api_logs` 表的真实请求记录 - 如果没有请求记录,图表会显示为空 - 发送几次 API 请求后刷新页面查看 ## 📝 维护建议 1. **定期备份数据库** ```bash cp database/app.db database/app.db.backup.$(date +%Y%m%d) ``` 2. **监控日志** - 查看终端输出 - 检查请求日志 3. **更新依赖** ```bash npm update ``` 4. **清理旧日志** - 定期清理 `api_logs` 表中的旧记录 ## 🔄 更新日志 ### v2.0.0 (2026-02-17) - ✅ 添加批量删除账号功能 - ✅ 添加仪表盘最近活动记录 - ✅ 添加 GitHub 项目链接 - ✅ 移除前台页面,根路径重定向到管理后台 - ✅ 修复模型列表(删除不存在的 gpt-5.3-codex-spark) - ✅ 优化终端日志输出 - ✅ 账号管理页面显示账号总数 - ✅ 账号详细统计和请求日志添加滚动条 - ✅ 修复请求趋势图表,使用真实数据 ### v1.0.0 - ✅ 基础管理系统 - ✅ API Keys 管理 - ✅ Tokens 管理 - ✅ 数据统计 ## 📞 支持 - GitHub: https://github.com/lulistart/gpt2api-node - Issues: https://github.com/lulistart/gpt2api-node/issues ## 📄 许可证 MIT License