Web(网关)
网关从与网关 WebSocket 相同的端口提供一个小型浏览器控制 UI(Vite + Lit):
- ▹默认:http://<host>:18789/
- ▹可选前缀:设置
gateway.controlUi.basePath(例如/openclaw)
功能位于控制 UI 中。本页重点介绍绑定模式、安全性和面向 Web 的界面。
Webhooks
当 hooks.enabled=true 时,网关还会在同一 HTTP 服务器上公开一个小型 webhook 端点。
参见 网关配置 → hooks 了解身份验证和有效负载。
配置(默认启用)
当资源存在时(dist/control-ui),控制 UI 默认启用。您可以通过配置控制它:
json{ "gateway": { "controlUi": { "enabled": true, "basePath": "/openclaw" // basePath 可选 } } }
Tailscale 访问
集成 Serve(推荐)
将网关保持在回环地址上,让 Tailscale Serve 代理它:
json{ "gateway": { "bind": "loopback", "tailscale": { "mode": "serve" } } }
然后启动网关:
bashopenclaw gateway
打开:
- ▹https://<magicdns>/ (或您配置的
gateway.controlUi.basePath)
Tailnet 绑定 + 令牌
json{ "gateway": { "bind": "tailnet", "controlUi": { "enabled": true }, "auth": { "mode": "token", "token": "your-token" } } }
然后启动网关(非回环绑定需要令牌):
bashopenclaw gateway
打开:
- ▹http://<tailscale-ip>:18789/ (或您配置的
gateway.controlUi.basePath)
公共互联网(Funnel)
json{ "gateway": { "bind": "loopback", "tailscale": { "mode": "funnel" }, "auth": { "mode": "password" } // 或 OPENCLAW_GATEWAY_PASSWORD } }
安全注意事项
- ▹默认情况下需要网关身份验证(令牌/密码或 Tailscale 身份标头)。
- ▹非回环绑定仍需要共享令牌/密码(
gateway.auth或环境变量)。 - ▹向导默认生成网关令牌(即使在回环上)。
- ▹UI 发送
connect.params.auth.token或connect.params.auth.password。 - ▹对于非回环控制 UI 部署,显式设置
gateway.controlUi.allowedOrigins(完整来源)。没有它,网关启动默认被拒绝。 - ▹
gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true启用 Host 标头来源回退模式,但这是一个危险的安全降级。 - ▹使用 Serve 时,当
gateway.auth.allowTailscale为 true 时,Tailscale 身份标头可以满足控制 UI/WebSocket 身份验证(不需要令牌/密码)。 - ▹HTTP API 端点仍需要令牌/密码。设置
gateway.auth.allowTailscale: false以要求显式凭据。参见 Tailscale 和安全性。此无令牌流程假定网关主机是受信任的。 - ▹
gateway.tailscale.mode: "funnel"需要gateway.auth.mode: "password"(共享密码)。
构建 UI
网关从 dist/control-ui 提供静态文件。使用以下命令构建它们:
bashpnpm ui:build # 首次运行时自动安装 UI 依赖项