Se você hospeda aplicações em casa ou no escritório — um servidor de mídia, um painel de automação residencial, um ambiente de desenvolvimento, um wiki pessoal — tradicionalmente precisava abrir portas no roteador, configurar regras NAT, configurar DNS dinâmico e torcer para que seu provedor não bloqueie conexões de entrada. Cada porta aberta é um vetor de ataque potencial.
Cloudflare Tunnels eliminam tudo isso. Você executa um daemon leve (cloudflared) na sua máquina local que cria uma conexão criptografada apenas de saída para a rede edge da Cloudflare. O tráfego flui da internet através da Cloudflare para o seu serviço, sem nenhuma porta de entrada aberta no seu firewall.
Por Que Cloudflare Tunnels?
- Sem Port Forwarding: Seu firewall pode bloquear todas as conexões de entrada
- Sem IP Público Necessário: Funciona mesmo com CGNAT
- Proteção DDoS Integrada: Tráfego passa pela rede da Cloudflare
- Plano Gratuito: Incluído no plano gratuito da Cloudflare
- TLS Automático: Cloudflare gerencia certificados SSL automaticamente
Instalando cloudflared
Debian/Ubuntu
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update
sudo apt-get install -y cloudflared
Criando um Tunnel
cloudflared tunnel login
cloudflared tunnel create meu-homelab
cloudflared tunnel route dns meu-homelab app.knowledgexchange.xyz
Configurando Regras de Ingress
tunnel: a1b2c3d4-e5f6-7890-abcd-ef1234567890
credentials-file: /home/user/.cloudflared/a1b2c3d4-e5f6-7890-abcd-ef1234567890.json
ingress:
- hostname: app.knowledgexchange.xyz
service: http://localhost:8080
- hostname: home.knowledgexchange.xyz
service: http://localhost:8123
- hostname: git.knowledgexchange.xyz
service: http://localhost:3000
- service: http_status:404
Executando como Serviço systemd
sudo cloudflared service install
sudo systemctl enable --now cloudflared
Políticas de Acesso com Cloudflare Zero Trust
Para serviços que não devem ser acessíveis publicamente, adicione políticas de acesso do Cloudflare Access no dashboard Zero Trust.
SSH Através de Cloudflare Tunnels
ingress:
- hostname: ssh.knowledgexchange.xyz
service: ssh://localhost:22
- service: http_status:404
No cliente, adicione ao ~/.ssh/config:
Host ssh.knowledgexchange.xyz
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
Conclusão
Cloudflare Tunnels mudam fundamentalmente como você expõe serviços self-hosted na internet. Sem mais port forwarding, sem DNS dinâmico, sem preocupações com restrições de ISP ou endereços IP expostos. O modelo de conexão apenas de saída significa que seu firewall permanece bloqueado enquanto seus serviços permanecem acessíveis.