Tailscale(Gateway ダッシュボード)
OpenClaw は、Gateway ダッシュボードと WebSocket ポート用に Tailscale Serve(tailnet)または Funnel(公開)を自動設定できます。これにより、Gateway を loopback にバインドしたまま、Tailscale が HTTPS、ルーティング、および(Serve の場合)アイデンティティヘッダーを提供します。
モード
- serve:tailscale serve 経由の Tailnet のみの Serve。Gateway は 127.0.0.1 に留まります。
- funnel:tailscale funnel 経由の公開 HTTPS。OpenClaw には共有パスワードが必要です。
- off:デフォルト(Tailscale 自動化なし)
認証
ハンドシェイクを制御するには、gateway.auth.mode を設定します:
- token(OPENCLAW_GATEWAY_TOKEN が設定されている場合のデフォルト)
- password(OPENCLAW_GATEWAY_PASSWORD または config 経由の共有シークレット)
tailscale.mode = "serve" かつ gateway.auth.allowTailscale が true の場合、有効な Serve プロキシリクエストは、トークン/パスワードを提供せずに Tailscale アイデンティティヘッダー(tailscale-user-login)経由で認証できます。OpenClaw は、ローカル Tailscale デーモン(tailscale whois)経由で x-forwarded-for アドレスを解決し、それを受け入れる前にヘッダーと一致させることで、アイデンティティを検証します。OpenClaw は、Tailscale の x-forwarded-for、x-forwarded-proto、および x-forwarded-host ヘッダーを持つ loopback から到着した場合にのみ、リクエストを Serve として扱います。明示的な認証情報を要求するには、gateway.auth.allowTailscale: false を設定するか、gateway.auth.mode: "password" を強制してください。
Config 例
Tailnet のみ(Serve)
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" }
}
}
開く:https://<magicdns>/(または設定された gateway.controlUi.basePath)
Tailnet のみ(Tailnet IP にバインド)
Gateway を Tailnet IP で直接リッスンさせたい場合に使用します(Serve/Funnel なし)。
{
gateway: {
bind: "tailnet",
auth: { mode: "token", token: "your-token" }
}
}
別の Tailnet デバイスから接続:
- Control UI:http://<tailscale-ip>:18789/
- WebSocket:ws://<tailscale-ip>:18789
注意:このモードでは loopback(http://127.0.0.1:18789)は機能しません。
公開インターネット(Funnel + 共有パスワード)
{
gateway: {
bind: "loopback",
tailscale: { mode: "funnel" },
auth: { mode: "password", password: "replace-me" }
}
}
パスワードをディスクにコミットするよりも、OPENCLAW_GATEWAY_PASSWORD を優先してください。
CLI 例
openclaw gateway --tailscale serve
openclaw gateway --tailscale funnel --auth password
注意
- Tailscale Serve/Funnel には、tailscale CLI がインストールされ、ログインしている必要があります。
- tailscale.mode: "funnel" は、公開露出を避けるため、auth モードが password でない限り起動を拒否します。
- gateway.tailscale.resetOnExit を設定すると、OpenClaw はシャットダウン時に tailscale serve または tailscale funnel 設定を元に戻します。
- gateway.bind: "tailnet" は直接の Tailnet バインドです(HTTPS なし、Serve/Funnel なし)。
- gateway.bind: "auto" は loopback を優先します。Tailnet のみが必要な場合は tailnet を使用してください。
- Serve/Funnel は Gateway control UI + WS のみを公開します。ノードは同じ Gateway WS エンドポイント経由で接続するため、Serve はノードアクセスに機能します。
ブラウザコントロール(リモート Gateway + ローカルブラウザ)
Gateway を1つのマシンで実行しているが、別のマシンでブラウザを駆動したい場合は、ブラウザマシンでノードホストを実行し、両方を同じ tailnet 上に保ちます。Gateway はブラウザアクションをノードにプロキシします。別のコントロールサーバーや Serve URL は必要ありません。
ブラウザコントロールには Funnel を避けてください。ノードペアリングをオペレーターアクセスと同様に扱ってください。
Tailscale の前提条件 + 制限
- Serve には、tailnet で HTTPS が有効になっている必要があります。欠落している場合、CLI がプロンプトします。
- Serve は Tailscale アイデンティティヘッダーを注入します。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