Pular para conteúdo

Acesso remoto seguro ao OpenClaw: Tailscale ou túnel SSH

Categoria Infra

Você subiu o OpenClaw num VPS, abriu a porta 18789 no firewall e acessa o dashboard por http://SEU_IP:18789. Funciona. Mas qualquer pessoa na internet também alcança esse endereço, e o gateway token (a credencial do painel) viaja em texto puro — sem criptografia — toda vez que você acessa.

Dá para fazer melhor sem complicar. A própria documentação do OpenClaw recomenda manter o gateway fechado e acessar por túnel.


TL;DR

SituaçãoO que fazer
Acesso ocasional, você já usa SSHTúnel SSH (ssh -L), zero instalação extra
Acesso recorrente de vários dispositivosTailscale (rede privada + HTTPS)
Caminho Docker 1-clique já expôs http://IP:18789Feche a 18789 no firewall e migre para um dos dois acima
Nuncaufw allow 18789 para o mundo

Por que não deixar a porta aberta

Por padrão, o gateway do OpenClaw escuta só no loopback — a configuração gateway.bind: "loopback" aceita apenas conexões locais da própria máquina. O painel também exige autenticação: sem um gateway token válido, o gateway recusa a conexão (falha fechada).

Ou seja: a segurança de base já está lá. O problema aparece quando você muda esse comportamento para acessar de fora — abrindo a porta no firewall ou fazendo o gateway escutar em 0.0.0.0. A recomendação da documentação é direta: nunca exponha o gateway sem autenticação em 0.0.0.0, e o painel (Control UI) precisa de um contexto seguro — HTTPS ou localhost.

exposto na internet (evite):
  seu navegador ──(http, texto puro)──> SEU_IP:18789  <── qualquer um na internet

por túnel (recomendado):
  seu navegador ──> localhost:18789 ──(SSH/Tailscale, criptografado)──> gateway no loopback

Acessar por http://SEU_IP:18789 não é o fim do mundo — o token ainda barra quem não o tem. Mas a porta aberta aumenta a superfície de ataque e o token trafega sem criptografia. Fechar a porta e tunelar resolve os dois pontos.


Opção 1: túnel SSH (mais simples)

Se você já acessa o VPS por SSH, não precisa instalar nada. Um túnel encaminha a porta 18789 do servidor para a sua máquina, por dentro da conexão SSH (que já é criptografada).

No seu computador (não no VPS):

# Encaminha a porta 18789 do VPS para a sua máquina local
ssh -N -L 18789:127.0.0.1:18789 deploy@SEU_IP

O que cada parte faz:

  • -N — não abre um shell, só mantém o túnel.
  • -L 18789:127.0.0.1:18789 — porta local 18789127.0.0.1:18789 no VPS (onde o gateway escuta).
  • deploy@SEU_IP — seu usuário e o IP do servidor.

Com o comando rodando, abra http://localhost:18789 no navegador. O tráfego vai criptografado pelo SSH e a porta 18789 continua fechada no firewall do VPS — lá você libera só a 22 (SSH):

ufw allow 22
ufw enable

Quando terminar, é só interromper o comando (Ctrl+C). Bom para acesso pontual; menos confortável se você acessa de vários aparelhos ou o tempo todo.


Opção 2: Tailscale (acesso recorrente)

Tailscale cria uma rede privada (um “tailnet”) entre seus dispositivos usando WireGuard. O VPS entra nessa rede e você acessa o painel como se estivesse na rede local — sem abrir portas públicas. Veja o glossário sobre Tailscale para os conceitos.

1. Instale e conecte no VPS:

# Instala o Tailscale (script oficial)
curl -fsSL https://tailscale.com/install.sh | sh

# Conecta o VPS ao seu tailnet (abre um link para autenticar)
sudo tailscale up

Instale o Tailscale também no seu computador ou celular e entre com a mesma conta. Agora os dois estão na mesma rede privada.

2. Publique o painel por HTTPS dentro do tailnet:

Como o gateway escuta no loopback, use o tailscale serve para expor localhost:18789 por HTTPS só para os seus dispositivos:

# No VPS — publica o dashboard por HTTPS dentro do tailnet
sudo tailscale serve --bg --https=443 localhost:18789

# Conferir o que está publicado
tailscale serve status

Depois acesse pelo nome MagicDNS do VPS (algo como https://meu-vps) de qualquer dispositivo do seu tailnet. O tráfego é criptografado e a porta 18789 segue fechada para a internet.

Para parar de publicar:

sudo tailscale serve --https=443 localhost:18789 off

Já usei o Docker 1-clique e recebi http://IP:18789

O caminho Docker da Hostinger entrega o painel num endereço público. Para fechar:

  1. Garanta que a porta 18789 não está liberada no firewall (ufw status para conferir; remova a regra se existir).
  2. Configure túnel SSH ou Tailscale como acima.
  3. Passe a acessar por http://localhost:18789 (túnel) ou pelo nome do tailnet.

O passo a passo de instalação no VPS está em Rodar OpenClaw 24/7 na Hostinger.


Troubleshooting

O túnel SSH conecta mas localhost:18789 não abre. Confirme que o gateway está rodando no VPS (openclaw status) e que ele escuta no loopback. Se você mudou gateway.bind para outro valor, o 127.0.0.1:18789 do túnel pode não bater com a porta real.

tailscale serve reclama de permissão. Use sudo. O serve precisa de privilégio para abrir a porta HTTPS no nó.

Quero acessar de fora do tailnet (rede de terceiros). Não exponha a 18789 direto. Se precisar de acesso público (raro), coloque um proxy reverso com HTTPS na frente e mantenha o gateway no loopback — nunca o gateway em texto puro na porta pública.

O painel abre mas pede token. É o comportamento esperado: o gateway token é obrigatório. Ele fica nas variáveis de ambiente do container (no Docker Manager da Hostinger, em Environment).


Próximo passo

Esc