---
title: "自建 New API 模型网关：统一管理 Claude、OpenAI 和 Gemini，并接入 Claude Code 与 Codex"
description: "用 Zenavo 在自己的服务器上部署 New API，把多个模型服务商统一成一个接口，按人发放密钥和额度，再让 Claude Code、Codex CLI 和 Open WebUI 通过它调用模型。"
date: 2026-11-12
language: zh-CN
url: https://zenavo.app/zh-CN/blog/self-host-new-api
---

# 自建 New API 模型网关：统一管理 Claude、OpenAI 和 Gemini，并接入 Claude Code 与 Codex

团队里有人用 Claude Code，有人用 Codex CLI，还有人在 Open WebUI 里聊天。每个工具各填一份服务商密钥，用量分散在不同账单里，谁用了多少、哪把密钥该收回，都很难说清。

[New API](https://github.com/QuantumNous/new-api) 是一个开源的模型网关：你把 OpenAI、Anthropic、Gemini 等服务商的 API Key 配在它后面，再给每个人或每个工具发一把它自己签发的密钥，并设置可用模型和额度。它同时提供 OpenAI Chat Completions、Responses、Anthropic Messages 和 Gemini 格式的接口，所以常见的编码工具都能直接接入。

这篇文章用 Zenavo 的 New API 模板，把网关部署到你租用或自有的服务器上。服务器、Zenavo 平台和上游模型 API 分别计费；New API 只负责转发和记账，不会让模型调用变便宜。New API 侧重团队多成员的密钥分发与额度记账；如果主要是给自己或小团队的编码代理（Claude Code、Codex）做多协议翻译与故障切换，也可以看更轻量的 [Magpie](https://zenavo.app/zh-CN/blog/self-host-magpie)。

## 部署 New API

先在 Zenavo 中[连接一台 Linux 服务器](https://docs.zenavo.app/zh-CN/servers/add-a-server)，再打开 [New API 模板](https://zenavo.app/deploy?template=new-api)，选择服务器并部署。

当前模板的配置如下：

| 配置 | 值或用途 |
|---|---|
| 镜像 | `calciumion/new-api:latest` |
| HTTP 端口 | `3000` |
| 持久化目录 | `/data`，默认的 SQLite 数据库和日志都在这里 |
| `SESSION_SECRET` | 项目创建时自动生成，用于登录会话 |
| `TZ` | `UTC`，可改成你习惯的时区 |

`latest` 会随上游更新。准备长期使用时，在服务 **设置** 的 **来源** 中把镜像标签改成你验证过的固定版本，并记录下来。

## 绑定域名，立刻完成初始化

在 new-api 服务的 **网络** 页为 `3000` 端口绑定域名，例如 `ai.example.com`，在 DNS 添加指向服务器的 A 记录，等待 HTTPS 生效。步骤见[域名文档](https://docs.zenavo.app/zh-CN/networking/domains)。

第一次打开网站时，New API 会进入初始化向导，由你创建管理员账号。网关拿到上游密钥后就能花钱，所以域名一生效就自己完成初始化，再检查系统设置里是否允许新用户自行注册：只给自己和团队用时，关闭公开注册，由管理员创建账号。

## 添加渠道：接入上游服务商

New API 把每个上游连接叫作 **渠道**。在 **渠道** 页新增一个，选择服务商类型，填入该服务商的 API Key 和要开放的模型，保存后点 **测试**，确认能返回结果。

几点建议：

- 上游密钥只填在渠道里，不要写进 Zenavo 的变量，也不要出现在截图和聊天记录中。
- 为渠道取清楚的名字，比如“Anthropic 官方”，方便以后看日志和停用。
- 只开放实际要用的模型。界面能列出模型，不代表你的上游账号都有权限调用。
- 使用服务商的正式 API 密钥，并遵守其使用条款。不要把个人聊天订阅账号包装成 API 分发给别人。

## 发放密钥和额度

在 **令牌** 页为每个人或每个工具创建一把密钥，设置可用模型、额度和有效期。这把 `sk-` 开头的密钥由 New API 签发，泄露时只需在这里删除它，不必去上游服务商轮换主密钥。

建议按“人 × 工具”分开发放，例如“小王的 Claude Code”和“小王的 Open WebUI”。这样用量统计一目了然，收回权限时也不会误伤别的工具。

## 接入 Claude Code

Claude Code 支持通过环境变量把请求发给自定义的 Anthropic Messages 兼容地址。在你的电脑上设置：

```bash
export ANTHROPIC_BASE_URL="https://ai.example.com"
export ANTHROPIC_AUTH_TOKEN="sk-你在 New API 创建的令牌"
claude
```

`ANTHROPIC_BASE_URL` 只写域名，不要加 `/v1`，Claude Code 会自己拼上 `/v1/messages`。如果请求的模型名与渠道里配置的不一致，可以在 New API 的渠道中设置模型映射，或用 Claude Code 的 `/model` 选择网关提供的模型。如果你想直接在 Claude Code 里用 MCP 和 Skills 查看日志、部署与回滚 Zenavo 服务，可以接着看[用 Claude Code 部署和调试 Zenavo 项目](https://zenavo.app/zh-CN/blog/claude-code-deploy-debug)。

## 接入 Codex CLI

Codex CLI 在 `~/.codex/config.toml` 中定义自定义服务商。下面的模型名换成你在渠道里开放的模型：

```toml
model = "你在渠道里开放的模型名"
model_provider = "newapi"

[model_providers.newapi]
name = "New API"
base_url = "https://ai.example.com/v1"
env_key = "NEWAPI_API_KEY"
wire_api = "responses"
```

然后在终端设置 `export NEWAPI_API_KEY="sk-…"` 再运行 `codex`。注意这里的 `base_url` 要带 `/v1`，与 Claude Code 不同。

## 接入 Open WebUI 与 LobeHub

如果已经按[这篇文章](https://zenavo.app/zh-CN/blog/self-host-open-webui)部署了 Open WebUI，在 **Settings → Admin → Connections** 添加 OpenAI 兼容连接：Base URL 填 `https://ai.example.com/v1`，API Key 填一把专门给 Open WebUI 的令牌。如果用的是 [LobeHub](https://zenavo.app/zh-CN/blog/self-host-lobehub)，同样在服务商设置或 `OPENAI_PROXY_URL` 中填入 `https://ai.example.com/v1` 即可。

两者在同一个 Zenavo 项目里时（用 **添加服务 → 模板** 把 New API 加进 Open WebUI 所在项目），也可以走私有网络：`http://new-api.zenavo.internal:3000/v1`。这样请求不经过公网，详见[私有网络](https://docs.zenavo.app/zh-CN/networking/private)。

## 备份与升级

New API 的账号、渠道和令牌都在 `/data` 卷里，其中包括上游服务商的密钥，备份文件要按密钥同等级别保管。

在维护窗口停止项目，在 new-api 服务的 **备份与恢复** 中备份数据卷，完成后启动项目，并下载一份自行保存。升级前先读目标版本的发行说明，先备份再更换镜像版本。升级如果改动了数据库结构，单纯换回旧镜像不一定能回退，需要恢复升级前的备份。

## 常见问题

**Claude Code 报 404 或连接失败？**
先检查 `ANTHROPIC_BASE_URL` 是否多写了 `/v1`，再在 New API 的日志里看请求是否到达、用的是哪个模型名。

**Codex 提示模型不存在？**
`config.toml` 中的 `model` 必须是渠道里开放、且令牌允许使用的模型名。也确认 `wire_api` 设为 `responses`。

**New API 会保存对话内容吗？**
它会记录调用日志和用量，具体记录哪些字段取决于版本和设置。请求内容仍会发送给上游服务商，网关部署在自己的服务器上，不代表数据只留在本机。

**一台小服务器够用吗？**
New API 本身很轻，主要压力来自并发请求数。多人同时长时间流式输出时，留意服务器的内存和带宽。

从 [New API 模板](https://zenavo.app/deploy?template=new-api)开始：先完成初始化和关闭公开注册，再接入渠道、发放令牌，最后把编码工具指向它。
