云计算百科
云计算领域专业知识百科平台

从零搭建算力中转站,服务器、宝塔与 New API 完整部署指南

从零搭建算力中转站,服务器、宝塔与 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 第一次登录必须做的四件事

登录后不要急着装应用,先完成这些基础设置。

  • 修改面板账号和强密码,不使用云厂商初始密码。
  • 在宝塔设置里修改面板入口或安全入口,并把面板端口的访问限制为自己的固定公网 IP。出差或 IP 变化时再临时放开。
  • 打开左侧「Docker」。第一次进入会提示安装 Docker 服务,点击安装并等待完成。New API 的官方宝塔部署文档要求宝塔 9.2.0 以上,并建议至少 1 核 2 GB 内存。官方宝塔部署说明
  • 在「安全」里确认只放行 80、443 和确有需要的管理端口。不要添加 3000。
  • 2.3 创建站点并申请 HTTPS 证书

    接着到「网站」→「添加站点」。域名填写 liquidchain.cn,PHP 版本保持纯静态或默认即可,数据库不需要创建。站点根目录按宝塔默认生成即可,因为这次站点只负责转发请求。

    创建完成后,点击这个站点进入设置。

  • 进入「SSL」标签。
  • 新申请时可选择 LiteSSL 或 Let's Encrypt。你当前部署使用的是 LiteSSL,保持这个选择即可。
  • 选择 liquidchain.cn 并申请证书,验证方式按页面要求选择文件验证或 DNS 验证。
  • 成功后开启自动续签和「强制 HTTPS」。 在这里插入图片描述 图 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

    这通常不是证书问题,而是反向代理找不到后端。

  • 到宝塔 Docker 容器列表确认 new-api 正在运行。
  • 打开容器日志,查看是否因为权限、数据库或环境变量失败而退出。
  • 确认反向代理目标是 http://127.0.0.1:3000,不是 https://127.0.0.1:3000。
  • 确认容器端口映射包含容器端口 3000。
  • 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 证书部署
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 从零搭建算力中转站,服务器、宝塔与 New API 完整部署指南
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!