查看: 113|回复: 0

【教程6】New API 部署实战 — Docker Compose 一键搭建你的API中转站

[复制链接]

18

主题

0

回帖

58

积分

管理员

积分
58
发表于 2026-5-14 17:05:37 | 显示全部楼层 |阅读模式
搞定了服务器和 Docker,现在到了最关键的一步——部署 New API,让你的中转站真正跑起来。本文提供完整的 docker-compose.yml 配置,从数据库到应用一条龙部署。

一、New API 是什么?

New API(原名 One API)是目前最流行的开源 API 中转管理系统,GitHub 10k+ Star。核心功能:



  • 对接 OpenAI / Anthropic / Google / Azure 等 100+ 模型
  • 用户注册、Key管理、额度充值、日志统计
  • 多上游负载均衡、自动故障切换
  • 支持 OpenAI、Anthropic 等标准 API 格式转发
  • 内置 Web 管理面板和用户前台


二、准备工作



  • 一台安装了 Docker 和 docker compose 的服务器(参考教程5)
  • 一个域名已经解析到服务器(参考教程2)
  • 至少一个可用的 OpenAI / Anthropic API Key(参考教程3)


三、创建部署目录结构
  1. # SSH 连接到服务器后
  2. mkdir -p /opt/new-api && cd /opt/new-api
  3. mkdir -p data
复制代码

四、编写 docker-compose.yml
  1. # 创建配置文件
  2. nano /opt/new-api/docker-compose.yml
复制代码

以下是最小化但生产可用的配置:
  1. version: "3.8"
  2. services:
  3.   # MySQL 数据库
  4.   mysql:
  5.     image: mysql:8.0
  6.     container_name: newapi-mysql
  7.     restart: always
  8.     environment:
  9.       MYSQL_ROOT_PASSWORD: your_mysql_password  # 改成强密码!
  10.       MYSQL_DATABASE: new_api
  11.     volumes:
  12.       - ./data/mysql:/var/lib/mysql
  13.     command: --default-authentication-plugin=mysql_native_password
  14.     networks:
  15.       - newapi-net
  16.   # Redis 缓存
  17.   redis:
  18.     image: redis:7-alpine
  19.     container_name: newapi-redis
  20.     restart: always
  21.     volumes:
  22.       - ./data/redis:/data
  23.     networks:
  24.       - newapi-net
  25.   # New API 主程序
  26.   new-api:
  27.     image: calciumion/new-api:latest
  28.     container_name: newapi-app
  29.     restart: always
  30.     ports:
  31.       - "3000:3000"
  32.     environment:
  33.       - SQL_DSN=root:your_mysql_password@tcp(mysql:3306)/new_api
  34.       - REDIS_CONN_STRING=redis://redis:6379
  35.       - SESSION_SECRET=your_random_secret_here  # 改成随机字符串
  36.       - TZ=Asia/Shanghai
  37.     volumes:
  38.       - ./data/upload:/app/upload
  39.     depends_on:
  40.       - mysql
  41.       - redis
  42.     networks:
  43.       - newapi-net
  44. networks:
  45.   newapi-net:
  46.     driver: bridge
复制代码

注意:your_mysql_passwordyour_random_secret_here 替换为你自己的值。SESSION_SECRET 可用 openssl rand -hex 32 生成。

五、启动服务
  1. cd /opt/new-api
  2. # 拉取最新镜像
  3. docker compose pull
  4. # 启动所有服务(-d 后台运行)
  5. docker compose up -d
  6. # 查看启动状态
  7. docker compose ps
  8. # 查看日志,确认没有报错
  9. docker compose logs -f new-api
复制代码

看到类似 Server started on port 3000 的日志,说明启动成功!

六、初始化配置



  • 浏览器访问 http://你的服务器IP:3000
  • 首次访问会自动跳转到注册页面
  • 注册第一个账号(自动成为管理员)
  • 登录后进入管理面板,开始配置


七、管理面板快速设置

7.1 添加渠道(上游API)



  • 左侧菜单「渠道」→「添加渠道」
  • 选择类型(如 OpenAI / Anthropic)
  • 填入你获取的 API Key(教程3中获取的)
  • 设置模型列表(勾选你要提供的模型)
  • 保存后测试连通性


7.2 设置价格



  • 「价格」→「模型价格管理」
  • 为每个模型设置对外售价(通常是上游成本的 1.5-3 倍)
  • 支持按 token 定价或按次数定价


7.3 用户管理



  • 「用户」→ 查看所有注册用户
  • 可以手动为用户充值额度
  • 设置用户分组和权限


八、使用外部 MySQL 数据库(可选)

如果你想用服务器上已安装的 MySQL 而不是容器化的 MySQL:
  1. version: "3.8"
  2. services:
  3.   new-api:
  4.     image: calciumion/new-api:latest
  5.     container_name: newapi-app
  6.     restart: always
  7.     ports:
  8.       - "3000:3000"
  9.     environment:
  10.       - SQL_DSN=root:password@tcp(host.docker.internal:3306)/new_api
  11.       - REDIS_CONN_STRING=redis://redis:6379
  12.       - SESSION_SECRET=your_random_secret
  13.       - TZ=Asia/Shanghai
  14.     extra_hosts:
  15.       - "host.docker.internal:host-gateway"
  16.     networks:
  17.       - newapi-net
  18.   redis:
  19.     image: redis:7-alpine
  20.     restart: always
  21.     networks:
  22.       - newapi-net
  23. networks:
  24.   newapi-net:
  25.     driver: bridge
复制代码

九、版本更新
  1. cd /opt/new-api
  2. # 拉取最新镜像
  3. docker compose pull new-api
  4. # 重新创建容器
  5. docker compose up -d new-api
  6. # 清理旧镜像
  7. docker image prune -f
复制代码

十、常见部署问题

问题解决
MySQL 连接失败等 MySQL 容器完全启动(约30秒),查看 mysql 日志
端口 3000 被占用修改 ports 映射:"3001:3000" 将外部端口改为 3001
页面空白/加载不出来按 F12 查看控制台报错;检查 SESSION_SECRET 是否设置
容器无限重启docker compose logs new-api 查看错误原因
数据库初始化失败检查 MySQL 密码是否正确,数据库是否已创建


十一、安全提示



  • 不要用默认密码!数据库、管理员账号都要用强密码
  • 当前 New API 运行在 HTTP 上(端口3000),下一步教程用 Nginx 配置 HTTPS
  • 部署完成后,用 UFW 或云防火墙关闭不必要的端口(如 3306 MySQL)
  • 定期备份 /opt/new-api/data 目录


参考来源:New API GitHub 仓库 (github.com/Calcium-Ion/new-api);Docker Compose 官方文档;New API Wiki 部署指南
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

扫一扫浏览手机版
Archiver|手机版|小黑屋|星海拾贝 - API中转站上下游信息论坛

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
扫一扫浏览手机版
返回顶部