
从零搭建 AI 模型中转网关部署、渠道、定价、装修全记录本文记录了使用 new-api 搭建 AI 模型 API 聚合网关的完整过程涵盖 Docker 部署、Cloudflare Tunnel 公网接入、多渠道配置、定价体系、前台装修等技术细节以及踩过的所有坑。适合想自己搭建 API 中转服务的同学参考。new-api 是 one-api 的分支相比原版主要多了以下能力OpenAI Anthropic 双协议兼容用户不用改代码换 base_url 就能用多渠道负载均衡 自动故障转移同模型多通道一个挂了自动切完整计费体系按 token 计费、分组折扣、充值额度React 前端主页/定价/文档/关于全可自定义yamlversion: ‘3’services:new-api:image: calciumion/new-api:latestcontainer_name: new-apirestart: alwaysports:- “3000:3000”volumes:- ./data:/data- ./logs:/app/logsenvironment:- TZAsia/Shanghai- INITIAL_ROOT_TOKENyour_initial_tokenbash docker compose up -d启动后访问http://localhost:3000默认管理员账号root/123456第一时间改密码。2.2 坑数据库默认用 SQLite数据库文件在/data/one-api.db不是new-api.db后者是空壳直接改 SQLite 不生效——有内存缓存改完必须重启容器或通过 API 操作量大了可以换 MySQL/PostgreSQL个人站 SQLite 够用三、公网接入Cloudflare Tunnel3.1 为什么用 Tunnel不用开放公网端口安全自带 HTTPS不用管证书续期CDN 加速3.2 部署 cloudflareddockerrun-d--namecloudflared\--restartunless-stopped\cloudflare/cloudflared:latest\tunnel --no-autoupdate run3.3 最大的坑远程配置 vs 本地配置cloudflared 有两种配置模式本地配置config.yml简单场景远程配置CF API 管理cloudflared 从 CF API 拉取如果 tunnel 开了allow_remote_config改本地config.yml完全不生效必须通过 CF API 修改curl-XPUT\https://api.cloudflare.com/client/v4/accounts/{account_id}/cfd_tunnel/{tunnel_id}/configurations\-HAuthorization: Bearer {cf_token}\-HContent-Type: application/json\-d{config:{ingress:[{hostname:api.yourdomain.com,service:http://localhost:3000},{service:http_status:404}]}}改完看日志出现Updated to new configuration才生效。3.4 其他 Tunnel 坑回源必须 HTTP 端口指 HTTPS 端口会报400 plain HTTPDNS 加 CNAMEapi.yourdomain.com → {tunnel_id}.cfargotunnel.com四、渠道配置4.1 渠道是什么一个渠道 一个上游 API 供应商。同一个模型可以配置多个渠道实现冗余。4.2 添加渠道字段说明类型OpenAI / Anthropic / 自定义Base URL上游 API 地址密钥上游 API Key模型支持哪些模型逗号分隔分组对哪些用户组开放4.3 负载均衡 故障转移同模型多渠道自动轮询。渠道禁用后余额耗尽、上游报错自动切到其他渠道用户无感。4.4 坑分组字段是 comboboxJS 模拟 Enter 无效必须真实输入触发下拉PUT/api/channel/传 GET 完整对象有时报「无效的参数」改用 UI 编辑4.5 Anthropic 协议接入 Claude Code 用户需配 Anthropic 协议渠道。端点分类用OpenAI 兼容和Anthropic 兼容——不要写成OpenAI 兼容和Claude Code 接入前者是协议名后者是工具名。五、定价体系5.1 核心参数参数含义ModelRatio输入 token 倍率1 $0.002/1KCompletionRatio输出 ÷ 输入倍率GroupRatio用户组折扣0.5 5折USDExchangeRate1 多少元Price充 1 付多少钱5.2 定价公式售价 $/M ModelRatio × 2 ModelRatio 官方输入价 $/M × 0.5海外 ModelRatio 官方输入价 ¥/M ÷ 14.4国内 CompletionRatio 官方输出价 ÷ 官方输入价5.3 货币与充值货币符号不要用 多数字体不渲染 1 1 USD 额度 充值汇率 0.5充 1 付 0.5 元 最低充值 10 关键Price必须等于USDExchangeRate否则充值金额和展示价格对不上。5.4 分组折扣GroupRatio{default:1,lite:0.5}default正常价新用户默认进这组lite5 折优惠5.5 新用户额度QuotaForNewUser 5000000 10 QuotaForInviter 5000000邀请人得 10 QuotaForInvitee 5000000被邀请人得 10 六、前台装修6.1 可自定义内容选项格式说明HomePageContentHTML主页AboutHTML关于页Notice纯文本顶部公告条Footer纯文本页脚announcementsJSON公告卡片faqJSONFAQ用户协议/隐私政策Markdown不能用 HTML6.2 坑协议必须用 Markdown填 HTML 会露出源码公告 type 只有success/ongoing/default没有info主页内容区dangerouslySetInnerHTML渲染script 不执行API 返回 snake_casehome_page_content设置用 camelCaseHomePageContent不要写死模型版本号——只写厂商名加减模型不用改主页不要写与官方同价——没有差异化优势6.3 API 操作所有配置可通过 API 操作不用每次登录后台loginapi(POST,/api/user/login,{username:admin,password:xxx})tokenlogin[data][access_token]rapi(GET,/api/option/,tokentoken)api(PUT,/api/option/,{key:HomePageContent,value:divHTML/div},tokento## 七、支付方案对比### 7.1 支付方案选择注意事项支付接入是搭建 API 中转站的重要环节不同方案有不同的资质要求和成本结构。以下是几种常见方案的对比### 7.2 各方案对比|方案名称|是否需要营业执照|成本构成开户费费率|自动化程度|适用场景|优点|缺点||--------|----------------|----------------------|----------|---------|------|------||官方直连|是|无开户费费率约0.6%|全自动实时到账|有营业执照追求低费率与正规化|费率低用户支付体验好官方支持稳定|必须营业执照申请流程较长||第三方支付平台|是|开户费88-118元另加1-2%平台费0.6%官方费率|全自动|有执照但不愿直接对接官方想快速接入|接入简单支持多通道|实际总成本高于直连且依赖第三方平台||卡密充值|否|0元自行生成卡密通过支付手动确认|手动需运营人员后台确认充值|无营业执照个人/小团队测试阶段|零成本无资质门槛灵活|完全手动用户充值体验差效率低||办理执照后接入|否→是办理后获得|办执照几十元自己办或代办几百元后续可走直连或第三方费率|取得执照后方可全自动|希望长远正规运营愿意先花时间办理执照|一次性投入后续可享受正规支付渠道|办理周期1-2周有一定时间成本|2周后全自动|## 八、踩坑总结-**Docker**绝不改 systemd docker 配置不擅自 restart docker拉镜像用国内源-**Tunnel**远程配置模式改本地不生效回源必须 HTTP-**API**分页用 ?pageN直接改 SQLite 不生效-**装修**协议用 Markdown不写死型号不## 常见问题FAQ**Q1忘记了管理员密码如何重置**如果邮箱/SMTP 配置可用可通过「忘记密码」流程重置如果无法收到邮件需要通过直接操作数据库来重置。对于默认的 SQLite执行 bash dockerexec-it new-api sqlite3/data/one-api.db然后更新users表中对应用户的密码字段需使用 bcrypt 哈希后的值。也可以重新设置环境变量INITIAL_ROOT_TOKEN并重启容器再用该 token 登录后修改密码。Q2如何查看详细的请求日志方便排查上游 API 错误默认情况下 new-api 会将请求日志输出到容器标准输出通过docker logs new-api即可查看。如需更详细的请求/响应内容可以在docker-compose.yml中增加环境变量-LOGGING_LEVELdebug重启后日志将包含完整的请求参数与返回体。此外在管理后台的「系统设置」中开启「日志记录」功能也可以在界面上查看历史请求。Q3如何在不重启服务的情况下新增模型只需要在对应渠道的「模型」字段中添加新的模型标识与上游 API 返回的模型 ID 完全一致多个模型用英文逗号分隔。添加后无需重启new-api 会在下一次请求时自动识别新模型并路由到该渠道。Q4从 SQLite 切换到 MySQL/PostgreSQL 需要注意什么在docker-compose.yml中引入对应的数据库服务如 MySQL并配置环境变量SQL_DRIVERmysqlSQL_DSNuser:passwordtcp(mysql:3306)/newapi?charsetutf8mb4parseTimeTruelocLocal首次启动前需要手动创建数据库并导入 new-api 的表结构可从项目中获取 SQL 文件。如需迁移现有 SQLite 数据建议先通过 new-api 的 API 导出关键配置再导入新库避免直接拷贝数据库文件。Q5上游 API 经常触发限流或超时怎么办为同一模型配置多个渠道例如不同供应商的 key 或多个同供应商的子账号即可。new-api 会自动在同模型的多个渠道间轮询当一个渠道因限流被禁用后流量会自动转移到其他可用渠道用户端无感知。此外可以在渠道设置中适当调整「超时时间」和「重试次数」## 七、支付方案对比7.1 支付方案选择注意事项支付接入是搭建 API 中转站的重要环节不同方案有不同的资质要求和成本结构。以下是几种常见方案的对比7.2 各方案对比方案名称是否需要营业执照成本构成开户费费率自动化程度适用场景优点缺点官方直连是无开户费费率约0.6%全自动实时到账有营业执照追求低费率与正规化费率低用户支付体验好官方支持稳定必须营业执照申请流程较长第三方支付平台是开户费88-118元另加1-2%平台费0.6%官方费率全自动有执照但不愿直接对接官方想快速接入接入简单支持多通道实际总成本高于直连且依赖第三方平台卡密充值否0元自行生成卡密通过支付手动确认手动需运营人员后台确认充值无营业执照个人/小团队测试阶段零成本无资质门槛灵活完全手动用户充值体验差效率低办理执照后接入否→是办理后获得办执照几十元自己办或代办几百元后续可走直连或第三方费率取得执照后方可全自动希望长远正规运营愿意先花时间办理执照一次性投入后续可享受正规支付渠道办理周期 1-2 周有一定时间成本