06. 管理面板

CPA 内置一个 Web 管理面板,用来:

  • 查看/管理已登录的 OAuth 凭据
  • 在线编辑 config.yaml(API key、模型映射等)
  • 看请求/Token 用量统计
  • 手动触发 OAuth 登录流程(不用再 docker exec)

面板代码独立在 Cli-Proxy-API-Management-Center 仓库,主进程启动时会自动从 GitHub Releases 下载 management.html

1) 配置开关

/root/CLIProxyAPI/config.yaml 里:

remote-management:
  allow-remote: true                  # 允许非 localhost 访问
  secret-key: "你的明文登录密码"       # 启动时 CPA 会自动 bcrypt 哈希
  disable-control-panel: false        # 必须 false,否则 /management.html 直接 abort
  panel-github-repository: "https://github.com/router-for-me/Cli-Proxy-API-Management-Center"
  # disable-auto-update-panel: false  # 默认关,让面板自动跟版

secret-key 写明文,CPA 启动时检测到非 bcrypt 哈希会自动哈希并写回 config.yaml。下次再看 config.yaml 这一行已经是 $2a$10$... 格式了。

改完重启:

docker restart cli-proxy-api
docker logs --tail 10 cli-proxy-api

正常应有:

management routes registered after secret key configuration

2) 访问面板

http://你的服务器IP:8317/management.html

第一次访问会用你设的明文密码登录。

路径就是字面量 /management.html,不是 /management /panel 之类。

3) 面板资源下载失败怎么办

CPA 启动时会从 GitHub Releases 下载 management.html。境内出口或者共享代理 IP 容易遇到:

  • failed to download management asset error=... EOF — TCP 中断
  • failed to fetch latest management release information error=unexpected release status 403: ... API rate limit exceeded — GitHub API 限流(IP 共享)

应对 1:换节点

切到一个使用人少的美国节点(mihomo):

curl -X PUT http://127.0.0.1:9090/proxies/🔰Proxy \
  -H "Content-Type: application/json" \
  -d '{"name":"US Pro 12 | 倍率 2x"}'
docker restart cli-proxy-api

应对 2:手动下载,复制进容器

宿主机走 mihomo 直接下载:

curl -L -x http://127.0.0.1:7890 \
  -o /tmp/management.html \
  https://github.com/router-for-me/Cli-Proxy-API-Management-Center/releases/download/v1.10.1/management.html
 
ls -lh /tmp/management.html      # 应该是 2.0M 左右

版本号 v1.10.1 以仓库 Releases 最新为准。

复制进容器:

docker exec cli-proxy-api find / -name management.html 2>/dev/null
# 一般是 /CLIProxyAPI/static/management.html
 
docker cp /tmp/management.html cli-proxy-api:/CLIProxyAPI/static/management.html
docker exec cli-proxy-api ls -lh /CLIProxyAPI/static/management.html

不需要重启,静态文件 c.File 直接读盘。刷新浏览器即可。

4) 可访问性自检

如果 http://服务器IP:8317/management.html 在浏览器里 502 / 超时:

# 服务器本机能不能 200
curl -sI http://127.0.0.1:8317/management.html
 
# 外网能不能连到这个端口(在你本地电脑跑)
curl -sI http://服务器IP:8317/management.html
  • 本机 200,外网失败 → 云厂商安全组没放行 8317(最常见)。控制台里加一条入站规则,来源限你公网 IP。
  • 本机 404 → disable-control-panel 没改成 false,或者面板资源不在 /CLIProxyAPI/static/ 下。

5) 安全建议

  • secret-key 务必长且随机,至少 16 字符
  • 8317 端口的安全组严格限白名单,不要 0.0.0.0/0
  • 如果只是自己用,可以关掉 allow-remote,登录都走 SSH 隧道:
    ssh -L 8317:127.0.0.1:8317 root@服务器IP
    # 浏览器开 http://127.0.0.1:8317/management.html
    这样 8317 永远不暴露公网。

下一步:07-client-usage.md 客户端调用。