S2A Manager 是一个面向 Sub2API 站点的运维管理面板,用来集中管理多个 Sub2API 后台连接、分组倍率、账号调度、倍率采集、上游可用性检测、公告和任务日志。
它不是 Sub2API 本体的替代品,而是站长日常维护 Sub2API 的辅助工具。项目重点解决长期运营中容易反复出现的问题:倍率频繁调整、上游账号不稳定、采集源倍率变化、分组或账号重建后绑定失效、自动化任务不可见、日志和历史残留难排查等。
- 当前项目:S2AM-GO
- 归档仓库:langrenjh-alt/S2A-Manager
- 参考中转站:https://z30.top
- 使用说明:使用说明.md
- Ubuntu 部署:部署指南.md
- 许可证:MIT
- 维护多个 Sub2API 管理连接。
- 支持连接测试、启停、手动同步和自动同步模式。
- 每个连接可独立管理分组、账号、采集源、公告、日志和监控规则。
- 查看、创建、编辑和删除目标 Sub2API 分组。
- 为分组绑定一个或多个采集源分组。
- 支持首个源倍率、平均值、最低值、最高值和自定义公式计算目标倍率。
- 支持倍率偏移,例如在源倍率基础上统一加减固定值。
- 支持手动应用规则,也支持 worker 在采集完成或自动同步时应用规则。
- 新增、编辑、删除账号,并维护平台、类型、状态、调度开关、并发、优先级、负载权重、过期时间等字段。
- 支持账号模型测试、刷新凭证、清除错误、启停调度。
- 支持为账号绑定采集源分组,并用同一套倍率规则计算账号倍率。
- 支持账号余额查询、单账号余额阈值和余额 Webhook 预警。
- 支持账号优先级规则:可按账号倍率排序,也可结合 Sub2API 流式使用记录的平均首字时间与账号倍率计算调度优先级;综合策略支持按分钟设置回看窗口。
- 在面板内维护 Sub2API 或 New API 类型的采集源。
- 支持自动登录或手动 Token 认证。
- 支持配置采集间隔、充值倍率和 New-Api-User。
- 定时采集源站分组倍率、模型价格和倍率变更记录。
- 展示原始倍率、写入倍率和换算后的生效倍率。
- 采集完成后可自动触发已启用的分组倍率、账号倍率和账号优先级规则。
- 为账号配置定时可用性检测规则。
- 支持指定检测模型、检测间隔、失败阈值和暂停时长。
- 连续失败达到阈值后可自动暂停账号调度。
- 暂停期间仍会继续探活;检测恢复后可自动恢复调度。
- 账号暂停期间可临时排除对应采集源分组参与目标分组倍率计算,避免故障账号影响自动倍率。
- 提供 Uptime 结果、最近检测结果和自动暂停记录。
- 维护 Sub2API 常用站点设置。
- 配置倍率变化公告规则。
- 只有当目标分组倍率实际变化时,才会触发自动公告发布。
- 查看 Web、数据库、worker 心跳、采集源、自动同步连接、上游检测规则和最近任务日志状态。
- 任务日志写入本地文件,支持按连接、级别、状态、动作、目标、时间和关键词筛选。
- 支持日志保留时间、最低记录级别、清理过期日志和清空日志。
- 提供“清理无效数据”维护操作,用于处理目标分组或账号删除、源站分组删除或改名、采集源删除、连接不可用等造成的本地残留。
- Next.js 14 / React 18
- tRPC 11 / TanStack Query 5
- Prisma 5 / PostgreSQL
- Tailwind CSS / Radix UI / lucide-react
- 后台 worker:
tsx src/worker/monitor.ts
- Node.js 20 或更高版本
- npm
- PostgreSQL
- 可访问目标 Sub2API 管理接口的网络环境
项目当前使用 PostgreSQL。旧版 SQLite 数据不会通过 prisma migrate deploy 自动迁移到 PostgreSQL,已有生产数据升级前请先备份并单独准备迁移方案。
管理台功能和操作流程请看 使用说明.md。
npm ci
cp .env.example .env
npx prisma migrate deploy
npm run dev开发服务默认监听:
http://127.0.0.1:3000
首次访问会进入初始化页面,创建第一个管理员账号。
后台自动任务需要单独启动:
npm run workerWeb 服务和 worker 是两个进程。只启动 Web 可以使用管理页面,但自动采集、自动同步、上游检测、余额 Webhook 预警、日志清理和 worker 心跳都依赖 worker。
.env.example 提供最小配置:
DATABASE_URL="postgresql://s2amanager:password@127.0.0.1:5432/s2amanager?schema=public"
APP_SECRET="change-me-to-a-24-plus-char-secret!"
ENCRYPTION_KEY="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="生产环境必须替换:
DATABASE_URL:PostgreSQL 连接字符串。APP_SECRET:登录会话签名密钥,至少 24 位随机字符串。ENCRYPTION_KEY:32 字节 base64 字符串,可用openssl rand -base64 32生成。已有加密数据后不要更换,否则已保存的 API Key 和源站凭证无法解密。
可选环境变量:
S2A_LOG_DIR:本地任务日志目录,默认是项目目录下的logs/。S2A_WORKER_INTERVAL_SECONDS:数据库未配置时的 worker 默认运行间隔,默认 600 秒。S2A_ACCOUNT_BALANCE_ALERT_INTERVAL_SECONDS:数据库未配置时的余额预警默认检查间隔,默认 300 秒。S2A_UPSTREAM_MONITOR_TIMEOUT_SECONDS:数据库未配置时的上游检测超时,默认 45 秒。S2A_UPSTREAM_MONITOR_CONCURRENCY:数据库未配置时的上游检测并发,默认 3。S2A_WORKER_ONCE=1:只执行一轮 worker 后退出,适合排查问题。
worker 运行间隔、上游检测超时和检测并发也可以在管理台右上角“应用设置”里调整。数据库中的设置优先于环境变量。
npm run dev
npm run build
npm run start
npm run worker
npm run lint
npm run prisma:generate
npm run prisma:push
npx prisma validate
npx prisma migrate deploy说明:
npm run dev:启动开发 Web 服务。npm run build:生成 Prisma Client 并构建 Next.js。npm run start:启动生产 Web 服务。npm run worker:启动后台 worker。npx prisma migrate deploy:在 PostgreSQL 上应用已提交的数据库迁移。
Ubuntu 部署请优先阅读:部署指南.md
基本流程:
npm ci
npx prisma migrate deploy
npm run build
npm run start生产环境还需要同时托管 worker:
npm run worker推荐使用 systemd、pm2 或其他进程管理工具分别托管 Web 和 worker。不要把 .env、生产日志、构建产物、依赖目录、数据库备份或压缩包提交到仓库。
- 先添加 Sub2API 连接,再按需配置采集源、分组规则、账号规则和上游检测。
- 倍率规则只有开启“使用倍率规则”后才会被手动或自动应用。
- 采集源的“充值倍率”会参与生效倍率换算,配置前应确认源站余额单位和倍率含义。
- 上游检测规则设置为 1 分钟时,建议把 worker 运行间隔也设置为 1 分钟。
- 单轮 worker 任务耗时超过运行间隔时,下一轮会在当前轮结束后继续执行,不会并发重叠执行。
- 删除采集源、目标分组或账号后,如果历史绑定仍有残留,可在“服务状态”页面执行“清理无效数据”。
- 中文公告按 UTF-8 JSON 发送;如果远端仍出现乱码,请检查反向代理和目标 Sub2API 站点的编码处理。
README 不再维护手写提交流水账,避免文档频繁过期。完整更新记录请查看: