Webインターフェース

Web

Gatewayは、Gateway WebSocketと同じポートから小さなブラウザ用Control UI (Vite + Lit)を提供します:

  • デフォルト: http://<host>:18789/
  • オプションのプレフィックス: gateway.controlUi.basePathを設定 (例: /openclaw)

機能の詳細はControl UIにあります。このページでは、バインドモード、セキュリティ、およびWeb向けのインターフェースに焦点を当てます。

Webhook

hooks.enabled=trueの場合、Gatewayは同じHTTPサーバー上に小さなWebhookエンドポイントも公開します。認証とペイロードについては、Gateway設定hooksを参照してください。

設定 (デフォルトで有効)

Control UIは、アセットが存在する場合 (dist/control-ui)、デフォルトで有効です。設定で制御できます:

{
  gateway: {
    controlUi: { enabled: true, basePath: "/openclaw" }, // basePathはオプション
  },
}

Tailscaleアクセス

統合Serve (推奨)

Gatewayをループバック上に維持し、Tailscale Serveにプロキシさせます:

{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "serve" },
  },
}

その後、gatewayを起動します:

openclaw gateway

開くURL:

  • https://<magicdns>/ (または設定したgateway.controlUi.basePath)

Tailnetバインド + トークン

{
  gateway: {
    bind: "tailnet",
    controlUi: { enabled: true },
    auth: { mode: "token", token: "your-token" },
  },
}

その後、gatewayを起動します (ループバック以外のバインドではトークンが必要):

openclaw gateway

開くURL:

  • http://<tailscale-ip>:18789/ (または設定したgateway.controlUi.basePath)

パブリックインターネット (Funnel)

{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "funnel" },
    auth: { mode: "password" }, // または OPENCLAW_GATEWAY_PASSWORD
  },
}

セキュリティに関する注意点

  • Gateway認証はデフォルトで必要です (トークン/パスワードまたはTailscale IDヘッダー)。
  • ループバック以外のバインドでも、共有トークン/パスワード (gateway.authまたは環境変数) が必要です。
  • ウィザードはデフォルトでgatewayトークンを生成します (ループバック上でも)。
  • UIはconnect.params.auth.tokenまたはconnect.params.auth.passwordを送信します。
  • ループバック以外のControl UIデプロイメントでは、gateway.controlUi.allowedOriginsを明示的に設定してください (完全なオリジン)。これがない場合、デフォルトではgatewayの起動が拒否されます。
  • gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueはHostヘッダーによるオリジンフォールバックモードを有効にしますが、セキュリティを危険に低下させます。
  • Serveを使用する場合、gateway.auth.allowTailscaletrueのとき、Tailscale IDヘッダーがControl UI/WebSocket認証を満たすことができます (トークン/パスワードは不要)。HTTP APIエンドポイントは引き続きトークン/パスワードを必要とします。明示的な認証情報を要求するにはgateway.auth.allowTailscale: falseを設定します。詳細はTailscaleおよびセキュリティを参照してください。このトークンレスフローは、gatewayホストが信頼されていることを前提としています。
  • gateway.tailscale.mode: "funnel"gateway.auth.mode: "password" (共有パスワード) を必要とします。

UIのビルド

Gatewayはdist/control-uiから静的ファイルを提供します。以下のコマンドでビルドします:

pnpm ui:build # 初回実行時はUIの依存関係を自動インストールします

脅威モデルへの貢献Control UI