New API 是什么
New API 是一个开源的 AI 接口聚合和中转项目,支持 OpenAI、Claude、Gemini、国内大模型等多种 API 格式。它能帮你把不同平台的 AI 接口统一成 OpenAI 兼容格式,方便做 API 中转站、统一管理 Key、按渠道分配额度。
项目地址:https://github.com/QuantumNous/new-api
适合谁:
- 自建 AI API 中转站的站长
- 需要管理多个 AI 平台 Key 的开发者
- 想给团队或客户提供统一 AI 接口的人
准备工作
不管用哪种方式部署,你都需要:
- 一台 Linux 服务器(建议 1 核 1G 以上,推荐 2 核 2G)
- 已解析到服务器的域名(可选,但生产环境建议配)
- 服务器开放 3000 端口(默认端口,可自定义)
- 已安装 Docker(方式一)或 宝塔面板(方式二)或 1Panel(方式三)
获取部署密钥:到 New API 官方文档 或 GitHub Release 页面查看最新版本号。本文以 v0.6.x 为例。
方式一:Docker 部署(推荐)
1. 安装 Docker
如果你的服务器还没装 Docker,执行以下命令一键安装:
curl -fsSL https://get.docker.com | bash -s docker
systemctl enable docker
systemctl start docker
安装完后确认 Docker 正在运行:
docker --version
# 输出类似:Docker version 24.0.x
systemctl status docker
# 显示 active (running) 即正常
2. 创建数据目录
mkdir -p /opt/new-api/data
cd /opt/new-api
3. 编写 docker-compose.yml
在 /opt/new-api/ 目录下创建 docker-compose.yml:
version: '3.8'
services:
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
ports:
- "3000:3000"
volumes:
- ./data:/data
environment:
- SQL_DSN=sqlite:///data/new-api.db
- TZ=Asia/Shanghai
- SESSION_SECRET=random_string_here_change_it
- TOKEN_SECRET=another_random_string_change_it
说明:
SQL_DSN:默认用 SQLite,数据存在./data目录。生产环境建议换成 MySQL 或 PostgreSQL。SESSION_SECRET和TOKEN_SECRET:随便改成长字符串,用于加密会话和令牌。TZ:时区设置,国内建议Asia/Shanghai。
4. 启动服务
docker compose up -d
查看日志确认启动成功:
docker compose logs -f --tail=50
看到类似 listening on 0.0.0.0:3000 就表示启动成功。
5. 首次登录
浏览器访问 http://你的服务器IP:3000,默认管理员账号密码:
- 用户名:
root - 密码:
123456
登录后第一件事:立即修改默认密码!到「个人设置」→「修改密码」。
6. 配置 Nginx 反向代理(可选但强烈建议)
如果需要通过域名 + HTTPS 访问,在宝塔或 1Panel 里创建站点后,添加反向代理配置:
server {
listen 443 ssl http2;
server_name api.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
注意:proxy_set_header Upgrade 和 Connection 两行是 WebSocket 支持,New API 的实时日志功能需要。
方式二:宝塔面板部署
1. 安装宝塔面板
如果还没装宝塔,执行:
wget -O install.sh https://download.bt.cn/install/install_6.0.sh && bash install.sh
安装完成后登录宝塔后台,安装 Docker 管理器插件(在「软件商店」→「Docker」里搜索安装)。
2. 创建站点
在宝塔「网站」→「添加站点」,填入域名(如 api.yourdomain.com),PHP 版本选「纯静态」。
3. 通过 Docker 部署
宝塔装好 Docker 管理器后,到「Docker」→「编排」→「添加编排」:
- 编排名称:
new-api - 把上面的 docker-compose.yml 内容粘贴进去
- 点「提交」,等拉取镜像和启动完成
4. 配置反向代理
回到「网站」→ 点击刚创建的站点 →「反向代理」→「添加反向代理」:
- 代理名称:
new-api - 目标URL:
http://127.0.0.1:3000 - 发送域名:
$host
如果需要 HTTPS,在「SSL」选项卡申请 Let’s Encrypt 证书。
方式三:1Panel 部署
1. 安装 1Panel
curl -sSL https://resource.fit2cloud.com/1panel/package/v1/install.sh -o install.sh && bash install.sh
安装完成后访问 1Panel 后台。
2. 通过容器编排部署
到「容器」→「编排」→「创建编排」:
- 名称:
new-api - 将 docker-compose.yml 内容粘贴进去
- 点击「确认」,等待镜像拉取和容器启动
3. 配置网站反向代理
到「网站」→「创建网站」→「反向代理」:
- 主域名:
api.yourdomain.com - 代理地址:
http://127.0.0.1:3000 - HTTPS:勾选并申请证书
使用 MySQL(生产环境推荐)
SQLite 适合个人测试,生产环境建议用 MySQL。修改 docker-compose.yml 的环境变量:
environment:
- SQL_DSN=root:yourpassword@tcp(127.0.0.1:3306)/newapi?charset=utf8mb4&parseTime=True&loc=Local
- SESSION_SECRET=your_session_secret
- TOKEN_SECRET=your_token_secret
注意:如果 MySQL 也在 Docker 里,127.0.0.1 要换成 MySQL 容器的网络地址或容器名。建议把 MySQL 也放到同一个 docker-compose 里:
services:
mysql:
image: mysql:8.0
container_name: new-api-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: newapi
volumes:
- mysql_data:/var/lib/mysql
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
ports:
- "3000:3000"
volumes:
- ./data:/data
environment:
- SQL_DSN=root:your_root_password@tcp(mysql:3306)/newapi?charset=utf8mb4&parseTime=True&loc=Local
- TZ=Asia/Shanghai
depends_on:
- mysql
volumes:
mysql_data:
更新 New API
# 拉取最新镜像
docker compose pull
# 重建容器
docker compose up -d
# 查看更新后的版本
docker compose logs -f --tail=20
更新前建议先备份数据:
# SQLite 备份
cp -r /opt/new-api/data /opt/new-api/data_backup_$(date +%Y%m%d)
# MySQL 备份
docker exec new-api-mysql mysqldump -u root -p newapi > /opt/new-api/backup_$(date +%Y%m%d).sql
常见问题
Q1:访问 3000 端口打不开
- 检查防火墙/安全组是否放行 3000 端口
- 执行
docker compose ps确认容器状态是 Up - 查看日志:
docker compose logs --tail=50
Q2:反向代理后 WebSocket 连不上
- 确认 Nginx 配置了
Upgrade和Connection头 - 宝塔用户检查「反向代理」配置文件里是否有 WebSocket 支持
Q3:添加渠道后测试不通
- 检查 API Key 是否正确且未过期
- 检查服务器能否访问目标 API 地址(
curl https://api.openai.com) - 如果用了代理,在环境变量中设置
HTTPS_PROXY
Q4:数据迁移怎么做
- SQLite:直接复制
data/new-api.db文件到新服务器 - MySQL:用
mysqldump导出再导入 - 迁移后记得更新域名解析和 SSL 证书
Q5:并发量高时响应慢
- SQLite 在高并发下性能有限,建议切换 MySQL 或 PostgreSQL
- 增加服务器内存到 2G 以上
- 在 New API 后台合理设置渠道权重和负载均衡
小结
New API 是目前比较好用的开源 AI 接口中转方案。Docker 部署最简单,宝塔和 1Panel 对不熟悉命令行的站长更友好。建议生产环境用 MySQL + Nginx 反代 + HTTPS,定期备份数据库。
来源:
















暂无评论内容