Web interfaces
ウェブ
Gateway は、Gateway WebSocket と同じポートから小さな ブラウザー Control UI (Vite + Lit) を提供します。
- デフォルト:
http://<host>:18789/ gateway.tls.enabled: trueの場合:https://<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 optional
},
}
Tailscale アクセス
統合 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 認証はデフォルトで必須です (有効な場合はトークン、パスワード、trusted-proxy、または Tailscale Serve ID ヘッダー)。
- 非 loopback バインドでも Gateway 認証は引き続き必須です。実際には、これはトークン/パスワード認証、または
gateway.auth.mode: "trusted-proxy"を使用した ID 対応リバースプロキシを意味します。 - ウィザードはデフォルトで共有シークレット認証を作成し、通常は Gateway トークンを生成します (loopback の場合でも)。
- 共有シークレットモードでは、UI は
connect.params.auth.tokenまたはconnect.params.auth.passwordを送信します。 gateway.tls.enabled: trueの場合、ローカルダッシュボードとステータスヘルパーはhttps://ダッシュボード URL とwss://WebSocket URL を表示します。- Tailscale Serve や
trusted-proxyなどの ID を含むモードでは、代わりにリクエストヘッダーから WebSocket 認証チェックが満たされます。 - 非 loopback の Control UI デプロイでは、
gateway.controlUi.allowedOriginsを明示的に設定してください (完全なオリジン)。設定しない場合、Gateway の起動はデフォルトで拒否されます。 gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueは Host ヘッダーのオリジンフォールバックモードを有効にしますが、危険なセキュリティ低下です。- Serve では、
gateway.auth.allowTailscaleがtrueの場合、Tailscale ID ヘッダーで Control UI/WebSocket 認証を満たせます (トークン/パスワードは不要)。HTTP API エンドポイントはこれらの Tailscale ID ヘッダーを使用せず、代わりに Gateway の通常の HTTP 認証モードに従います。明示的な認証情報を要求するには、gateway.auth.allowTailscale: falseを設定します。Tailscale と セキュリティ を参照してください。このトークンなしフローは、Gateway ホストが信頼されていることを前提としています。 gateway.tailscale.mode: "funnel"にはgateway.auth.mode: "password"(共有パスワード) が必要です。
UI のビルド
Gateway は dist/control-ui から静的ファイルを提供します。次でビルドします。
pnpm ui:build