Pular para o conteúdo
Segurança

Como usar o Cloudflare Tunnel para acessar um serviço local sem abrir portas

O Cloudflare Tunnel permite publicar um serviço que está rodando no seu computador ou servidor sem abrir uma porta no roteador. Você instala o conector cloudflared, cria um túnel, aponta um subdomínio para o serviço local e mantém a conexão saindo da sua rede para a Cloudflare.

Isso é útil para testar um site, mostrar um painel para alguém ou acessar uma aplicação de desenvolvimento. O caminho abaixo usa um túnel gerenciado localmente, com comandos do terminal. Para ambientes maiores, a própria Cloudflare recomenda os túneis gerenciados remotamente, configurados pelo painel, API ou Terraform.

Switches de rede em um rack de servidores, representando a conexão entre uma rede local e a nuvem
O conector cria uma conexão de saída entre o serviço local e a rede da Cloudflare.

O que é o Cloudflare Tunnel e por que ele evita abrir portas

Em uma configuração tradicional, você encaminharia uma porta do roteador para o computador que hospeda o serviço. Isso cria uma entrada direta na sua rede e exige cuidar de firewall, IP público, NAT e mudanças de endereço.

Com o Tunnel, o processo é invertido: o cloudflared roda dentro da sua rede e abre uma conexão de saída para a Cloudflare. Quando alguém acessa o seu domínio, a Cloudflare entrega a requisição pelo túnel até o serviço local. O servidor não precisa aceitar conexões de entrada vindas diretamente da internet.

Isso reduz a superfície de exposição, mas não transforma um painel administrativo em algo seguro por mágica. O aplicativo ainda precisa de senha forte, atualizações e, quando fizer sentido, uma camada de autenticação como Cloudflare Access com MFA.

Antes de começar

  • Uma conta Cloudflare e um domínio adicionado a ela para usar um hostname próprio.
  • Um serviço funcionando localmente, como http://localhost:8000. Troque a porta pelo endereço real da sua aplicação.
  • Acesso ao terminal da máquina que executará o túnel.
  • O cloudflared instalado a partir da página oficial de downloads para Linux, Windows ou macOS.

Se você só quer demonstrar uma página por alguns minutos, pule para a seção de Quick Tunnel. Ele usa um endereço aleatório e não exige domínio, mas é indicado para teste e desenvolvimento, não para um serviço permanente.

Como configurar um Cloudflare Tunnel com domínio próprio

1. Instale o cloudflared

Baixe o pacote compatível com seu sistema na documentação de downloads do cloudflared. No Linux, a Cloudflare oferece binários e pacotes Debian e RPM; no macOS, há pacote Homebrew; no Windows, há instalador e binário.

Depois, confirme que o comando está disponível:

cloudflared --version

2. Faça a autenticação no navegador

No terminal, execute:

cloudflared tunnel login

O comando abre uma janela do navegador para você entrar na conta e escolher o hostname autorizado. Ao terminar, ele cria o certificado cert.pem no diretório padrão do Cloudflare Tunnel. Esse arquivo é sensível: não o publique no GitHub, não o coloque em uma imagem Docker pública e não o envie para outra pessoa.

3. Crie o túnel

Dê um nome fácil de reconhecer:

cloudflared tunnel create jsms-lab

Anote o UUID exibido no terminal e o caminho do arquivo de credenciais .json. O comando cria a relação persistente entre o nome e o túnel, mas ainda não inicia a conexão. Para conferir:

cloudflared tunnel list

4. Crie o arquivo de configuração

Dentro de ~/.cloudflared, crie um arquivo chamado config.yml. Para uma aplicação web única, use este modelo:

url: http://localhost:8000
tunnel: SEU-UUID
credentials-file: /home/SEU_USUARIO/.cloudflared/SEU-UUID.json

Substitua SEU-UUID pelo identificador real do túnel e ajuste o caminho do usuário. No Windows, use o caminho do diretório .cloudflared correspondente à sua conta.

O campo url é o endereço que o conector acessará dentro da máquina. Se o serviço estiver em outra porta, troque 8000. Se estiver em outro computador da rede, use o endereço privado dele, como http://192.168.1.50:8080, desde que a máquina do cloudflared consiga alcançá-lo.

5. Ligue um subdomínio ao túnel

Escolha um subdomínio que pertença ao domínio conectado à Cloudflare:

cloudflared tunnel route dns jsms-lab app.seudominio.com

A Cloudflare cria um registro CNAME apontando para o subdomínio do túnel. O registro DNS e o túnel são coisas diferentes: o DNS pode existir mesmo se o conector estiver desligado; nesse caso, o acesso falhará até que o túnel volte a funcionar.

6. Inicie e teste a conexão

Execute o túnel pelo nome ou pelo UUID:

cloudflared tunnel run jsms-lab

