Skip to content

Configuration

Commands

doctor — Five-Domain Self-Check

Diagnoses issues across five domains. Can target a single domain or auto-repair.

DomainWhat it checks
networkContainer network connectivity, egress IP reachability
authCredential validity, token availability
sshSSH connection stability, key configuration
mountsshfs mount state, FUSE compatibility
diskDisk space, inode usage
bash
cloud-claude doctor                  # run all five checks
cloud-claude doctor network          # check network only
cloud-claude doctor mount --fix      # check mount and auto-repair

env check — Remote Environment Check

bash
cloud-claude env check

Outputs the remote container's timezone, locale, egress IP, FUSE status, toolchain versions, and more.

explain — Error Code Lookup

bash
cloud-claude explain MOUNT_SSHFS_DISCONNECTED

Outputs the error code's meaning, possible causes, and suggested fixes.

Configuration Reference

Environment Variables

Create /etc/cloud-cli-proxy/env (systemd deployment) or .env (Docker Compose deployment). Use setup-env.sh for interactive generation.

Control Plane

VariableRequiredDefaultDescription
DATABASE_URLNofile:/data/cloud-cli-proxy.dbSQLite database file path
CONTROL_PLANE_ADDRNo:8080HTTP API listen address
ADMIN_USERNAMENoadminAdmin username
ADMIN_PASSWORDYesAdmin password (seed on first startup)
ADMIN_JWT_SECRETYesJWT signing key (32+ characters)
HOST_AGENT_MODENosocketsocket standalone process / embedded inside control plane
HOST_AGENT_SOCKETNo/run/cloud-cli-proxy/host-agent.sockAgent socket path
DATA_DIRNo/var/lib/cloud-cli-proxyData directory
SSH_PROXY_ADDRNo:2222SSH proxy listen address
LOG_FORMATNojsonLog format: json / text
LOG_LEVELNoinfoLog level: debug / info / warn / error

Database (SQLite)

VariableRequiredDefaultDescription
DATABASE_URLNofile:/data/cloud-cli-proxy.dbSQLite database file path

Service Ports

VariableDefaultDescription
CONTROL_PLANE_ADDR:8080Control plane listen address (API + Admin UI + SSH proxy)
SSH_PROXY_PORT2222SSH proxy port

cloud-claude Config

~/.cloud-claude/config.yaml:

yaml
gateway: https://gw.example.com
short_id: abc123
proxy_commands:
  - git
hot_sync_max_file_mb: 50
KeyDescriptionDefault
gatewayControl plane HTTPS address
short_idHost short ID
proxy_commandsCommands to run on the host["git"]
hot_sync_max_file_mbPer-file throttling threshold50

Environment variables:

  • CLOUD_CLAUDE_GATEWAY — same as gateway
  • CLOUD_CLAUDE_SHORT_ID — same as short_id
  • CLOUD_CLAUDE_PASSWORD — login password
  • CLOUD_CLAUDE_NO_PROMOTION=1 — disable cold-file promotion

Proxy Protocols

For proxy-type egress IPs, fill in proxy_config following the sing-box outbound format.

Supports six protocols: SOCKS5, Shadowsocks, VMess, VLESS, Trojan, HTTP.

SOCKS5

json
{
  "type": "socks",
  "server": "192.0.2.50",
  "server_port": 1080,
  "username": "user",
  "password": "pass"
}

Shadowsocks

json
{
  "type": "shadowsocks",
  "server": "198.51.100.5",
  "server_port": 8388,
  "method": "aes-256-gcm",
  "password": "your-password"
}

Supported methods: aes-128-gcm, aes-256-gcm, chacha20-ietf-poly1305.

VMess

json
{
  "type": "vmess",
  "server": "203.0.113.20",
  "server_port": 443,
  "uuid": "your-uuid",
  "security": "auto",
  "alter_id": 0
}

Trojan

json
{
  "type": "trojan",
  "server": "203.0.113.30",
  "server_port": 443,
  "password": "your-password",
  "tls": {
    "enabled": true,
    "server_name": "your-domain.com"
  }
}

HTTP

json
{
  "type": "http",
  "server": "192.0.2.100",
  "server_port": 8080,
  "username": "user",
  "password": "pass"
}

The egress IP form in the admin dashboard provides a protocol selector with corresponding fields, plus a JSON editor mode.

Firewall

Container Level

The host agent uses nftables to set default-deny policies for each container's netns. Rules are managed automatically; no manual configuration is needed.

Host Level

A basic host firewall is recommended:

bash
nft add table inet filter
nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }'
nft add rule inet filter input ct state established,related accept
nft add rule inet filter input iif lo accept
nft add rule inet filter input tcp dport 22 accept
nft add rule inet filter input tcp dport 8080 accept
# Admin UI is now embedded in control-plane, no separate port needed
nft add rule inet filter input tcp dport 2222 accept

Docker Images

All images are built via GitHub Actions for linux/amd64 and linux/arm64.

ImageRegistry
control-planeghcr.io/zanel1u/cloud-cli-proxy/control-plane
managed-userghcr.io/zanel1u/cloud-cli-proxy/managed-user

Tag convention:

TagDescription
latestLatest from main
1.2.3Release version
1.2Follows latest patch
1Follows latest minor

Pin to a specific version in production.

User Container Pre-installed Software

SoftwareDescription
OpenSSH ServerSSH access
Claude CodeAI coding assistant
KasmVNC + ChromiumRemote desktop
sing-boxTunnel client
Git, tmux, zshDev tools
Node.jsJavaScript runtime