主站入口
你的用户后台和 OpenAI 兼容入口:
https://api.mzai.cc/
你的用户后台和 OpenAI 兼容入口:
https://api.mzai.cc/
CLIProxyAPI 负责把 CLI / OAuth 账号能力包装成可调用接口。
new-api 负责用户、令牌、额度、渠道、模型倍率和支付配置。
按你的使用目的选择教程路线。简单自用可以只看第一条,对外运营建议按完整链路部署。
把自己的 CLI / OAuth 账号统一成 API,链路短,最容易调通。
new-api 管用户、令牌和计费,CLIProxyAPI 管上游账号池。
需要把订阅源或现成账号源转换成 API 时再部署。
new-api 做统一入口,CLIProxyAPI 与 sub2api 分别作为不同类型上游。
| 入口 | 服务 | 用途 |
|---|---|---|
| https://api.mzai.cc/ | new-api / 主入口 | 用户后台、令牌、额度、OpenAI 兼容接口 |
| https://sub.mzai.cc/ | sub2api | 订阅转换、订阅接入、上游账号管理 |
| https://cpa.mzai.cc/ | CLIProxyAPI | CLI / OAuth 账号代理,提供兼容接口 |
域名托管到 Cloudflare,服务器使用 Ubuntu 24.04 LTS,防火墙放行 22、80、443。
添加 api、sub、cpa 三条 A 记录,首次部署使用 DNS only,确认正常后再开启代理。
告诉 Codex 服务器 IP、域名、敏感信息规则和操作确认要求。
我在 Windows 本地操作,服务器是腾讯云轻量应用服务器。 服务器 IP 是 你的服务器IP。 域名是 mzai.cc。 后续请按照教程要求,通过 SSH 连接服务器并完成部署。 执行涉及密码、密钥、令牌、OAuth Token 的操作时,不要把敏感内容输出到聊天里。 每次修改服务器文件前,请先说明文件路径和修改目的。 如果遇到会覆盖数据、删除数据、重启关键服务的操作,请先说明风险并等我确认。
临时开启 root 密码登录,随后让 Codex 生成 SSH Key 并配置免密,成功后关闭密码登录。
登录后 whoami 输出 root。 不要关闭腾讯云控制台登录窗口,等免密登录验证成功后再关闭。 这一步交给 Codex 在本地电脑上完成。前提是你已经能通过下面命令用密码登录: 把下面提示词发给 Codex。 请在本地为服务器配置 root SSH 免密登录。 服务器信息: 1. 服务器 IP:43.130.231.251 2. 登录用户:root 3. SSH 别名:lztoken-api 4. 本地系统:Windows PowerShell 前提: 1. root 密码登录已经开启。 2. 需要 root 密码时,请通过 SSH 密码提示让我输入。 3. 不要把 root 密码写入文件、命令历史、脚本或聊天记录。 目标: 1. 检查本地是否可用 ssh 和 ssh-keygen。 2. 检查本地 ~/.ssh 目录,不存在就创建。 3. 检查是否已有 ~/.ssh/lztoken_fun_root_ed25519。 4. 如果没有,就生成 ed25519 密钥: ssh-keygen -t ed25519 -C "lztoken.fun root ssh" -f ~/.ssh/lztoken_fun_root_ed25519 5. 只把 .pub 公钥上传到服务器,不要输出或上传私钥。 6. 将公钥追加到服务器 /root/.ssh/authorized_keys,不要覆盖已有内容。 7. 在服务器上设置权限: chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys chown -R root:root /root/.ssh 8. 修改本地 ~/.ssh/config 前先备份。 9. 添加或更新下面的 SSH Host: Host lztoken-api HostName 43.130.231.251 User root IdentityFile ~/.ssh/lztoken_fun_root_ed25519 IdentitiesOnly yes 10. 验证免密登录: ssh -o PreferredAuthentications=publickey -o PasswordAuthentication=no lztoken-api "whoami && hostname && date" 约束: 1. 不要删除本地已有 SSH 密钥。 2. 不要覆盖服务器已有 authorized_keys。 3. 如果上传或验证失败,先说明失败原因,再给出下一步处理建议。 4. 最后给出验证结果,必须包含 whoami 输出是否为 root。
root SSH 免密登录已经成功。请帮我把 SSH 密码登录关闭,只保留密钥登录。 要求: 1. 修改前备份 SSH 配置。 2. 处理 /etc/ssh/sshd_config.d/00-root-password-login.conf,禁用 PasswordAuthentication。 3. root 允许密钥登录,但不允许密码登录,例如使用 PermitRootLogin prohibit-password。 4. 重启 SSH 前先检查配置语法。 5. 不要关闭当前会话,必须新开会话验证 root 免密仍然可用。 6. 如果验证失败,立即回滚配置。 7. 最后给出验证结果:密钥登录是否成功、密码登录是否已禁用。
安装 Docker、Docker Compose、Caddy,并创建 /opt/caddy、/opt/new-api、/opt/cliproxyapi、/opt/sub2api。
六、部署 CLIProxyAPI 6.1 服务信息 6.2 交给 Codex 的提示词 6.3 验证结果 6.4 添加 CLI / OAuth 账号 七、部署 sub2api 7.1 服务信息 7.2 交给 Codex 的提示词 7.3 验证结果 八、部署 new-api 8.1 服务信息 8.2 交给 Codex 的提示词 8.3 初始化后台 九、后台基础配置 9.1 new-api 基本配置 9.2 在 new-api 中添加 CLIProxyAPI 渠道 9.3 在 new-api 中添加 sub2api 渠道 9.4 创建令牌并测试 十、日常维护 10.1 每日健康检查 10.2 备份 10.3 升级 10.4 回滚 十一、常见问题排查 十二、参考资料 来源 更新记录 /opt/caddy/ /opt/cliproxyapi/ /opt/sub2api/ /opt/new-api/ 请使用 root 免密 SSH 连接服务器 43.130.231.251,并安装 API 中转站基础环境。 1. 系统:Ubuntu 24.04 LTS。 2. 登录用户:root。 3. SSH 别名:lztoken-api。 4. 服务统一安装在 /opt/ 下。 5. 我不会手动登录服务器执行命令,所有操作都由你完成。 1. 检查系统版本、CPU、内存、磁盘、时区、端口占用。 2. 安装常用工具:curl、wget、vim、git、ca-certificates、gnupg、openssl、jq、lsof、htop。 3. 按 Docker 官方 apt 仓库方式安装 Docker Engine 和 docker compose 插件。 4. 按 Caddy 官方 Ubuntu 包方式安装 Caddy。 5. 创建目录: - /opt/caddy - /opt/cliproxyapi
先部署账号池代理层,端口只绑定 127.0.0.1,通过 Caddy 暴露 cpa 子域名。
请使用 root 免密 SSH 连接服务器 43.130.231.251,部署 CLIProxyAPI。 已知信息: 1. 安装目录:/opt/cliproxyapi 2. 对外域名:cpa.lztoken.fun 3. 主服务端口:127.0.0.1:8317 4. 镜像:eceasy/cli-proxy-api:latest 5. Caddy 配置文件:/opt/caddy/api-relay.caddy 1. 根据 CLIProxyAPI 当前官方文档或仓库示例确认 docker-compose.yml 和 config.yaml 的最新写法。 2. 创建 /opt/cliproxyapi/docker-compose.yml。 3. 创建 /opt/cliproxyapi/config.yaml。 4. 持久化 /opt/cliproxyapi/auths 和 /opt/cliproxyapi/logs。 5. 主服务端口只绑定 127.0.0.1:8317。 6. 其他登录、回调或辅助端口也只绑定 127.0.0.1,不直接暴露公网。 7. 在 /opt/caddy/api-relay.caddy 中添加 cpa.lztoken.fun 反向代理。 8. 检查 Caddy 配置并重载。 9. 启动容器并检查日志。 配置要求: 1. 管理密钥、API Key 使用强随机值。 2. 不要把真实密钥输出到聊天里,只告诉我保存在哪个文件和字段。 3. 如果需要我在浏览器里完成 OAuth 授权,请给出授权链接和下一步说明。 4. 如果官方镜像、配置字段或登录命令有变化,以当前官方文档为准,并告诉我差异。 验证: 1. CLIProxyAPI 容器处于运行状态。 2. 127.0.0.1:8317 有响应。 3. https://cpa.lztoken.fun 有响应。 4. https://cpa.lztoken.fun/management.html 可以打开。
部署主后台,用 api.mzai.cc 作为统一入口,后续在后台添加 CLIProxyAPI 渠道。
4. 镜像:calciumion/new-api:latest 5. 数据库:PostgreSQL 容器 6. Redis:Redis 容器 7. Caddy 配置文件:/opt/caddy/api-relay.caddy 1. 根据 new-api 当前官方文档确认 Docker Compose 和环境变量写法。 2. 创建 /opt/new-api/.env。 3. 创建 /opt/new-api/docker-compose.yml。 4. 数据目录放在 /opt/new-api/data。 5. 日志目录放在 /opt/new-api/logs。 6. PostgreSQL 数据放在 /opt/new-api/postgres_data。 7. Redis 数据放在 /opt/new-api/redis_data。 8. 使用强随机值生成 PostgreSQL 密码、Redis 密码、SESSION_SECRET。 9. 服务端口只绑定 127.0.0.1:3000。 10. 数据库和 Redis 端口不要映射到公网。 11. 在 /opt/caddy/api-relay.caddy 中添加 api.lztoken.fun 反向代理。 12. 检查 Caddy 配置并重载。 13. 启动 new-api、PostgreSQL、Redis,并检查日志。 2. 不要暴露数据库和 Redis 端口到公网。 3. 不要删除已有 /opt/new-api 数据。 4. 如果 new-api 官方文档的推荐环境变量有变化,请以官方文档为准并告诉我差异。 5. 如果使用 PostgreSQL,请确认 SQL_DSN 格式正确。 1. new-api、postgres、redis 三个容器都处于运行状态。 2. 127.0.0.1:3000 有响应。 3. https://api.lztoken.fun 可以打开。 4. 首次初始化管理员页面可以正常打开。 浏览器打开: 第一次打开会进入初始化页面。按页面提示设置管理员账号和密码。 初始化后建议配置: 菜单 要做什么
如果你需要订阅转换或备用账号池,再部署 sub2api。
请使用 root 免密 SSH 连接服务器 43.130.231.251,部署 sub2api。 1. 安装目录:/opt/sub2api 2. 对外域名:sub.lztoken.fun 3. 服务端口:127.0.0.1:8080 4. 镜像:ghcr.io/dr-lin-eng/sub2api:latest 5. 数据目录:/opt/sub2api/data 6. PostgreSQL 数据目录:/opt/sub2api/postgres_data 7. Redis 数据目录:/opt/sub2api/redis_data 8. Caddy 配置文件:/opt/caddy/api-relay.caddy 1. 根据 sub2api 当前官方仓库确认 Docker Compose 部署方式。 2. 优先使用本地目录持久化方式,方便备份和迁移。 3. 创建 /opt/sub2api/.env。 4. 创建 /opt/sub2api/docker-compose.yml。 5. 使用 PostgreSQL 和 Redis 容器。 6. 使用强随机值生成 PostgreSQL 密码、Redis 密码、JWT_SECRET、TOTP_ENCRYPTION_KEY、管理员密码。 7. 端口只绑定 127.0.0.1:8080。 8. 数据库和 Redis 端口不要映射到公网。 9. 在 /opt/caddy/api-relay.caddy 中添加 sub.lztoken.fun 反向代理。 10. 检查 Caddy 配置并重载。 11. 启动 sub2api、PostgreSQL、Redis,并检查日志。 1. 不要把真实密码输出到聊天里。 2. 不要把数据库端口和 Redis 端口暴露公网。 3. 不要删除已有 /opt/sub2api 数据。 4. 如果镜像、环境变量或 compose 写法与当前官方文档不一致,请以官方文档为准并告诉我差异。 1. sub2api、postgres、redis 三个容器都处于运行状态。 2. 127.0.0.1:8080 有响应。 3. https://sub.lztoken.fun 有响应。 4. 管理员账号可以登录,或者初始化流程可以正常打开。 5. 告诉我管理员用户名和密码分别保存在 /opt/sub2api/.env 的哪些字段,不要直接输出真实值。 sub2api 管理后台地址:
在 new-api 后台创建 sk- 令牌,测试 /v1/models 和 /v1/chat/completions。
地址: https://api.lztoken.fun/v1 测试内容: 1. /v1/models 2. /v1/chat/completions 1. 我会通过安全方式提供 sk- 开头的令牌。 2. 不要把令牌输出到聊天里。 3. 如果失败,请判断是令牌、模型名、渠道、上游还是网络问题。 4. 最后只给出 HTTP 状态、是否成功、失败原因和下一步建议。 new-api 能识别令牌。 渠道测试成功。 模型名能匹配到对应渠道。 返回内容不是 401、403、404、502、渠道不存在、模型不存在。 请帮我对 lztoken-api 服务器做一次 API 中转站健康检查。
| 菜单 | 要做什么 |
|---|---|
| 系统设置 | 设置站点名称、站点地址、文档地址 |
| 用户管理 | 确认管理员账号安全,关闭不需要的注册方式 |
| 分组管理 | 创建默认分组或套餐分组 |
| 渠道管理 | 接入 CLIProxyAPI、sub2api 或其他上游 |
| 令牌管理 | 创建测试令牌 |
| 模型设置 | 确认模型名、倍率和渠道映射 |
| 配置项 | 值 |
|---|---|
| 渠道类型 | OpenAI 兼容 |
| 渠道名称 | cliproxyapi |
| Base URL | https://cpa.mzai.cc/v1 |
| API Key | 使用 /opt/cliproxyapi/config.yaml 中配置的 Key |
| 模型 | 以 CLIProxyAPI 实际返回为准 |
检查 SSH、磁盘、内存、Docker、Caddy、容器状态、HTTPS 和最近日志。
4. Caddy 是否运行。 5. new-api、sub2api、CLIProxyAPI 相关容器是否运行。 6. 三个域名 HTTPS 是否正常: - https://api.lztoken.fun - https://sub.lztoken.fun - https://cpa.lztoken.fun 7. 本机端口监听是否符合预期: - 127.0.0.1:3000 - 127.0.0.1:8080 - 127.0.0.1:8317 - 0.0.0.0:80 - 0.0.0.0:443 8. 最近 100 行关键日志里是否有 error、panic、failed、timeout、certificate 等异常。 1. 不要输出任何密钥、令牌、密码。 2. 只总结异常和建议。 3. 如果都正常,给出简短健康报告。 建议至少备份这些目录: 重点数据: 必备份内容 .env、data、postgres_data、redis_data、logs config.yaml、auths、logs api-relay.caddy 备份提示词: 请帮我备份 API 中转站数据。 1. 备份 /opt/caddy、/opt/cliproxyapi、/opt/sub2api、/opt/new-api。
重点备份 /opt/caddy、/opt/cliproxyapi、/opt/sub2api、/opt/new-api。
请先完成: 1. 检查当前 new-api、sub2api、CLIProxyAPI 的镜像版本或镜像摘要。 2. 检查官方文档或仓库是否有破坏性变更。 3. 给出升级计划,包括备份、拉取镜像、重启、验证和回滚方式。 4. 明确哪些服务会短暂中断。 等我确认后,再执行升级。 回滚前要确认: 是否有升级前备份。
| 现象 | 优先检查 | 处理方向 |
|---|---|---|
| 域名打不开 | DNS 是否生效、A 记录是否指向服务器 IP | 用 dig / nslookup 查解析 |
| HTTPS 证书失败 | 80/443 是否放行、Caddy 日志 | 先用 DNS only 检查 Caddy 证书 |
| 502 Bad Gateway | Caddy 反代端口是否可达 | 检查 127.0.0.1:3000/8080/8317 |
| 渠道测试 401/403 | API Key 或鉴权方式 | 重新确认上游 Key 和渠道密钥 |
| 容器反复重启 | 环境变量、数据目录权限、端口冲突 | 查日志,不要先删数据 |
通用排错提示词: 请帮我排查 API 中转站故障。 故障现象: 请在这里填写具体表现,例如 api.lztoken.fun 返回 502。 1. 先只读检查,不要修改配置。 2. 检查 DNS、端口、Caddy、Docker、目标容器、最近日志。 3. 不要输出任何密钥、令牌、密码。 4. 给出最可能的 3 个原因,按概率排序。 5. 每个原因给出验证命令和修复建议。 6. 修复前先征求我确认。