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