8.8 KiB
8.8 KiB
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. 安装步骤
# 克隆项目
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 文件:
# 服务端口
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
负载均衡策略
支持三种策略:
- round-robin(轮询):按顺序依次使用每个账号,默认策略
- random(随机):随机选择一个可用账号
- 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
🔐 安全建议
生产环境配置
-
修改默认密码
- 首次登录后立即修改管理员密码
- 使用强密码(至少8位,包含大小写字母、数字、特殊字符)
-
设置环境变量
SESSION_SECRET=$(openssl rand -base64 32) -
启用 HTTPS
- 使用 Nginx 或 Caddy 作为反向代理
- 配置 SSL 证书
- 设置
cookie.secure = true
-
防火墙配置
- 只开放必要的端口
- 限制管理后台访问 IP
-
定期备份
- 备份
database/app.db数据库文件 - 备份环境变量配置
- 备份
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
- 登录管理后台
- 进入 API Keys 页面
- 点击 创建 API Key
- 输入名称(可选)
- 复制生成的 API Key(只显示一次)
2. 导入 Token 账号
方式一:批量导入 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": "账号名称"
}
]
- 进入 账号管理 页面
- 点击 导入 JSON
- 选择文件或粘贴 JSON 内容
- 点击 预览导入
- 确认后点击 确认导入
方式二:手动添加
- 进入 账号管理 页面
- 点击 手动添加
- 填写 Access Token 和 Refresh Token
- 点击 添加
3. 批量删除账号
- 进入 账号管理 页面
- 勾选要删除的账号
- 点击 删除选中 按钮
- 确认删除
4. 使用 API
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!"}
]
}'
🐛 故障排除
无法访问管理后台
- 检查服务是否启动:
npm start - 检查端口是否被占用:
netstat -ano | findstr :3000 - 检查防火墙设置
数据库初始化失败
# 删除旧数据库
rm database/app.db
# 重新初始化
npm run init-db
Token 刷新失败
- 检查网络连接
- 确认 refresh_token 是否有效
- 重新导入新的 token
API 请求失败
- 检查 API Key 是否正确
- 确保有可用的 Token 账号
- 查看管理后台的请求日志
- 检查账号是否被禁用
请求趋势图表显示异常
- 图表数据基于
api_logs表的真实请求记录 - 如果没有请求记录,图表会显示为空
- 发送几次 API 请求后刷新页面查看
📝 维护建议
-
定期备份数据库
cp database/app.db database/app.db.backup.$(date +%Y%m%d) -
监控日志
- 查看终端输出
- 检查请求日志
-
更新依赖
npm update -
清理旧日志
- 定期清理
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