Web(Gateway)¶
Gateway は、Gateway WebSocket と同じポートから小規模な ブラウザー コントロール UI(Vite + Lit)を提供します。
- デフォルト:
http://<host>:18789/ - オプションのプレフィックス:
gateway.controlUi.basePathを設定(例:/openclaw)
- 機能は Control UI にあります。 このページでは、バインドモード、セキュリティ、ウェブ面に焦点を当てています。
Webhooks¶
hooks.enabled=true の場合、Gateway は同じ HTTP サーバー上で小規模な Webhook エンドポイントも公開します。
認証およびペイロードについては、Gateway configuration → hooks を参照してください。
認証+ペイロードについては、ゲートウェイ設定 → フック を参照してください。
Config(デフォルト有効)¶
アセットが存在する場合、コントロール UI は デフォルトで有効 です(dist/control-ui)。
設定で制御できます。
以下の設定で制御できます。
{
gateway: {
controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional
},
}
Tailscale アクセス¶
Integrated Serve(推奨)¶
Gateway を loopback に維持し、Tailscale Serve にプロキシさせます。
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" },
},
}
次に Gateway を起動します。
openclaw gateway
開く:
https://<magicdns>/(または設定したgateway.controlUi.basePath)
Tailnet バインド + トークン¶
{
gateway: {
bind: "tailnet",
controlUi: { enabled: true },
auth: { mode: "token", token: "your-token" },
},
}
次に Gateway を起動します(loopback 以外のバインドにはトークンが必要です)。
openclaw gateway
開く:
http://<tailscale-ip>:18789/(または設定したgateway.controlUi.basePath)
公開インターネット(Funnel)¶
{
gateway: {
bind: "loopback",
tailscale: { mode: "funnel" },
auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD
},
}
セキュリティ注記¶
- Gateway の認証はデフォルトで必須です(トークン/パスワード、または Tailscale のアイデンティティヘッダー)。
- loopback 以外のバインドでは、共有トークン/パスワードが 必須 です(
gateway.authまたは env)。 - ウィザードは、デフォルトで Gateway トークンを生成します(loopback の場合でも)。
- UI は
connect.params.auth.tokenまたはconnect.params.auth.passwordを送信します。 - コントロール UI はアンチクリックジャッキングのヘッダーを送信し、
gateway.controlUi.allowedOriginsが設定されていない限り、同一オリジンのブラウザー WebSocket 接続のみを受け付けます。 - Serve を使用する場合、
gateway.auth.allowTailscaleがtrueのとき、Tailscale のアイデンティティヘッダーで認証を満たせます(トークン/パスワード不要)。明示的な資格情報を必須にするにはgateway.auth.allowTailscale: falseを設定してください。詳細は Tailscale および Security を参照してください。 明示的な資格情報を必要とするには、gateway.auth.allowTailscale: falseを設定してください。 Tailscale と Security を参照してください。 gateway.tailscale.mode: "funnel"にはgateway.auth.mode: "password"(共有パスワード)が必要です。
UI のビルド¶
Gateway は dist/control-ui から静的ファイルを提供します。次のコマンドでビルドしてください。 以下でビルドします。
pnpm ui:build # auto-installs UI deps on first run