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.allowTailscaleがtrueのとき、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の依存関係を自動インストールします