适用场景:你需要在自己的服务器上部署 CLIProxyAPI,用一个入口管理多个模型渠道,并给客户端提供统一的 OpenAI 兼容接口。
安全提醒:不要把管理密钥、客户端 API Key、上游模型 Key 写进公开仓库。示例中的密钥都要替换成你自己的强随机字符串。
#项目地址
https://github.com/router-for-me/CLIProxyAPI
#部署步骤
#1. 安装 Docker
curl -fsSL https://get.docker.com | sh如果服务器已经安装 Docker,可以跳过这一步。
#2. 创建工作目录
mkdir -p CLIProxyAPI && cd CLIProxyAPI
mkdir -p auths
touch config.yamlconfig.yaml 存放服务配置,auths 用来持久化 CLI OAuth / 认证数据。
#3. 写入最小配置
下面是一个偏保守的最小配置:服务只监听本机 127.0.0.1,再通过 Caddy 或其他反向代理暴露 HTTPS。
host: "127.0.0.1"
port: 8317
auth-dir: "~/.cli-proxy-api"
# 调用本代理时使用的客户端密钥。
api-keys:
- "replace-with-your-client-api-key"
# 管理页面 / 管理 API。
remote-management:
allow-remote: false
secret-key: "replace-with-a-long-random-admin-secret"
disable-control-panel: false
# 示例:Gemini API Key。按需替换或添加其他渠道。
gemini-api-key:
- api-key: "replace-with-your-gemini-api-key"
base-url: "https://generativelanguage.googleapis.com"
# 示例:OpenAI 兼容渠道。用不到可以删除这一段。
openai-compatibility:
- name: "openrouter"
base-url: "https://openrouter.ai/api/v1"
api-key-entries:
- api-key: "replace-with-your-openrouter-key"几个优先检查的字段:
| 字段 | 说明 |
|---|---|
host | 建议先用 127.0.0.1,只允许本机访问 |
port | 服务监听端口,默认示例为 8317 |
api-keys | 客户端请求代理服务时使用的密钥 |
remote-management.secret-key | 管理页面密码,务必使用强随机字符串 |
gemini-api-key / openai-compatibility | 上游模型渠道,按需保留即可 |
#4. 启动容器
docker pull eceasy/cli-proxy-api:latest
docker run -d \
--name cli-proxy-api \
-p 127.0.0.1:8317:8317 \
-v $(pwd)/config.yaml:/CLIProxyAPI/config.yaml \
-v $(pwd)/auths:/root/.cli-proxy-api \
--restart unless-stopped \
eceasy/cli-proxy-api:latest这里把服务绑定在本机地址,公网访问交给反向代理处理;同时把配置和认证目录挂载到宿主机,方便更新容器时保留数据。
#5. 配置 Caddy 反向代理
如果你有域名,可以用 Caddy 提供 HTTPS:
example.com {
encode gzip
reverse_proxy 127.0.0.1:8317
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-Content-Type-Options "nosniff"
X-Frame-Options "DENY"
Referrer-Policy "strict-origin-when-cross-origin"
}
}把 example.com 替换为你的真实域名。
#6. 访问管理页面
浏览器打开:
https://example.com/management.html登录时填写 remote-management.secret-key 中设置的管理密钥。
#7. 客户端调用
客户端侧把接口地址指向你的域名,并使用 api-keys 中配置的客户端密钥。例如:
Base URL: https://example.com/v1
API Key: replace-with-your-client-api-key模型名称和渠道映射以你的 config.yaml 为准。
#更新项目
进入工作目录后拉取新镜像,并用同样的挂载参数重建容器:
cd CLIProxyAPI
docker pull eceasy/cli-proxy-api:latest
docker stop cli-proxy-api && docker rm cli-proxy-api
docker run -d \
--name cli-proxy-api \
-p 127.0.0.1:8317:8317 \
-v $(pwd)/config.yaml:/CLIProxyAPI/config.yaml \
-v $(pwd)/auths:/root/.cli-proxy-api \
--restart unless-stopped \
eceasy/cli-proxy-api:latest配置文件和认证数据都在宿主机目录中,重建容器不会丢失。
#排查建议
| 问题 | 检查点 |
|---|---|
| 管理页打不开 | 容器是否运行、Caddy 是否反代到 127.0.0.1:8317 |
| 认证失败 | 客户端是否使用了 api-keys,管理页是否使用了 secret-key |
| 模型不可用 | 上游 Key 是否有效,模型名 / alias 是否配置正确 |
| 更新后数据丢失 | 是否挂载了 config.yaml 和 auths 目录 |
#安全建议
- 不要直接把服务暴露在公网端口上,优先使用反向代理和 HTTPS。
secret-key和api-keys使用强随机字符串。- 不要在文章、截图、Git 仓库中泄露任何真实 Key。
- 如果开启远程管理,务必配合 HTTPS、强密码和访问限制。