01. 概念与整体架构

New API 是做什么的

New API 是一个大模型 API 网关。它不负责登录 ChatGPT / Claude / Gemini 账号,也不直接变出免费额度;它负责把已经可用的上游 API 统一管理起来。

它主要做这些事:

  • 多渠道聚合:OpenAI、Claude、Gemini、DeepSeek、OpenRouter、CPA 等。
  • 用户管理:给不同用户创建账号、分组、额度。
  • Token 分发:每个用户生成自己的 API key。
  • 日志统计:记录调用模型、token、错误、用量。
  • 模型计费:为不同模型设置价格,按额度扣费。
  • 路由转发:客户端只连 New API,New API 再转发到上游渠道。

CPA 和 New API 的关系

CPA 是“凭据层”,New API 是“网关层”。

[ 用户 / 客户端 ]
      |
      | Base URL: http://服务器公网IP:3000/v1
      | API Key: 用户在 New API 生成的 token
      v
[ New API :3000 ]
      |
      | 渠道:CPA
      | Base URL: http://172.17.0.1:8317
      | API Key: CPA 的 api-key
      v
[ CPA / CLIProxyAPI :8317 ]
      |
      | OAuth 凭据、账号池、代理出口
      v
[ ChatGPT / Claude / Gemini 等上游 ]

New API 只看到 CPA 是一个 OpenAI 兼容的上游 endpoint。用户不需要知道 CPA 的 key,也不需要直接访问 8317

为什么还要加 New API

只自己用时,CPA 直接给客户端调用就够了。

需要下面能力时,才有必要加 New API:

  • 给朋友或团队开独立账号。
  • 给不同用户分配不同额度。
  • 想看每个人的调用日志和用量。
  • 想把 CPA、官方 key、OpenRouter、DeepSeek 等渠道统一到一个入口。
  • 想以后做计费、充值、分组路由。

本次实际架构

你的 Mac
  |
  | 浏览器访问后台
  | http://服务器公网IP:3000
  |
  | 客户端调用 API
  | http://服务器公网IP:3000/v1
  v
腾讯云 VPS
  |
  | Docker bridge
  |
  +-- new-api 容器
  |     镜像:calciumion/new-api:latest
  |     端口:0.0.0.0:3000 -> 容器 3000
  |     数据:/root/new-api/data -> /data
  |
  +-- cli-proxy-api 容器
  |     端口:8317
  |     New API 从容器内用 http://172.17.0.1:8317 访问它
  |
  +-- mihomo 容器
        给 CPA 提供代理出口

注意 127.0.0.1 的含义

New API 在容器里访问 127.0.0.1,指的是 New API 容器自己,不是宿主机,也不是 CPA 容器。

所以 New API 渠道里的 CPA 地址不要填:

http://127.0.0.1:8317

本次部署填的是:

http://172.17.0.1:8317

172.17.0.1 是 Docker 默认 bridge 网络里,容器访问宿主机的网关地址。