OpenClaw może automatycznie skonfigurować Tailscale Serve (tailnet) lub Funnel (publicznie) dla panelu Gateway i portu WebSocket. Dzięki temu Gateway pozostaje przypisany do loopback, podczas gdy Tailscale zapewnia HTTPS, routing oraz (dla Serve) nagłówki tożsamości.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Tryby
serve: Serve tylko w tailnecie przeztailscale serve. Gateway pozostaje na127.0.0.1.funnel: Publiczny HTTPS przeztailscale funnel. OpenClaw wymaga współdzielonego hasła.off: Domyślnie (bez automatyzacji Tailscale).
off oznacza, że OpenClaw nie zarządza Serve ani Funnel; nie oznacza to, że lokalny demon Tailscale jest zatrzymany albo wylogowany.
Uwierzytelnianie
Ustawgateway.auth.mode, aby kontrolować handshake:
none(tylko prywatny ingress)token(domyślnie, gdy ustawionoOPENCLAW_GATEWAY_TOKEN)password(współdzielony sekret przezOPENCLAW_GATEWAY_PASSWORDlub konfigurację)trusted-proxy(reverse proxy świadome tożsamości; zobacz Uwierzytelnianie zaufanego proxy)
tailscale.mode = "serve" i gateway.auth.allowTailscale ma wartość true, uwierzytelnianie Control UI/WebSocket może używać 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 lokalnego demona Tailscale (tailscale whois) i dopasowując go do nagłówka przed jego zaakceptowaniem. OpenClaw traktuje żądanie jako Serve tylko wtedy, gdy przychodzi ono z loopback z nagłówkami Tailscale x-forwarded-for, x-forwarded-proto i x-forwarded-host.
W przypadku sesji operatora Control UI, które obejmują tożsamość urządzenia przeglądarki, ta zweryfikowana ścieżka Serve pomija także rundę parowania urządzenia. Nie omija ona tożsamości urządzenia przeglądarki: klienci bez urządzenia nadal są odrzucani, a połączenia WebSocket z rolą node albo spoza Control UI nadal przechodzą standardowe kontrole parowania i uwierzytelniania.
Endpointy HTTP API (na przykład /v1/*, /tools/invoke i /api/channels/*) nie używają uwierzytelniania przez nagłówki tożsamości Tailscale. Nadal podlegają normalnemu trybowi uwierzytelniania HTTP Gateway: domyślnie uwierzytelnianiu przez współdzielony sekret albo celowo skonfigurowanej konfiguracji trusted-proxy / prywatnego ingressu none.
Ten przepływ bez tokenu zakłada, że host Gateway jest zaufany. Jeśli na tym samym hoście może działać niezaufany kod lokalny, wyłącz gateway.auth.allowTailscale i zamiast tego wymagaj uwierzytelniania tokenem/hasłem.
Aby wymagać jawnych poświadczeń współdzielonego sekretu, ustaw gateway.auth.allowTailscale: false i użyj gateway.auth.mode: "token" albo "password".
Przykłady konfiguracji
Tylko tailnet (Serve)
https://<magicdns>/ (albo skonfigurowaną wartość gateway.controlUi.basePath)
Tylko tailnet (wiązanie z adresem IP tailnetu)
Użyj tego, gdy chcesz, aby Gateway nasłuchiwał bezpośrednio na adresie IP tailnetu (bez Serve/Funnel).- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
Loopback (
http://127.0.0.1:18789) nie zadziała w tym trybie.Publiczny internet (Funnel + współdzielone hasło)
OPENCLAW_GATEWAY_PASSWORD zamiast zapisywania hasła na dysku.
Przykłady CLI
Uwagi
- Tailscale Serve/Funnel wymaga zainstalowanego i zalogowanego CLI
tailscale. tailscale.mode: "funnel"odmawia uruchomienia, jeśli tryb uwierzytelniania nie jest ustawiony napassword, aby uniknąć publicznej ekspozycji.- Ustaw
gateway.tailscale.resetOnExit, jeśli chcesz, aby OpenClaw cofnął konfiguracjętailscale servealbotailscale funnelprzy zamykaniu. - Ustaw
gateway.tailscale.preserveFunnel: true, aby utrzymać zewnętrznie skonfigurowaną trasętailscale funnelaktywną między restartami gateway. Gdy ta opcja jest włączona, a gateway działa wmode: "serve", OpenClaw sprawdzatailscale funnel statusprzed ponownym zastosowaniem Serve i pomija je, gdy trasa Funnel już obejmuje port gateway. Polityka Funnel zarządzanego przez OpenClaw, ograniczona do hasła, pozostaje bez zmian. gateway.bind: "tailnet"to bezpośrednie wiązanie z tailnetem (bez HTTPS, bez Serve/Funnel).gateway.bind: "auto"preferuje loopback; użyjtailnet, jeśli chcesz wyłącznie tailnet.- Serve/Funnel eksponują tylko interfejs kontrolny Gateway + WS. Nodes łączą się przez ten sam endpoint Gateway WS, więc Serve może działać dla dostępu do node.
Sterowanie przeglądarką (zdalny Gateway + lokalna przeglądarka)
Jeśli uruchamiasz Gateway na jednej maszynie, ale chcesz sterować przeglądarką na innej maszynie, uruchom host node na maszynie z przeglądarką i utrzymuj obie w tym samym tailnecie. Gateway będzie przekazywać działania przeglądarki do node; nie jest potrzebny osobny serwer kontrolny ani URL Serve. Unikaj Funnel do sterowania przeglądarką; traktuj parowanie node jak dostęp operatora.Wymagania wstępne i ograniczenia Tailscale
- Serve wymaga włączonego HTTPS dla Twojego tailnetu; CLI wyświetli monit, jeśli go brakuje.
- Serve wstrzykuje nagłówki tożsamości Tailscale; Funnel tego nie robi.
- Funnel wymaga Tailscale v1.38.3+, MagicDNS, włączonego HTTPS i atrybutu node funnel.
- Funnel obsługuje tylko porty
443,8443i10000przez TLS. - Funnel w macOS wymaga wariantu aplikacji Tailscale typu open source.
Dowiedz się więcej
- Omówienie Tailscale Serve: https://tailscale.com/kb/1312/serve
- Polecenie
tailscale serve: https://tailscale.com/kb/1242/tailscale-serve - Omówienie Tailscale Funnel: https://tailscale.com/kb/1223/tailscale-funnel
- Polecenie
tailscale funnel: https://tailscale.com/kb/1311/tailscale-funnel