手把手搭建中转站:VPS+Docker+Nginx+Cloudflare保姆级教程
速览
本文提供搭建AI API中转站的保姆级教程,涵盖VPS选型、Docker环境部署、Nginx反向代理及Cloudflare SSL配置。教程重点讲解CLI Proxy API与New API的组合使用,实现Token监控与代理节点管理,帮助开发者解决API访问与成本优化问题。
AI 深度解读
背景
随着大语言模型(LLM)应用的普及,开发者对 API 调用的稳定性、成本控制以及 Token 管理的需求日益增长。直接调用官方 API 往往面临价格高昂、额度限制或网络访问不稳定等问题。因此,搭建一个私有的“中转站”(Proxy API)成为了一种常见的解决方案。
本文基于 LINUX DO 社区的分享,详细解读如何从零开始搭建一套完整的中转站架构。该方案结合了 CLI Proxy API (CPA)、NEW API、Docker、Nginx、Cloudflare 以及 SSL 域名配置 等技术栈。其核心目的是通过 CPA 作为底层代理渠道和认证文件管理器,利用 NEW API 作为上层网关进行 Token 监控、计费管理和节点分发,最终通过 Nginx 和 Cloudflare 实现安全、稳定的对外服务。
核心内容
本教程的核心在于构建一个分层式的代理架构:底层 CPA 负责处理具体的模型请求转发和认证文件管理,中间层 NEW API 负责业务逻辑、Token 统计和用户管理,顶层 Nginx + Cloudflare 负责流量清洗、SSL 加密和域名解析。
1. 基础设施与环境准备
- 服务器选择:推荐使用配置为 2核 CPU / 2GB 内存的 VPS(如腾讯云硅谷节点),操作系统选用 CentOS 7.6.1810 或类似 Linux 发行版。
- 连接工具:使用 FinalShell 等可视化工具进行 SSH 连接和文件管理,降低命令行操作门槛。
- 软件版本参考:
- Docker: 26.1.4
- Docker Compose: 2.27.1
- CPA (CLI Proxy API): latest (v6.10.9)
- NEW API: latest (v1.0.0-rc.4)
- Nginx: latest (1.29.8)
2. 目录结构与初始化
在服务器上创建标准化的目录结构,以便管理不同服务的配置文件、日志和数据卷:
/opt/proxy/
├── docker-compose.yml # 服务编排文件
├── cpa/
│ ├── logs/ # CPA 日志
│ ├── auths/ # OAuth 认证文件存储
│ └── config.yaml # CPA 配置文件
└── newapi/
├── data/ # NEW API 数据
└── logs/ # NEW API 日志
执行命令初始化目录:
mkdir -p /opt/proxy/{cpa/{logs,auths},newapi/{data,logs}} && cd /opt/proxy && touch docker-compose.yml cpa/config.yaml
3. 配置 CPA (CLI Proxy API)
CPA 在此架构中主要作为 NEW API 的一个渠道(Channel),负责管理认证文件(如 Google OAuth 令牌)并执行实际的 API 转发。
- 配置文件 (
cpa/config.yaml):- Host/Port:默认绑定所有接口,端口设为
8317。 - TLS:教程初期建议关闭 HTTPS (
enable: false),因为外层会有 Nginx 处理 SSL。 - Remote Management:允许远程访问管理接口 (
allow-remote: true),并设置secret-key以保护管理面板。 - Auth Dir:指定认证文件存放路径 (
~/.cli-proxy-api)。 - API Keys:设置内部通信密钥 (
api-keys),需修改默认值。 - Routing Strategy:采用
round-robin(轮询)策略分发请求。 - Usage Statistics:由于由 NEW API 统一统计,此处设为
false。
- Host/Port:默认绑定所有接口,端口设为
4. 配置 NEW API 与 Docker Compose
NEW API 是整个中转站的核心,提供 Web 管理界面、Token 分配和用量监控。
- Docker Compose 编排:
- New-API 服务:
- 镜像:
calciumion/new-api:latest - 端口映射:
3000:3000(内部端口,对外不直接暴露)。 - 数据库:使用 PostgreSQL (
postgres:15) 存储数据,Redis 用于缓存。 - 环境变量:配置
SQL_DSN(PostgreSQL 连接串)、REDIS_CONN_STRING等。 - 健康检查:通过
wget请求/api/status确保服务存活。
- 镜像:
- CPA 服务:
- 镜像:
eceasy/cli-proxy-api:latest - 挂载:将
config.yaml、auths目录和logs目录映射到容器内。 - 注意:CPA 不对外暴露端口,仅作为 NEW API 的后端渠道运行。
- 镜像:
- 依赖服务:Redis 和 PostgreSQL 作为基础支撑服务,随 NEW API 一起启动。
- New-API 服务:
5. 认证文件配置
- 用户需将获取到的 Google OAuth 认证文件(通常包含
client_id和client_secret等)放入/opt/proxy/cpa/auths目录下。 - CPA 读取这些文件后,可为 NEW API 提供有效的代理通道。
6. 防火墙与安全组配置
- Linux 防火墙 (Firewalld):
- 启动并启用
firewalld。 - 开放必要端口:教程中主要涉及内部通信,但若需直接访问 NEW API 管理界面,需开放
3000端口。 - 命令示例:
firewall-cmd --zone=public --add-port=3000/tcp --permanent后重载配置。
- 启动并启用
- 云服务商安全组:
- 若使用腾讯云等云厂商,需在控制台的安全组规则中放行相应端口(如 22 SSH, 3000 Web, 以及后续 Nginx 的 80/443)。
关键要点
- 架构分层清晰:CPA 专注于“代理”和“认证文件管理”,NEW API 专注于“业务逻辑”和“Token 管理”。这种分离使得系统更易于维护和扩展。
- 配置文件关键修改:
config.yaml中的secret-key和api-keys必须修改,否则存在安全风险。docker-compose.yml中的SQL_DSN密码、PostgreSQL 的POSTGRES_PASSWORD必须修改。- NEW API 的
3000端口映射不可随意更改,因为健康检查脚本硬编码了该端口。
- 依赖关系管理:NEW API 依赖 PostgreSQL、Redis 和 CPA 启动。Docker Compose 的
depends_on确保了启动顺序,但健康检查(Healthcheck)提供了更可靠的可用性保障。 - 日志与监控:
- CPA 启用文件日志 (
logging-to-file: true),便于排查代理问题。 - NEW API 启用错误日志和批量更新,提升系统稳定性。
- CPA 启用文件日志 (
- 安全最佳实践:
- 内部服务(CPA, New-API, DB)之间通过 Docker 内部网络通信,不直接暴露端口。
- 生产环境建议通过 Nginx 反向代理并配置 SSL,对外仅开放 80/443 端口。
- 定期更新 Docker 镜像和系统补丁。
意义与影响
该教程提供了一套标准化、可复用的中转站搭建方案,对于 AI 应用开发者具有重要意义:
- 降低使用门槛:通过 Docker Compose 和可视化工具,将复杂的代理搭建过程简化为“复制-修改-启动”三步,降低了非资深运维人员的参与门槛。
- 提升资源利用率:通过 CPA 的多渠道管理和 NEW API 的 Token 统计,用户可以更
