Tailscale(Gatewayダッシュボード)
OpenClawは、GatewayダッシュボードとWebSocketポート向けに、TailscaleのServe(tailnet)またはFunnel(公開)を自動設定できます。これにより、Gatewayをloopbackにbindしたまま、TailscaleがHTTPS、ルーティング、および(Serveでは)IDヘッダーを提供します。モード
serve:tailscale serveによるtailnet専用Serve。gatewayは127.0.0.1のままです。funnel:tailscale funnelによる公開HTTPS。OpenClawは共有パスワードを必須とします。off: デフォルト(Tailscale自動化なし)。
認証
ハンドシェイクを制御するにはgateway.auth.modeを設定します:
none(プライベートingressのみ)token(OPENCLAW_GATEWAY_TOKENが設定されている場合のデフォルト)password(OPENCLAW_GATEWAY_PASSWORDまたは設定による共有シークレット)trusted-proxy(ID認識型リバースプロキシ。Trusted Proxy Authを参照)
tailscale.mode = "serve"かつgateway.auth.allowTailscaleがtrueの場合、
Control UI/WebSocket認証では、トークン/パスワードを渡さずにTailscaleのIDヘッダー
(tailscale-user-login)を使用できます。OpenClawは、x-forwarded-forアドレスをローカルのTailscaleデーモン(tailscale whois)で解決し、それをヘッダーと照合してから受け入れることで、IDを検証します。
OpenClawは、リクエストがloopbackから到着し、かつTailscaleのx-forwarded-for、x-forwarded-proto、x-forwarded-hostヘッダーを持つ場合にのみ、それをServeとして扱います。
HTTP APIエンドポイント(たとえば/v1/*、/tools/invoke、/api/channels/*)は、TailscaleのIDヘッダー認証を使用しません。これらは引き続きgatewayの通常のHTTP認証モードに従います。デフォルトでは共有シークレット認証で、意図的に設定されたtrusted-proxy / private-ingressのnone構成も可能です。
このトークン不要フローは、gatewayホストが信頼されていることを前提としています。同じホスト上で信頼できないローカルコードが実行される可能性がある場合は、gateway.auth.allowTailscaleを無効にし、代わりにtoken/password認証を必須にしてください。
明示的な共有シークレット認証情報を必須にするには、gateway.auth.allowTailscale: falseを設定し、gateway.auth.mode: "token"または"password"を使用してください。
設定例
tailnet専用(Serve)
https://<magicdns>/(または設定したgateway.controlUi.basePath)
tailnet専用(Tailnet IPにbind)
GatewayをTailnet IPで直接listenさせたい場合に使用します(Serve/Funnelなし)。- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
http://127.0.0.1:18789)は動作しません。
公開インターネット(Funnel + 共有パスワード)
OPENCLAW_GATEWAY_PASSWORDを推奨します。
CLI例
注記
- Tailscale Serve/Funnelを使用するには、
tailscaleCLIがインストールされ、ログイン済みである必要があります。 tailscale.mode: "funnel"は、公開露出を避けるため、認証モードがpasswordでない限り起動を拒否します。- 終了時にOpenClawが
tailscale serveまたはtailscale funnel設定を元に戻すようにしたい場合は、gateway.tailscale.resetOnExitを設定してください。 gateway.bind: "tailnet"は直接のTailnet bindです(HTTPSなし、Serve/Funnelなし)。gateway.bind: "auto"はloopbackを優先します。tailnet専用にしたい場合はtailnetを使用してください。- Serve/Funnelが公開するのはGateway control UI + WSのみです。ノードは同じGateway WSエンドポイント経由で接続するため、Serveはノードアクセスにも利用できます。
ブラウザー制御(リモートGateway + ローカルブラウザー)
Gatewayをあるマシンで実行しつつ、別のマシン上のブラウザーを操作したい場合は、 ブラウザーマシン上でnode hostを実行し、両方を同じtailnet上に置いてください。 Gatewayはブラウザー操作をそのノードへプロキシするため、別個の制御サーバーやServe URLは不要です。 ブラウザー制御にFunnelは避けてください。ノードのペアリングは運用者アクセスとして扱ってください。Tailscaleの前提条件と制限
- Serveには、tailnetでHTTPSが有効になっている必要があります。欠けている場合、CLIがプロンプトを表示します。
- ServeはTailscaleのIDヘッダーを注入します。Funnelは注入しません。
- Funnelには、Tailscale v1.38.3+、MagicDNS、有効なHTTPS、およびfunnelノード属性が必要です。
- Funnelは、TLS上で
443、8443、10000ポートのみをサポートします。 - macOSでのFunnelには、オープンソース版のTailscaleアプリが必要です。
詳しく見る
- Tailscale Serve概要: https://tailscale.com/kb/1312/serve
tailscale serveコマンド: https://tailscale.com/kb/1242/tailscale-serve- Tailscale Funnel概要: https://tailscale.com/kb/1223/tailscale-funnel
tailscale funnelコマンド: https://tailscale.com/kb/1311/tailscale-funnel