从零搭建算力中转站,服务器、宝塔与 New API 完整部署指南
事情通常是这样开始的。
你手里已经有一个或几个合法申请的模型服务账号,项目、客户端、脚本却各自填着不同的 Base URL 和 API Key。哪天要换一个上游,或者想知道究竟是谁调用了多少,整个配置就会像一团毛线。
这时候可以给自己搭一个很轻量的「算力中转站」。它不生产模型能力,也不替你绕过地区、账号、支付或服务条款。它只做三件事,把你已获授权的上游模型服务统一到一个 OpenAI 兼容入口,把上游密钥留在服务器里,再把 Token、调用日志和额度放到一个可管理的地方。
这篇文章面向第一次接触服务器的读者。按你当前的域名记录,最终会得到 https://liquidchain.cn/v1 这个入口,用一枚由 New API 生成的 Token 完成一次模型调用。
本文采用单台 Ubuntu 服务器、单机 SQLite 和宝塔 Docker 应用商店的图形化路径。它适合个人、内部小团队和学习环境。生产级多节点、MySQL、Redis、支付计费都不在本文范围内。
先说清楚,只有在你对上游账号、API Key 和模型服务拥有合法使用权时,才应继续下面的步骤。不要把上游 API Key 发给他人,也不要把中转服务当成公开售卖或规避规则的工具。
0、先把全局路线看明白
整件事其实没有那么玄乎。用户请求先到你的域名,宝塔里的 Nginx 再把它转给本机的 New API 容器,New API 用你保存的上游 Key 调用模型服务,最后把兼容 OpenAI 格式的结果原路返回。
客户端 / 脚本
│ HTTPS + New API Token
▼
https://liquidchain.cn
│ 宝塔网站与反向代理
▼
New API 容器,127.0.0.1:3000
│ 上游 API Key,仅保存在服务器
▼
已获授权的 OpenAI 兼容上游
这里会出现两类 Key,别把它们混在一起。
| 上游 API Key | 只放在 New API 的渠道配置里 | New API 访问你已授权的模型供应商 |
| New API Token | 放在你的客户端、脚本或团队成员的客户端 | 客户端访问你的中转站 |
上游 Key 像总钥匙,绝不离开服务器。New API Token 像可单独作废的门禁卡,可以按用途、额度、模型和 IP 拆分。New API 官方也把渠道定义为连接供应商的核心单元,并把 Token 的额度、模型和 IP 限制作为独立能力提供。渠道管理文档 Token 管理文档
1、准备服务器和域名
1.1 服务器怎么选
对于本文这套单机部署,选一台公网 Linux 云服务器就够了。

图 1,你的服务器概览页。红色标注处可核对公网 IP、2 核 CPU 与 2 GiB 内存,当前规格满足本教程的起步要求。
| 系统 | Ubuntu 22.04 LTS 或更新的 LTS | 教程多,宝塔和 Docker 都好装 |
| 起步规格 | 1 核 2 GB 内存 | 适合轻量的 New API 与 Nginx |
| 硬盘 | 20 GB 以上 SSD | 给镜像、日志和备份留余量 |
| 网络 | 一个公网 IPv4 | 域名需要解析到它 |
| 登录方式 | SSH 密钥优先,密码作为备用 | 减少暴力破解风险 |
创建实例后,把这三项保存好,公网 IP、SSH 用户名和 SSH 私钥或初始密码。后面每一步都会用到它们。
云厂商控制台里的安全组只放行下面这些端口。
| 22 | 是,但最好限制为自己的固定 IP | SSH 管理服务器 |
| 80 | 是 | 域名验证与 HTTP 跳转 |
| 443 | 是 | 正式 HTTPS API 服务 |
| 宝塔面板端口 | 初期可放行,完成后限制为自己的 IP | 登录宝塔后台 |
| 3000 | 否 | 仅供服务器本机的反向代理连接 New API |
3000 不是给外网客户端用的。把它暴露在公网,等于绕开了域名 HTTPS 和前置站点配置,给以后排障添麻烦。
1.2 你的域名记录已经够用,不再添加 api 子域名
你截图里的 DNS 记录有两条 A 记录。
| @ | liquidchain.cn | 本文用于 New API 的正式入口,记录值为服务器 47.253.223.102 |
| www | www.liquidchain.cn | 可保留给官网或跳转页面使用,本文不依赖它 |
![]() |

