- デフォルト:
http://<host>:18789/ gateway.tls.enabled: trueの場合:https://<host>:18789/- 任意のプレフィックス:
gateway.controlUi.basePathを設定します (例:/openclaw)
設定 (デフォルトで有効)
Control UI は、アセットが存在する場合 (dist/control-ui) に デフォルトで有効 です。
Webhook
hooks.enabled=true の場合、Gateway は同じ HTTP サーバー上に Webhook エンドポイントも公開します。認証とペイロードについては、Gateway 設定リファレンス の hooks を参照してください。
管理 HTTP RPC
POST /api/v1/admin/rpc は、選択された Gateway コントロールプレーンメソッドを HTTP 経由で公開します。デフォルトではオフで、admin-http-rpc Plugin が有効な場合にのみ登録されます。認証モデル、許可されるメソッド、WebSocket API との比較については、管理 HTTP RPC を参照してください。
Tailscale アクセス
- Integrated Serve (recommended)
- Tailnet bind + token
- Public internet (Funnel)
Gateway を loopback に保持し、Tailscale Serve にプロキシさせます。Gateway を起動します。
https://<magicdns>/ (または設定済みの gateway.controlUi.basePath) を開きます。セキュリティメモ
- Gateway 認証はデフォルトで必須です。token、password、trusted-proxy、または有効化されている場合は Tailscale Serve ID ヘッダーを使用します。
- 非 loopback バインドでも Gateway 認証は 必須 です。token/password 認証、または
gateway.auth.mode: "trusted-proxy"を持つ ID 対応リバースプロキシを使用します。 - オンボーディング ウィザードはデフォルトで共有シークレット認証を作成し、通常は loopback 上でも Gateway トークンを生成します。
- 共有シークレットモードでは、UI は WebSocket ハンドシェイク中に
connect.params.auth.tokenまたはconnect.params.auth.passwordを送信します。 gateway.tls.enabled: trueの場合、ローカルのダッシュボード/ステータスヘルパーはhttps://URL とwss://WebSocket URL をレンダリングします。- ID を持つモード (Tailscale Serve、
trusted-proxy) では、WebSocket 認証チェックは共有シークレットではなくリクエストヘッダーから満たされます。 - 公開された非 loopback Control UI デプロイでは、
gateway.controlUi.allowedOriginsを明示的に設定してください (完全なオリジン)。プライベートな同一オリジン読み込みは、loopback、RFC1918/link-local、.local、.ts.net、Tailscale CGNAT ホストでは、設定なしで受け入れられます。 gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback: trueは Host ヘッダーのオリジンフォールバックを有効にします。これは危険なセキュリティ低下です。- Serve では、
gateway.auth.allowTailscale: trueの場合、Tailscale ID ヘッダーが Control UI/WebSocket 認証を満たします (token/password は不要)。HTTP API エンドポイントは Tailscale ID ヘッダーを使用せず、常に Gateway の通常の HTTP 認証モードに従います。Serve 経由でも明示的な認証情報を必須にするには、gateway.auth.allowTailscale: falseを設定します。このトークンなしフローは、Gateway ホスト自体が信頼されていることを前提とします。Tailscale と セキュリティ を参照してください。
UI のビルド
Gateway はdist/control-ui から静的ファイルを提供します。