Agora abra https://app.seudominio.com no navegador. Se a página não carregar, verifique primeiro se o serviço responde localmente na porta configurada e depois observe o terminal do cloudflared.

Para consultar informações do túnel:

cloudflared tunnel info jsms-lab

Se o arquivo estiver fora de ~/.cloudflared ou tiver outro nome, indique o caminho explicitamente:

cloudflared tunnel --config /caminho/config.yml run jsms-lab

Como deixar o túnel rodando como serviço no Linux

Rodar o comando em um terminal aberto funciona para teste, mas o processo termina quando você encerra a sessão. No Linux, depois de criar o túnel e o config.yml, instale o serviço:

sudo cloudflared --config /home/SEU_USUARIO/.cloudflared/config.yml service install
sudo systemctl start cloudflared
sudo systemctl status cloudflared

Atenção ao uso de sudo: a variável $HOME pode apontar para /root, fazendo o serviço procurar o arquivo no lugar errado. Por isso, passar o caminho completo com --config evita uma das falhas mais comuns dessa etapa.

Depois de alterar o arquivo de configuração, reinicie o serviço:

sudo systemctl restart cloudflared

Como testar sem domínio com um Quick Tunnel

Para uma demonstração rápida, inicie um servidor local e execute:

cloudflared tunnel --url http://localhost:8080

O Cloudflare gera um subdomínio aleatório em trycloudflare.com e mostra o endereço no terminal. As requisições recebidas nesse endereço são encaminhadas ao serviço local.

O Quick Tunnel é conveniente, mas tem limites importantes: o endereço é temporário, não há garantia de disponibilidade e a própria documentação recomenda esse modo para testes e desenvolvimento. Se existir um config.yaml no diretório .cloudflared, pode ser necessário renomeá-lo temporariamente para usar o recurso.

Cloudflare Tunnel é uma VPN?

Não exatamente. Neste guia, ele publica uma aplicação HTTP ou HTTPS por um hostname. O Tunnel também pode ser usado em outros cenários, como SSH, RDP e redes privadas, mas cada caso envolve autenticação, políticas e configuração diferentes.

Ele também não substitui uma VPN tradicional em todos os cenários. Se a meta é acessar vários dispositivos e serviços privados como se você estivesse dentro da rede, avalie a modalidade de rede privada e as políticas de acesso da Cloudflare, em vez de simplesmente publicar cada porta na internet.

Erros comuns e como corrigir

Problema O que conferir
O domínio retorna erro 1016 Veja se o CNAME aponta para o túnel correto e se o cloudflared está conectado.
O túnel inicia, mas a página dá erro 502 Teste o serviço local na mesma URL e porta informadas em config.yml.
O serviço não inicia no Linux Confirme o caminho do arquivo de credenciais e use --config com caminho absoluto.
O navegador abre uma tela de login do aplicativo Isso pode ser normal: o Tunnel encaminha o tráfego, mas não corrige a autenticação do seu sistema.
O Quick Tunnel não funciona Confira se o servidor local está ativo e se não há um config.yaml bloqueando o modo rápido.

Vale a pena usar o Cloudflare Tunnel?

Para desenvolvimento, homelab e publicação pontual, ele é uma alternativa prática porque elimina o encaminhamento de portas e evita depender de IP público fixo. A instalação também é mais simples do que montar manualmente NAT, firewall e proxy reverso.

O cuidado é não confundir “não abrir portas” com “estar protegido”. Uma aplicação vulnerável continua vulnerável quando chega à internet por um túnel. Em serviços administrativos, coloque autenticação forte, limite os usuários autorizados, mantenha o software atualizado e monitore os logs.

Se o seu fluxo começa em um formulário ou webhook, o Tunnel pode servir para tornar um endpoint local acessível durante o desenvolvimento. Depois, vale combinar a exposição com uma automação bem protegida — veja também o guia do JSMS sobre como criar um webhook no n8n e conectar um formulário a uma automação.

Perguntas frequentes

Preciso abrir uma porta no roteador para usar o Cloudflare Tunnel?

Não. O conector inicia uma conexão de saída para a Cloudflare, então o fluxo não depende de encaminhar uma porta de entrada do roteador.

Posso usar o Cloudflare Tunnel sem ter um domínio?

Para um teste rápido, sim: o Quick Tunnel gera um endereço aleatório em trycloudflare.com. Para um hostname próprio e permanente, você precisa configurar um domínio na Cloudflare.

O Cloudflare Tunnel protege automaticamente o painel que publiquei?

Não. Ele transporta as requisições até o serviço. Você ainda precisa configurar autenticação, atualizações e, se necessário, uma política de acesso com MFA.

O Quick Tunnel serve para produção?

Não é a finalidade indicada pela Cloudflare. Use-o para testes e desenvolvimento; para produção, crie um túnel nomeado e configure monitoramento e controle de acesso.