图 2,DNS 记录管理页。重点看 @ 这行,它决定 liquidchain.cn 访问哪台服务器。
因此不需要新增 api 记录,后文所有涉及中转入口的地方,都直接填写 liquidchain.cn。唯一需要确认的是,@ 记录值始终等于你这台服务器的公网 IP。以后若更换服务器,只改这条记录即可。
在自己电脑的终端执行下面的命令核对解析。
nslookup liquidchain.cn
如果结果里的 Address 是你的服务器公网 IP,解析就已经可用。DNS 有缓存,刚修改时等一会儿很正常。不要在 IP 还没解析正确时申请证书,不然验证会直接失败。
1.3 第一次 SSH 登录
macOS、Linux 和 Windows PowerShell 都可以这样连接。
ssh root@你的服务器公网IP
如果云厂商给的是普通用户,例如 ubuntu,就把 root 换成实际用户名。第一次连接会问是否信任主机指纹,核对云控制台信息后输入 yes。
登录成功先执行一次基础更新。
sudo apt update && sudo apt upgrade -y
做到这儿,服务器、域名和入口已经准备好了。后面的操作大多在浏览器里完成。
2、安装宝塔,把服务器变成可视化面板
宝塔适合不想一直敲 Docker 命令的场景。我们会用它安装 Docker、创建站点、申请证书、查看容器日志和做反向代理。 
图 3,宝塔首页。后续主要使用左侧的「网站」「Docker」「SSL」和「安全」入口。
2.1 不要复制来路不明的安装脚本
宝塔的安装脚本会随发行版和版本变化。直接打开宝塔官方快速安装页,选择 Ubuntu 对应的脚本,再在 SSH 终端执行。这样比把某条旧命令固定在博客里可靠得多。
安装结束时,终端会输出面板访问地址、用户名和密码。先在浏览器打开它。若打不开,先检查两件事,云安全组是否放行了面板端口,宝塔面板的安全页面是否也放行了该端口。
2.2 第一次登录必须做的四件事
登录后不要急着装应用,先完成这些基础设置。
2.3 创建站点并申请 HTTPS 证书
接着到「网站」→「添加站点」。域名填写 liquidchain.cn,PHP 版本保持纯静态或默认即可,数据库不需要创建。站点根目录按宝塔默认生成即可,因为这次站点只负责转发请求。
创建完成后,点击这个站点进入设置。
图 4,证书管理页显示 liquidchain.cn 已部署 LiteSSL 证书,剩余 80 天,并已开启自动续签。宝塔官方文档说明,LiteSSL 与 Let’s Encrypt 都可申请免费证书,并支持自动续签。申请前必须确保域名已正确解析,HTTPS 不通时先检查 443 是否在安全组放行。宝塔 SSL 配置指南
现在用浏览器打开 https://liquidchain.cn。看到默认页面、404 或空白都不重要,只要浏览器没有证书错误,HTTPS 这层就通了。
3、在宝塔 Docker 应用商店部署 New API
New API 官方提供了宝塔 Docker 的应用商店安装方式,正好适合这篇文章。它默认运行在容器 3000 端口,并要求把 /data 映射到宿主机目录,让 SQLite 数据库和配置在容器更新或重启后继续保留。官方宝塔部署说明
3.1 先生成一个会话密钥
回到 SSH 终端,执行。
openssl rand -hex 32
复制输出的一整串随机字符,先保存到密码管理器。它会作为 SESSION_SECRET 使用,作用是保护登录会话。不要填字面量 random_string,也不要随便改动它,否则现有登录会话会失效。
3.2 在应用商店创建容器
进入宝塔左侧「Docker」→「应用商店」,搜索 New-API,选择官方应用后点击安装。不同宝塔版本的字段排布会有小变化,但填写内容不变。 
图 5,安装完成后回到「Docker」→「应用商店」。绿色「运行中」表示 New API 容器已成功启动,点击「详情」可检查端口、目录映射和日志。
| 容器名称 | new-api | 便于后续找日志 |
| 镜像 | calciumion/new-api:latest | 官方文档使用的镜像 |
| 端口映射 | 3000:3000 | 宿主机 3000 转发到容器 3000 |
| 目录映射 | 选择一个宿主机目录,例如 /www/docker/new-api/data → /data | 这是最重要的数据持久化项 |
| 环境变量 | TZ=Asia/Shanghai | 让日志使用中国时区 |
| 环境变量 | SESSION_SECRET=刚才生成的随机字符串 | 不要使用示例值 |
如果安装表单没有提供镜像、映射等细项,直接使用应用的默认值后再确认三个事实,容器镜像是 calciumion/new-api:latest,容器端口是 3000,/data 已有宿主机目录映射。官方文档列出的 App Store 默认端口也是 3000:3000,并要求 /data 必须映射。官方字段说明
这里不要配置 MySQL、Redis、SQL_DSN 或 CRYPTO_SECRET。本文是单机 SQLite 方案,New API 默认就使用 SQLite。等你真的需要多机或高并发时,再迁移数据库和缓存,不要一开始就把自己配晕。
提交并等待镜像下载完成。然后到「Docker」→「容器」,确认 new-api 状态为运行中。点击日志,正常情况下不应该出现循环重启、数据库权限错误或 SESSION_SECRET 错误。
3.3 用域名反向代理到 New API
现在容器虽然已经运行,但我们不希望用户访问 http://IP:3000。回到「网站」→liquidchain.cn→「反向代理」,新增一条代理。
| 代理名称 | new-api |
| 目标 URL | http://127.0.0.1:3000 |
| 发送域名 | 保持默认或使用 $host |
| 缓存 | 关闭 |

