Tailscale (dashboard del Gateway)
OpenClaw può configurare automaticamente Tailscale Serve (tailnet) o Funnel (pubblico) per la dashboard del Gateway e la porta WebSocket. Questo mantiene il Gateway associato al loopback mentre Tailscale fornisce HTTPS, routing e, per Serve, header di identità.Modalità
serve: Serve solo tailnet tramitetailscale serve. Il gateway resta su127.0.0.1.funnel: HTTPS pubblico tramitetailscale funnel. OpenClaw richiede una password condivisa.off: predefinito (nessuna automazione Tailscale).
Autenticazione
Impostagateway.auth.mode per controllare l’handshake:
none(solo ingress privato)token(predefinito quandoOPENCLAW_GATEWAY_TOKENè impostato)password(segreto condiviso tramiteOPENCLAW_GATEWAY_PASSWORDo configurazione)trusted-proxy(reverse proxy con riconoscimento dell’identità; vedi Autenticazione Trusted Proxy)
tailscale.mode = "serve" e gateway.auth.allowTailscale è true,
l’autenticazione della UI di controllo/WebSocket può usare gli header di identità Tailscale
(tailscale-user-login) senza fornire un token/password. OpenClaw verifica
l’identità risolvendo l’indirizzo x-forwarded-for tramite il demone Tailscale locale
(tailscale whois) e confrontandolo con l’header prima di accettarlo.
OpenClaw tratta una richiesta come Serve solo quando arriva da loopback con
gli header Tailscale x-forwarded-for, x-forwarded-proto e x-forwarded-host.
Gli endpoint HTTP API (ad esempio /v1/*, /tools/invoke e /api/channels/*)
non usano l’autenticazione tramite header di identità Tailscale. Seguono comunque la
normale modalità di autenticazione HTTP del gateway: autenticazione con segreto condiviso per impostazione predefinita, oppure una configurazione intenzionale trusted-proxy / none per ingress privato.
Questo flusso senza token presuppone che l’host gateway sia affidabile. Se codice locale non affidabile
può essere eseguito sullo stesso host, disabilita gateway.auth.allowTailscale e richiedi invece l’autenticazione con token/password.
Per richiedere credenziali esplicite con segreto condiviso, imposta gateway.auth.allowTailscale: false
e usa gateway.auth.mode: "token" o "password".
Esempi di configurazione
Solo tailnet (Serve)
https://<magicdns>/ (o il tuo gateway.controlUi.basePath configurato)
Solo tailnet (bind all’IP tailnet)
Usa questa opzione quando vuoi che il Gateway ascolti direttamente sull’IP tailnet (senza Serve/Funnel).- UI di controllo:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
http://127.0.0.1:18789) non funzionerà in questa modalità.
Internet pubblico (Funnel + password condivisa)
OPENCLAW_GATEWAY_PASSWORD invece di salvare una password su disco.
Esempi CLI
Note
- Tailscale Serve/Funnel richiede che la CLI
tailscalesia installata e abbia effettuato il login. tailscale.mode: "funnel"rifiuta l’avvio a meno che la modalità auth non siapasswordper evitare esposizione pubblica.- Imposta
gateway.tailscale.resetOnExitse vuoi che OpenClaw annulli la configurazionetailscale serveotailscale funnelall’arresto. gateway.bind: "tailnet"è un bind diretto alla tailnet (senza HTTPS, senza Serve/Funnel).gateway.bind: "auto"privilegia il loopback; usatailnetse vuoi solo tailnet.- Serve/Funnel espongono solo la UI di controllo del Gateway + WS. I nodi si connettono tramite lo stesso endpoint WS del Gateway, quindi Serve può funzionare anche per l’accesso ai nodi.
Controllo browser (Gateway remoto + browser locale)
Se esegui il Gateway su una macchina ma vuoi pilotare un browser su un’altra macchina, esegui un host nodo sulla macchina del browser e mantieni entrambi nella stessa tailnet. Il Gateway farà da proxy alle azioni del browser verso il nodo; non serve alcun server di controllo separato né URL Serve. Evita Funnel per il controllo del browser; tratta l’associazione del nodo come accesso da operatore.Prerequisiti e limiti di Tailscale
- Serve richiede che HTTPS sia abilitato per la tua tailnet; la CLI lo richiede se manca.
- Serve inietta header di identità Tailscale; Funnel no.
- Funnel richiede Tailscale v1.38.3+, MagicDNS, HTTPS abilitato e un attributo nodo funnel.
- Funnel supporta solo le porte
443,8443e10000su TLS. - Funnel su macOS richiede la variante open source dell’app Tailscale.
Per saperne di più
- Panoramica di Tailscale Serve: https://tailscale.com/kb/1312/serve
- Comando
tailscale serve: https://tailscale.com/kb/1242/tailscale-serve - Panoramica di Tailscale Funnel: https://tailscale.com/kb/1223/tailscale-funnel
- Comando
tailscale funnel: https://tailscale.com/kb/1311/tailscale-funnel