Files
gpt2api-node/DEPLOYMENT.md

8.8 KiB
Raw Permalink Blame History

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

负载均衡策略

支持三种策略:

  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. 设置环境变量

    SESSION_SECRET=$(openssl rand -base64 32)
    
  3. 启用 HTTPS

    • 使用 Nginx 或 Caddy 作为反向代理
    • 配置 SSL 证书
    • 设置 cookie.secure = true
  4. 防火墙配置

    • 只开放必要的端口
    • 限制管理后台访问 IP
  5. 定期备份

    • 备份 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

  1. 登录管理后台
  2. 进入 API Keys 页面
  3. 点击 创建 API Key
  4. 输入名称(可选)
  5. 复制生成的 API Key只显示一次

2. 导入 Token 账号

方式一:批量导入 JSON

  1. 准备 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": "账号名称"
  }
]
  1. 进入 账号管理 页面
  2. 点击 导入 JSON
  3. 选择文件或粘贴 JSON 内容
  4. 点击 预览导入
  5. 确认后点击 确认导入

方式二:手动添加

  1. 进入 账号管理 页面
  2. 点击 手动添加
  3. 填写 Access Token 和 Refresh Token
  4. 点击 添加

3. 批量删除账号

  1. 进入 账号管理 页面
  2. 勾选要删除的账号
  3. 点击 删除选中 按钮
  4. 确认删除

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!"}
    ]
  }'

🐛 故障排除

无法访问管理后台

  1. 检查服务是否启动:npm start
  2. 检查端口是否被占用:netstat -ano | findstr :3000
  3. 检查防火墙设置

数据库初始化失败

# 删除旧数据库
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. 定期备份数据库

    cp database/app.db database/app.db.backup.$(date +%Y%m%d)
    
  2. 监控日志

    • 查看终端输出
    • 检查请求日志
  3. 更新依赖

    npm update
    
  4. 清理旧日志

    • 定期清理 api_logs 表中的旧记录

🔄 更新日志

v2.0.0 (2026-02-17)

  • 添加批量删除账号功能
  • 添加仪表盘最近活动记录
  • 添加 GitHub 项目链接
  • 移除前台页面,根路径重定向到管理后台
  • 修复模型列表(删除不存在的 gpt-5.3-codex-spark
  • 优化终端日志输出
  • 账号管理页面显示账号总数
  • 账号详细统计和请求日志添加滚动条
  • 修复请求趋势图表,使用真实数据

v1.0.0

  • 基础管理系统
  • API Keys 管理
  • Tokens 管理
  • 数据统计

📞 支持

📄 许可证

MIT License