Skip to content

快速开始

Docker Compose 部署(推荐)

前置要求

  • Linux 宿主机(Ubuntu 22.04+ / Debian 12+)
  • Docker Engine 28+,Docker Compose v2
  • 至少一个出口 IP(WireGuard 配置或代理服务器)

第 1 步:克隆代码

bash
git clone https://github.com/ZaneL1u/cloud-cli-proxy.git
cd cloud-cli-proxy

第 2 步:生成环境配置

运行初始化脚本,自动生成所有密码和密钥:

bash
bash deploy/scripts/setup-env.sh

脚本会让你选择数据库方案:

  • 内置 Docker PostgreSQL(推荐):自动生成数据库密码,Docker Compose 一起管理,零配置。
  • 外部 PostgreSQL:交互式填入外部数据库的地址、端口、用户名、密码,支持 SSL。

两种方案都会自动生成管理员密码(20 位)和 JWT 密钥(48 位)。

重要

脚本执行完毕后会显示管理员密码,请立即保存,此处仅显示一次!

第 3 步:启动服务

bash
# 内置 Docker PostgreSQL
docker compose up -d --build

# 外部 PostgreSQL(跳过内置数据库)
docker compose up -d --build control-plane admin

第 4 步:验证

bash
curl http://127.0.0.1:8080/healthz
# {"status":"ok","checks":{"database":"ok","agent":"ok"}}

服务地址:

  • APIhttp://YOUR_HOST:8080
  • 管理后台http://YOUR_HOST:3000
  • SSH 代理YOUR_HOST:2222

给用户开机器

完整流程分 5 步:登录 → 添加出口 IP → 创建用户 → 创建主机并绑定 → 发给用户连接命令

1. 获取管理员 Token

可以通过管理后台登录,也可以通过 API:

bash
TOKEN=$(curl -s -X POST http://YOUR_HOST:8080/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"你的管理员密码"}' | grep -o '"token":"[^"]*"' | cut -d'"' -f4)

2. 添加出口 IP

支持两种隧道类型:

WireGuard 类型(全隧道 VPN):

bash
curl -s -X POST http://YOUR_HOST:8080/v1/admin/egress-ips \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "hk-wg-01",
    "ip_address": "203.0.113.10",
    "tunnel_type": "wireguard",
    "provider": "manual",
    "wg_endpoint": "vpn-provider.example.com:51820",
    "wg_public_key": "对端公钥Base64",
    "wg_allowed_ips": "0.0.0.0/0",
    "wg_peer_address": "10.0.0.2/32"
  }'

Proxy 类型(代理协议):

支持 5 种协议 — SOCKS5、VMess、Shadowsocks、Trojan、HTTP。

bash
# Shadowsocks 示例
curl -s -X POST http://YOUR_HOST:8080/v1/admin/egress-ips \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "jp-ss-01",
    "ip_address": "198.51.100.5",
    "tunnel_type": "proxy",
    "provider": "manual",
    "proxy_config": {
      "type": "shadowsocks",
      "server": "198.51.100.5",
      "server_port": 8388,
      "method": "aes-256-gcm",
      "password": "your-ss-password"
    }
  }'
bash
# SOCKS5 示例
curl -s -X POST http://YOUR_HOST:8080/v1/admin/egress-ips \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "us-socks-01",
    "ip_address": "192.0.2.50",
    "tunnel_type": "proxy",
    "provider": "manual",
    "proxy_config": {
      "type": "socks",
      "server": "192.0.2.50",
      "server_port": 1080,
      "username": "user",
      "password": "pass"
    }
  }'

测试出口 IP 连通性:

bash
curl -s -X POST http://YOUR_HOST:8080/v1/admin/egress-ips/{ipID}/test \
  -H "Authorization: Bearer $TOKEN"

测试结果包括连通性、出口 IP 匹配和 DNS 泄漏三项检测。

3. 创建用户

bash
curl -s -X POST http://YOUR_HOST:8080/v1/admin/users \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "zhangsan",
    "password": "给用户的初始密码",
    "expires_at": "2026-12-31T23:59:59Z"
  }'

4. 创建主机并绑定出口 IP

创建主机:

bash
curl -s -X POST http://YOUR_HOST:8080/v1/admin/hosts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"user_id": "用户UUID"}'

绑定出口 IP:

bash
curl -s -X POST http://YOUR_HOST:8080/v1/admin/bindings \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"host_id": "主机UUID", "egress_ip_id": "出口IP的UUID"}'

TIP

一个主机至少需要绑定一个出口 IP 才能正常启动。

5. 发给用户

主机创建后,在管理后台的主机详情页可以复制用户的接入命令。或者直接把以下命令发给用户(替换 SHORT_ID 为主机短 ID):

bash
curl -sSf http://YOUR_HOST/entry/SHORT_ID | bash

也可以使用 bootstrap 方式(需要用户输入用户名):

bash
curl -sSf http://YOUR_HOST:8080/v1/bootstrap/script | bash

用户使用方式

可以直接把这一段发给你的用户。

接入云主机

在终端执行管理员给你的命令:

bash
curl -sSf http://YOUR_HOST/entry/abc123 | bash

输入密码后,几秒即可进入专属云主机。

预装工具

容器内已预装以下工具:

工具说明
Claude CodeAI 编程助手,直接在终端运行 claude 即可使用
KasmVNC + Chromium浏览器远程桌面,通过管理后台或用户面板访问
Git版本控制
tmux终端复用,断线不丢失会话
zsh增强 Shell 体验
Node.jsJavaScript 运行时

使用 Claude Code

进入云主机后,直接运行:

bash
claude

所有 Claude API 请求自动通过管理员指定的出口 IP 路由,无需任何额外代理配置。

断线重连

如果 SSH 连接中断,重新执行同一条 curl 命令即可恢复。容器不会因为断开连接而停止。

重建主机

如果需要重置环境,可以在用户面板中点击"重建"按钮。重建会重新创建容器,但 home 目录数据会保留。

下一步