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 依赖