Dashboard(Control UI)
Gateway ダッシュボードは、デフォルトでは/ で提供されるブラウザー Control UI です
(gateway.controlUi.basePath で上書き可能)。
すばやく開く(ローカル Gateway):
主な参照先:
- 使い方と UI 機能については Control UI。
- Serve/Funnel の自動化については Tailscale。
- bind モードとセキュリティに関する注意事項については Web surfaces。
connect.params.auth.tokenconnect.params.auth.passwordgateway.auth.allowTailscale: trueのときの Tailscale Serve identity headersgateway.auth.mode: "trusted-proxy"のときの trusted-proxy identity headers
gateway.auth については Gateway configuration を参照してください。
セキュリティ上の注意: Control UI は管理者向け画面です(チャット、設定、exec approvals)。
公開しないでください。UI はダッシュボード URL トークンを、現在のブラウザータブセッションおよび選択された gateway URL に対して sessionStorage に保持し、読み込み後に URL から削除します。
localhost、Tailscale Serve、または SSH トンネルを優先してください。
最短経路(推奨)
- オンボーディング後、CLI はダッシュボードを自動で開き、クリーンな(トークンなしの)リンクを表示します。
- いつでも再度開けます:
openclaw dashboard(リンクをコピーし、可能ならブラウザーを開き、headless なら SSH ヒントを表示します)。 - UI が共有シークレット認証を求める場合は、設定済みの token または password を Control UI settings に貼り付けてください。
認証の基本(ローカルとリモート)
- Localhost:
http://127.0.0.1:18789/を開きます。 - 共有シークレット token の取得元:
gateway.auth.token(またはOPENCLAW_GATEWAY_TOKEN)。openclaw dashboardは、1回限りのブートストラップ用に URL fragment 経由でこれを渡せます。また、Control UI はこれを localStorage ではなく、現在のブラウザータブセッションと選択された gateway URL に対する sessionStorage に保持します。 gateway.auth.tokenが SecretRef 管理されている場合、openclaw dashboardは 設計上、トークンなし URL を表示/コピー/オープンします。これにより、 外部管理されたトークンが shell ログ、クリップボード履歴、またはブラウザー起動引数に露出するのを防ぎます。gateway.auth.tokenが SecretRef として設定されていて、現在の shell で未解決でも、openclaw dashboardは引き続きトークンなし URL と、 実行可能な認証セットアップガイダンスを表示します。- 共有シークレット password: 設定済みの
gateway.auth.password(またはOPENCLAW_GATEWAY_PASSWORD)を使用します。ダッシュボードは password をリロード後も保持しません。 - ID 付きモード:
gateway.auth.allowTailscale: trueの場合、Tailscale Serve は identity headers により Control UI/WebSocket の認証を満たせます。また、 non-loopback の identity-aware reverse proxy はgateway.auth.mode: "trusted-proxy"を満たせます。これらのモードでは、ダッシュボードは WebSocket 用に共有シークレットを貼り付ける必要がありません。 - localhost 以外: Tailscale Serve、non-loopback の shared-secret bind、
gateway.auth.mode: "trusted-proxy"を使う non-loopback の identity-aware reverse proxy、 または SSH トンネルを使ってください。HTTP APIs は、意図的に private-ingress のgateway.auth.mode: "none"または trusted-proxy HTTP auth を使っていない限り、引き続き shared-secret auth を使います。Web surfaces を参照してください。
「unauthorized」 / 1008 が表示された場合
- gateway に到達できることを確認してください(ローカル:
openclaw status、リモート: SSH トンネルssh -N -L 18789:127.0.0.1:18789 user@hostを張ってからhttp://127.0.0.1:18789/を開く)。 AUTH_TOKEN_MISMATCHの場合、gateway が retry ヒントを返すと、クライアントはキャッシュ済み device token を使って信頼された再試行を1回行うことがあります。その cached-token retry は、その token のキャッシュ済み approved scopes を再利用します。明示的なdeviceToken/ 明示的なscopesの呼び出し元は、要求した scope セットを保持します。その再試行後も認証に失敗する場合は、token drift を手動で解消してください。- その再試行パス以外では、接続認証の優先順位は、明示的 shared token/password が先、その次に明示的
deviceToken、次に保存済み device token、最後に bootstrap token です。 - 非同期の Tailscale Serve Control UI パスでは、同じ
{scope, ip}に対する失敗試行は、failed-auth limiter に記録される前に直列化されるため、2回目の同時不正再試行ではすでにretry laterが表示される場合があります。 - token drift の修復手順については、Token drift recovery checklist に従ってください。
- gateway host から共有シークレットを取得または指定してください:
- Token:
openclaw config get gateway.auth.token - Password: 設定済みの
gateway.auth.passwordまたはOPENCLAW_GATEWAY_PASSWORDを解決する - SecretRef 管理 token: 外部シークレットプロバイダーを解決するか、この
shell で
OPENCLAW_GATEWAY_TOKENを export してから、openclaw dashboardを再実行する - 共有シークレットが設定されていない:
openclaw doctor --generate-gateway-token
- Token:
- ダッシュボード settings で、auth フィールドに token または password を貼り付けてから接続してください。