Tailscale (Gateway-Dashboard)
OpenClaw kann Tailscale Serve (Tailnet) oder Funnel (öffentlich) automatisch für das Gateway-Dashboard und den WebSocket-Port konfigurieren. Dabei bleibt das Gateway an Loopback gebunden, während Tailscale HTTPS, Routing und (bei Serve) Identity-Header bereitstellt.
Modi
serve: Tailnet-only Serve viatailscale serve. Das Gateway bleibt auf127.0.0.1.funnel: Öffentliches HTTPS viatailscale funnel. OpenClaw erfordert ein gemeinsames Passwort.off: Standard (keine Tailscale-Automatisierung).
Auth
Setze gateway.auth.mode zur Steuerung des Handshakes:
token(Standard wennOPENCLAW_GATEWAY_TOKENgesetzt ist)password(gemeinsames Geheimnis viaOPENCLAW_GATEWAY_PASSWORDoder Konfiguration)
Wenn tailscale.mode = "serve" und gateway.auth.allowTailscale auf true steht,
kann die Control-UI/WebSocket-Auth Tailscale-Identity-Header
(tailscale-user-login) verwenden, ohne ein Token/Passwort anzugeben. OpenClaw verifiziert
die Identität, indem es die x-forwarded-for-Adresse über den lokalen Tailscale-Daemon
(tailscale whois) auflöst und mit dem Header abgleicht.
OpenClaw behandelt eine Anfrage nur dann als Serve, wenn sie von Loopback mit
Tailscales x-forwarded-for-, x-forwarded-proto- und x-forwarded-host-Headern kommt.
HTTP-API-Endpunkte (z. B. /v1/*, /tools/invoke und /api/channels/*)
erfordern weiterhin Token-/Passwort-Auth.
Dieser tokenlose Flow setzt voraus, dass der Gateway-Host vertrauenswürdig ist. Falls
nicht vertrauenswürdiger lokaler Code auf demselben Host laufen könnte, deaktiviere
gateway.auth.allowTailscale und erzwinge stattdessen Token-/Passwort-Auth.
Um explizite Credentials zu erzwingen, setze gateway.auth.allowTailscale: false oder
erzwinge gateway.auth.mode: "password".
Konfigurationsbeispiele
Tailnet-only (Serve)
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" },
},
}
Öffne: https://<magicdns>/ (oder dein konfigurierter gateway.controlUi.basePath)
Tailnet-only (direkt an Tailnet-IP binden)
Verwende dies, wenn das Gateway direkt auf der Tailnet-IP lauschen soll (kein Serve/Funnel).
{
gateway: {
bind: "tailnet",
auth: { mode: "token", token: "your-token" },
},
}
Verbinde dich von einem anderen Tailnet-Gerät:
- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
Hinweis: Loopback (http://127.0.0.1:18789) funktioniert in diesem Modus nicht.
Öffentliches Internet (Funnel + gemeinsames Passwort)
{
gateway: {
bind: "loopback",
tailscale: { mode: "funnel" },
auth: { mode: "password", password: "replace-me" },
},
}
Bevorzuge OPENCLAW_GATEWAY_PASSWORD gegenüber dem Speichern eines Passworts auf der Festplatte.
CLI-Beispiele
openclaw gateway --tailscale serve
openclaw gateway --tailscale funnel --auth password
Hinweise
- Tailscale Serve/Funnel erfordert, dass die
tailscale-CLI installiert und angemeldet ist. tailscale.mode: "funnel"verweigert den Start, wenn der Auth-Modus nichtpasswordist, um öffentliche Exposition zu vermeiden.- Setze
gateway.tailscale.resetOnExit, wenn OpenClaw dietailscale serve- odertailscale funnel-Konfiguration beim Herunterfahren rückgängig machen soll. gateway.bind: "tailnet"ist ein direkter Tailnet-Bind (kein HTTPS, kein Serve/Funnel).gateway.bind: "auto"bevorzugt Loopback; verwendetailnet, wenn du Tailnet-only willst.- Serve/Funnel stellen nur die Gateway Control-UI + WS bereit. Nodes verbinden sich über denselben Gateway-WS-Endpunkt, sodass Serve auch für Node-Zugriff funktioniert.
Browser-Kontrolle (Remote-Gateway + lokaler Browser)
Wenn du das Gateway auf einem Rechner betreibst, aber einen Browser auf einem anderen steuern willst, betreibe einen Node-Host auf dem Browser-Rechner und halte beide im selben Tailnet. Das Gateway leitet Browser-Aktionen an den Node weiter; kein separater Control-Server oder Serve-URL nötig.
Vermeide Funnel für Browser-Kontrolle; behandle Node-Pairing wie Operator-Zugriff.
Tailscale-Voraussetzungen + Limits
- Serve erfordert, dass HTTPS für dein Tailnet aktiviert ist; die CLI fragt nach, wenn es fehlt.
- Serve injiziert Tailscale-Identity-Header; Funnel tut dies nicht.
- Funnel erfordert Tailscale v1.38.3+, MagicDNS, HTTPS aktiviert und ein Funnel-Node-Attribut.
- Funnel unterstützt nur die Ports
443,8443und10000über TLS. - Funnel auf macOS erfordert die Open-Source-Tailscale-App-Variante.
Mehr erfahren
- Tailscale Serve Übersicht: https://tailscale.com/kb/1312/serve
tailscale serve-Befehl: https://tailscale.com/kb/1242/tailscale-serve- Tailscale Funnel Übersicht: https://tailscale.com/kb/1223/tailscale-funnel
tailscale funnel-Befehl: https://tailscale.com/kb/1311/tailscale-funnel