图 6,反向代理列表中 liquidchain.cn 状态为「开启」,并显示证书剩余时间。点击右侧「设置」可进入并检查代理目标。
保存后,宝塔会让 Nginx 接收 https://liquidchain.cn 的请求,并转发到同一台服务器的 New API。反向代理就是这个角色,用户只和域名交互,后端服务不直接暴露。宝塔反向代理说明
这一步有两个容易踩坑的地方。
第一,安全组和宝塔「安全」里都不要放行 3000。Nginx 在服务器本机访问 127.0.0.1:3000,不需要把 3000 暴露给互联网。
第二,若宝塔应用商店只能生成 3000:3000,Docker 仍会监听宿主机所有网卡,但防火墙未放行 3000 时外网依然无法访问。之后若你改用 Docker Compose,可以把端口写成 127.0.0.1:3000:3000,从根源上限制为本机监听。
最后在浏览器打开 https://liquidchain.cn。第一次访问会进入 New API 的初始化流程,按页面提示创建管理员账号和强密码。官方文档确认首次访问会引导初始化管理员。初始化说明
3.4 以后怎么更新与备份
这一步很朴素,但很重要。所有管理员、渠道和 Token 信息都在你映射的宿主机数据目录里,而不是容器本身。
更新前,先在宝塔 Docker 的容器或编排备份功能中备份数据目录,至少保留一份 /www/docker/new-api/data 的离线副本。更新时在 Docker 的镜像管理里拉取新镜像,再重建或重启 new-api 容器。官方提供的命令行思路也是先拉取 calciumion/new-api:latest,再重新启动容器。
升级后先检查三件事,能否登录、渠道测试是否通过、调用日志是否仍在。任何一步不对,停止继续操作,用备份恢复,比一边猜一边覆盖数据库靠谱得多。
4、配置渠道、创建 Token,并做一次真实调用
容器跑起来只是外壳。真正的中转站从这里才开始工作。
4.1 新建一个 OpenAI 兼容渠道
用刚创建的管理员账号登录 New API,进入左侧「渠道」→「添加渠道」。这里使用通用的 OpenAI 兼容上游做例子,不绑定任何一家供应商。
| 渠道类型 | 选择 OpenAI 或与你上游文档匹配的 OpenAI 兼容类型 |
| 渠道名称 | my-upstream-prod,用用途命名,别只写测试 |
| API Key | 粘贴你从该上游官方控制台获取的 Key |
| Base URL | 填上游文档给出的 API 根地址,例如 https://provider.example.com/v1 |
| 可用模型 | 勾选或填入上游实际支持的模型名,例如 your-model-name |
| 优先级与权重 | 保持默认 0 |
| 自动禁用 | 个人单渠道先关闭,避免一次短暂故障就把唯一渠道关掉 |
Base URL 必须以你的上游官方文档为准。不要把聊天接口完整路径,例如 /chat/completions,误填到 Base URL 后面,除非上游明确这样要求。模型名也必须和上游真正可用的名字一致,不能把网上看到的模型名当成通行证。
提交后回到渠道列表,点击这个渠道右侧的「测试」。测试成功后状态应该是绿色。失败就先看失败信息,不要急着新增第二个渠道掩盖问题。
New API 的渠道页支持填入渠道名、API Key、模型列表和可选 Base URL,提交后还可用单渠道测试验证连通性。官方渠道配置文档
4.2 分组与 Token 怎么配
如果只有你自己用,保留默认分组即可。若准备给不同项目或同事使用,先在管理端创建一个仅包含这个渠道的分组,再给每个项目单独创建 Token。这样有一个 Token 泄露时,只需撤销它,不必更换上游总 Key。
进入左侧「令牌」→「创建令牌」,建议这样设置。
| 名称 | blog-demo、my-app-prod 这类能看懂用途的名字 |
| 过期时间 | 测试 Token 可设 7 天,长期项目按轮换策略设置 |
| 剩余额度 | 能估算就设置上限,个人试用不要无限制 |
| 模型限制 | 只允许本项目需要的模型 |
| IP 白名单 | 调用端 IP 固定时强烈建议填写 |
| 分组 | 选择前一步准备的分组,或默认分组 |
提交后,完整 Token 只会显示一次。立刻复制到密码管理器或部署平台的 Secret 管理中,不能贴进 Git 仓库、截图、聊天记录或前端代码。New API 官方文档同样强调完整 Token 仅创建时展示一次,并建议按用途设置额度、模型和 IP 限制。Token 创建说明
4.3 用 curl 验证全链路
现在在自己的电脑终端运行下面的命令。将三个占位符替换掉。
curl https://liquidchain.cn/v1/chat/completions \\
-H "Authorization: Bearer NEW_API_TOKEN" \\
-H "Content-Type: application/json" \\
-d '{
"model": "your-model-name",
"messages": [
{"role": "user", "content": "请只回复部署验证成功"}
]
}'
如果终端返回一个包含 choices 的 JSON,并且内容是模型回答,整条链路就通了。
你的客户端
→ https://liquidchain.cn/v1
→ New API Token
→ 已启用的渠道
→ 你授权的上游模型
然后回到 New API 的调用日志,确认这一次请求有记录。到这儿,你已经不只是看到一个登录页,而是真的把一次请求送进了自己的中转站。
5、四个最常见的问题,按这个顺序查
5.1 域名访问不了,或者证书申请失败
先用 nslookup liquidchain.cn 检查解析是否指向服务器公网 IP 47.253.223.102。再检查云安全组与宝塔安全页面是否都放行了 80 和 443。证书验证不是只看 DNS,外网也必须能实际访问服务器。
5.2 登录后很快掉线,或者一直提示会话无效
进入 Docker 容器配置确认 SESSION_SECRET 存在且非空。不要把它填成 random_string,也不要在每次重建容器时换掉它。官方环境变量文档特别说明,该值不能使用 random_string 这个字面量。环境变量说明
5.3 域名返回 502 Bad Gateway
这通常不是证书问题,而是反向代理找不到后端。
5.4 调用返回认证失败、模型不存在或上游错误
| 401 或认证失败 | 使用的是 New API Token,不是上游 Key,且 Bearer 后面没有多余空格 |
| 模型不存在或无可用渠道 | Token 的分组、模型限制与渠道可用模型是否一致,渠道是否启用 |
| 上游余额不足、权限不足、429 | 到上游官方控制台检查账户余额、模型权限、速率限制和服务状态 |
| 渠道测试失败 | Base URL、上游 Key、模型名是否逐字符合上游官方文档 |
不要通过关闭 SSL 校验、无限重试或公开 3000 端口来「解决」问题。那不是修复,只是把故障藏起来。
6、上线前最后检查一遍
- liquidchain.cn 已解析到服务器公网 IP 47.253.223.102
- 80 与 443 可从公网访问,3000 未对公网开放
- 宝塔面板账号、端口和安全入口已加固,管理端口已限制来源 IP
- HTTPS 证书正常,浏览器访问域名没有证书警告
- New API 容器处于运行状态,/data 已映射到宿主机目录
- SESSION_SECRET 已保存到安全位置
- 上游 API Key 只保存在 New API 渠道,不出现在客户端与仓库
- 每个客户端使用独立的 New API Token,测试 Token 有过期时间或额度限制
- curl 调用成功,New API 日志中能看到记录
- 已完成一次数据目录备份,并知道如何恢复
到这里,liquidchain.cn 就不再只是一个域名了。它是你的统一入口。以后增加另一个已授权上游、给一个新项目开独立 Token,或者查看某次调用是否成功,都不需要把总钥匙散落到每台电脑里。
不过也别把它想得太神奇。
它只是把原本四散的配置收拢到一个你能看见、能备份、能撤销的地方。把入口守住,把密钥藏好,把日志留住,这件事就已经完成了大半。
参考资料
- New API 宝塔面板部署
- New API 渠道管理
- New API Token 管理
- New API 环境变量配置
- 宝塔反向代理配置
- 宝塔 SSL 证书部署
网硕互联帮助中心







评论前必须登录!
注册