Tailscale (painel do Gateway)
O OpenClaw pode configurar automaticamente o Tailscale Serve (tailnet) ou Funnel (público) para o painel do Gateway e a porta WebSocket. Isso mantém o Gateway vinculado ao loopback enquanto o Tailscale fornece HTTPS, roteamento e (no caso do Serve) cabeçalhos de identidade.Modos
serve: Serve apenas para tailnet viatailscale serve. O gateway permanece em127.0.0.1.funnel: HTTPS público viatailscale funnel. O OpenClaw exige uma senha compartilhada.off: padrão (sem automação do Tailscale).
Autenticação
Definagateway.auth.mode para controlar o handshake:
none(apenas para ingresso privado)token(padrão quandoOPENCLAW_GATEWAY_TOKENestá definido)password(segredo compartilhado viaOPENCLAW_GATEWAY_PASSWORDou configuração)trusted-proxy(proxy reverso com reconhecimento de identidade; consulte Trusted Proxy Auth)
tailscale.mode = "serve" e gateway.auth.allowTailscale é true,
a autenticação da Control UI/WebSocket pode usar cabeçalhos de identidade do Tailscale
(tailscale-user-login) sem fornecer token/senha. O OpenClaw verifica
a identidade resolvendo o endereço x-forwarded-for via o daemon local do Tailscale
(tailscale whois) e comparando-o com o cabeçalho antes de aceitá-lo.
O OpenClaw só trata uma requisição como Serve quando ela chega do loopback com
os cabeçalhos x-forwarded-for, x-forwarded-proto e x-forwarded-host do
Tailscale.
Endpoints da API HTTP (por exemplo /v1/*, /tools/invoke e /api/channels/*)
não usam autenticação por cabeçalho de identidade do Tailscale. Eles ainda seguem o
modo normal de autenticação HTTP do gateway: autenticação por segredo compartilhado por padrão, ou uma configuração intencional de trusted-proxy / none para ingresso privado.
Esse fluxo sem token assume que o host do gateway é confiável. Se código local não confiável
puder ser executado no mesmo host, desative gateway.auth.allowTailscale e exija autenticação por token/senha.
Para exigir credenciais explícitas por segredo compartilhado, defina gateway.auth.allowTailscale: false
e use gateway.auth.mode: "token" ou "password".
Exemplos de configuração
Apenas tailnet (Serve)
https://<magicdns>/ (ou seu gateway.controlUi.basePath configurado)
Apenas tailnet (bind ao IP da Tailnet)
Use isso quando quiser que o Gateway escute diretamente no IP da Tailnet (sem Serve/Funnel).- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
http://127.0.0.1:18789) não funcionará nesse modo.
Internet pública (Funnel + senha compartilhada)
OPENCLAW_GATEWAY_PASSWORD em vez de gravar uma senha em disco.
Exemplos de CLI
Observações
- O Tailscale Serve/Funnel exige que a CLI
tailscaleesteja instalada e autenticada. tailscale.mode: "funnel"se recusa a iniciar, a menos que o modo de autenticação sejapassword, para evitar exposição pública.- Defina
gateway.tailscale.resetOnExitse quiser que o OpenClaw desfaça a configuração detailscale serveoutailscale funnelao encerrar. gateway.bind: "tailnet"é um bind direto na Tailnet (sem HTTPS, sem Serve/Funnel).gateway.bind: "auto"prefere loopback; usetailnetse quiser apenas Tailnet.- Serve/Funnel expõem apenas a UI de controle + WS do Gateway. Os Nodes se conectam pelo mesmo endpoint WS do Gateway, então o Serve pode funcionar para acesso de node.
Controle do navegador (Gateway remoto + navegador local)
Se você executar o Gateway em uma máquina, mas quiser controlar um navegador em outra máquina, execute um host de node na máquina do navegador e mantenha ambos na mesma tailnet. O Gateway fará proxy das ações do navegador para o node; não é necessário um servidor de controle separado nem uma URL Serve. Evite Funnel para controle do navegador; trate o pareamento de node como acesso de operador.Pré-requisitos + limites do Tailscale
- O Serve exige HTTPS ativado para sua tailnet; a CLI solicitará isso se estiver ausente.
- O Serve injeta cabeçalhos de identidade do Tailscale; o Funnel não.
- O Funnel exige Tailscale v1.38.3+, MagicDNS, HTTPS ativado e um atributo de nó funnel.
- O Funnel oferece suporte apenas às portas
443,8443e10000sobre TLS. - O Funnel no macOS exige a variante de aplicativo Tailscale de código aberto.
Saiba mais
- Visão geral do Tailscale Serve: https://tailscale.com/kb/1312/serve
- Comando
tailscale serve: https://tailscale.com/kb/1242/tailscale-serve - Visão geral do Tailscale Funnel: https://tailscale.com/kb/1223/tailscale-funnel
- Comando
tailscale funnel: https://tailscale.com/kb/1311/tailscale-funnel