Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

Tailscale (panel Gateway)

OpenClaw może automatycznie konfigurować Tailscale Serve (tailnet) lub Funnel (publiczny) dla panelu Gateway oraz portu WebSocket. Dzięki temu Gateway pozostaje powiązany z loopback, a Tailscale zapewnia HTTPS, routing oraz (dla Serve) nagłówki tożsamości.

Mody

  • serve: Serve tylko w tailnecie przez tailscale serve. Gateway pozostaje na 127.0.0.1.
  • funnel: Publiczny HTTPS przez tailscale funnel. OpenClaw wymaga wspólnego hasła.
  • off: Domyślny (bez automatyzacji Tailscale).

Uwierzytelnianie

Ustaw gateway.auth.mode, aby kontrolować handshake:

  • token (domyślnie, gdy ustawiono OPENCLAW_GATEWAY_TOKEN)
  • password (wspólny sekret przez OPENCLAW_GATEWAY_PASSWORD lub konfigurację)

Gdy tailscale.mode = "serve" oraz gateway.auth.allowTailscale ma wartość true, prawidłowe żądania proxy Serve mogą uwierzytelniać się za pomocą nagłówków tożsamości Tailscale (tailscale-user-login) bez podawania tokenu/hasła. OpenClaw weryfikuje tożsamość, rozwiązując adres x-forwarded-for przez lokalny demon Tailscale (tailscale whois) i dopasowując go do nagłówka przed akceptacją. OpenClaw traktuje żądanie jako Serve wyłącznie wtedy, gdy przychodzi z loopback z nagłówkami Tailscale: x-forwarded-for, x-forwarded-proto oraz x-forwarded-host. Aby wymagać jawnych poświadczeń, ustaw gateway.auth.allowTailscale: false lub wymuś gateway.auth.mode: "password".

Przykłady konfiguracji

Tylko tailnet (Serve)

{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "serve" },
  },
}

Otwórz: https://<magicdns>/ (lub skonfigurowany gateway.controlUi.basePath)

Tylko tailnet (wiązanie do IP tailnetu)

Użyj tego trybu, gdy chcesz, aby Gateway nasłuchiwał bezpośrednio na IP tailnetu (bez Serve/Funnel).

{
  gateway: {
    bind: "tailnet",
    auth: { mode: "token", token: "your-token" },
  },
}

Połącz się z innego urządzenia w tailnecie:

  • Panel sterowania: http://<tailscale-ip>:18789/
  • WebSocket: ws://<tailscale-ip>:18789

Uwaga: loopback (http://127.0.0.1:18789) nie będzie działać w tym trybie.

Publiczny internet (Funnel + wspólne hasło)

{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "funnel" },
    auth: { mode: "password", password: "replace-me" },
  },
}

Zalecane jest OPENCLAW_GATEWAY_PASSWORD zamiast zapisywania hasła na dysku.

Przykłady CLI

openclaw gateway --tailscale serve
openclaw gateway --tailscale funnel --auth password

Uwagi

  • Serve/Funnel Tailscale wymaga zainstalowanego i zalogowanego CLI tailscale.
  • tailscale.mode: "funnel" odmawia uruchomienia, jeśli tryb uwierzytelniania nie jest password, aby uniknąć publicznej ekspozycji.
  • Ustaw gateway.tailscale.resetOnExit, jeśli chcesz, aby OpenClaw cofnął konfigurację tailscale serve lub tailscale funnel podczas zamykania.
  • gateway.bind: "tailnet" to bezpośrednie wiązanie do tailnetu (bez HTTPS, bez Serve/Funnel).
  • gateway.bind: "auto" preferuje loopback; użyj tailnet, jeśli chcesz tylko tailnet.
  • Serve/Funnel udostępniają wyłącznie panel sterowania Gateway + WS. Węzły łączą się przez ten sam punkt końcowy WS Gateway, więc Serve może działać także dla dostępu węzłów.

Sterowanie przeglądarką (zdalny Gateway + lokalna przeglądarka)

Jeśli uruchamiasz Gateway na jednej maszynie, a chcesz sterować przeglądarką na innej, uruchom host węzła na maszynie z przeglądarką i utrzymuj oba urządzenia w tym samym tailnecie. Gateway będzie pośredniczył w akcjach przeglądarki do węzła; nie jest potrzebny osobny serwer sterowania ani URL Serve.

Unikaj Funnel do sterowania przeglądarką; traktuj parowanie węzłów jak dostęp operatorski.

Wymagania wstępne i limity Tailscale

  • Serve wymaga włączonego HTTPS dla tailnetu; CLI wyświetli monit, jeśli brakuje tej opcji.
  • Serve wstrzykuje nagłówki tożsamości Tailscale; Funnel nie.
  • Funnel wymaga Tailscale v1.38.3+, MagicDNS, włączonego HTTPS oraz atrybutu węzła funnel.
  • Funnel obsługuje przez TLS wyłącznie porty 443, 8443 oraz 10000.
  • Funnel na macOS wymaga wariantu aplikacji Tailscale o otwartym kodzie źródłowym.

Dowiedz się więcej