Tailscale(Gateway ダッシュボード)

OpenClaw は、Gateway ダッシュボードと WebSocket ポート用に Tailscale Serve(tailnet)または Funnel(公開)を自動設定できます。これにより、Gateway を loopback にバインドしたまま、Tailscale が HTTPS、ルーティング、および(Serve の場合)アイデンティティヘッダーを提供します。

モード

  • servetailscale serve 経由の Tailnet のみの Serve。Gateway は 127.0.0.1 に留まります。
  • funneltailscale funnel 経由の公開 HTTPS。OpenClaw には共有パスワードが必要です。
  • off:デフォルト(Tailscale 自動化なし)

認証

ハンドシェイクを制御するには、gateway.auth.mode を設定します:

  • tokenOPENCLAW_GATEWAY_TOKEN が設定されている場合のデフォルト)
  • passwordOPENCLAW_GATEWAY_PASSWORD または config 経由の共有シークレット)

tailscale.mode = "serve" かつ gateway.auth.allowTailscaletrue の場合、有効な Serve プロキシリクエストは、トークン/パスワードを提供せずに Tailscale アイデンティティヘッダー(tailscale-user-login)経由で認証できます。OpenClaw は、ローカル Tailscale デーモン(tailscale whois)経由で x-forwarded-for アドレスを解決し、それを受け入れる前にヘッダーと一致させることで、アイデンティティを検証します。OpenClaw は、Tailscale の x-forwarded-forx-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 上でポート 4438443、および 10000 のみをサポートします。
  • macOS の Funnel には、オープンソースの Tailscale アプリバリアントが必要です。

詳細