# VPS-Commander 部署与运维指南 本文档介绍 VPS-Commander 当前生产环境部署架构、凭据规范、Agent 接入、升级与回滚流程。 --- ## 一、系统架构与端口规划 - **Hub 服务端**:监听 `127.0.0.1:9521`,不直接暴露公网。 - **反向代理**:公网 HTTPS/WSS 入口为 `https://vpstool.kory.kdns.fr`。 - **Agent 客户端**:通过 `wss://vpstool.kory.kdns.fr/agent/ws` 主动回连 Hub。 反代必须支持: - WebSocket Upgrade; - `/agent/ws`; - `/mcp/*`; - `/api/v1/*`; - `/panel/*`; - `/.well-known/*`; - `/oauth/*`。 --- ## 二、凭据安全规范(强制要求) ### 2.1 Hub 凭据 Hub 使用: - `VPS_COMMANDER_API_KEY`; - `VPS_COMMANDER_WEB_PASSWORD`。 生产环境不再依赖 `VPS_COMMANDER_CLUSTER_SECRET` 作为 Agent 身份 fallback。 ### 2.2 Agent 凭据 每台 Agent 使用独立: `VPS_COMMANDER_AGENT_TOKEN`。 Hub SQLite 仅保存 Credential Hash。 ### 2.3 文件权限 ```bash chmod 0600 /etc/vps-commander/hub.env chmod 0600 /etc/vps-commander/agent.env ``` ### 2.4 v2.1 安全要求 当前 v2.0 代码仍兼容旧的 `-token` 参数;下一版本要求 Secret 不出现在 argv / `/proc/*/cmdline`,优先使用 systemd EnvironmentFile / LoadCredential。 --- ## 三、一键安装与升级 ### 3.1 一键安装 ```bash curl -fsSL https://gitea.king.nyc.mn/openclaw/vps-commander/raw/branch/main/deploy/install.sh | sudo bash ``` 脚本自动识别 `amd64/arm64`,并进入 Hub / Agent 安装流程。 - Hub:自动生成 API Key 与 Web 面板密码。 - Agent:输入 Hub WSS 地址、节点名称和独立 Agent Token。 - 生产环境不再要求 Cluster Secret 作为长期凭据。 ### 3.2 一键升级 Agent ```bash curl -fsSL https://gitea.king.nyc.mn/openclaw/vps-commander/raw/branch/main/deploy/upgrade-agent.sh | sudo bash ``` 升级流程: ```text 下载 Release ↓ 临时文件完整性检查 ↓ 备份当前 Agent ↓ 原子替换 ↓ systemd restart ↓ 健康检查 ├─ 成功 → 删除备份 └─ 失败 → 自动恢复旧版本 ``` ### 3.3 手工安装 如果需要固定版本、离线部署或灰度验证,再使用下面的手工安装流程。 --- ## 四、Hub 服务端部署步骤 ### 4.1 编译 ```bash cd /root/.openclaw/workspace/vps-commander go test ./... go test -race ./... git diff --check make clean make linux-amd64 ``` 发布前必须确认: ```text vcs.modified=false vcs.revision= ``` ### 4.2 安装 ```bash install -d -m 0750 /opt/vps-commander/data /etc/vps-commander install -m 0755 bin/vps-commander-hub-linux-amd64 /opt/vps-commander/vps-commander-hub ``` ### 4.3 配置 ```bash cat << 'ENV' > /etc/vps-commander/hub.env VPS_COMMANDER_API_KEY=your_secure_api_key VPS_COMMANDER_WEB_PASSWORD=your_web_password ENV chmod 0600 /etc/vps-commander/hub.env ``` ### 4.4 Systemd ```ini [Service] EnvironmentFile=-/etc/vps-commander/hub.env ExecStart=/opt/vps-commander/vps-commander-hub -addr 127.0.0.1:9521 -db /opt/vps-commander/data/commander.db Restart=always RestartSec=3s ``` ### 4.5 启动 ```bash systemctl daemon-reload systemctl enable --now vps-commander-hub systemctl status vps-commander-hub ``` --- ## 五、远程 Agent 节点部署步骤 ### 5.1 安装二进制 ```bash install -d -m 0750 /etc/vps-commander /opt/vps-commander install -m 0755 vps-commander-agent-linux-amd64 /opt/vps-commander/vps-commander-agent ``` ### 5.2 配置 ```bash cat << 'ENV' > /etc/vps-commander/agent.env VPS_COMMANDER_HUB_WS_URL=wss://vpstool.kory.kdns.fr/agent/ws VPS_COMMANDER_AGENT_NAME=vps-node-01 VPS_COMMANDER_AGENT_TOKEN= ENV chmod 0600 /etc/vps-commander/agent.env ``` ### 5.3 Systemd ```ini [Service] EnvironmentFile=-/etc/vps-commander/agent.env ExecStart=/opt/vps-commander/vps-commander-agent -hub ${VPS_COMMANDER_HUB_WS_URL} -name ${VPS_COMMANDER_AGENT_NAME} Restart=always RestartSec=3s ``` 当前 v2.0 生产迁移阶段可兼容显式 token;v2.1 发布后必须改为不出现在 ExecStart 的方式。 ### 5.4 启动 ```bash systemctl daemon-reload systemctl enable --now vps-commander-agent systemctl status vps-commander-agent ``` Agent 启动后主动连接 Hub,并在设备列表中显示为 `online`。 --- ## 六、控制面板与 MCP 使用 ### 6.1 管理面板 `https://vpstool.kory.kdns.fr/panel/login` 面板包含设备状态、安全策略、操作控制、审计和相关管理功能。 ### 6.2 MCP 远程入口: `https://vpstool.kory.kdns.fr/mcp/sse` 本地 stdio 使用 `vps-commander-mcp-stdio`。 当前共 12 个 MCP tools,详见 `docs/MCP_INTEGRATION.md`。 --- ## 七、生产升级流程 ```text Backup ↓ Clean Build ↓ Single-node Gray Release ↓ Hub Restart Recovery ↓ Rolling Agent ↓ MCP / Security / Audit Smoke Test ↓ Full Acceptance ``` 任一节点断联、权限绕过、Credential 泄露或协议不兼容,立即停止发布并回滚。 --- ## 八、日常运维检查 ```bash systemctl status vps-commander-hub journalctl -u vps-commander-hub -n 100 curl -fsS http://127.0.0.1:9521/healthz ``` 集群可通过 Web Panel、`/api/v1/devices` 或 MCP `list_devices` 检查。 --- ## 九、当前生产审计提示 2026-10-02 审计发现生产 Hub / Agent 曾由 `vcs.modified=true` 的工作树构建。 因此生产现场二进制不能直接视为当前 HEAD 的可复现产物。 下一次正式发布必须 clean rebuild,并重新部署与验证。