Docker + Cloudflare Tunnel:

Exponha Qualquer App Local em 30 Segundos

Cansou de configurar Ngrok toda vez que precisa mostrar sua aplicação para um colega? Ou de lidar com URLs aleatórias e limitações do plano gratuito? O Cloudflare Tunnel com Docker pode ser a solução que você estava procurando - e é mais simples do que imagina.

🚀 Teste Agora: 30 Segundos para Expor sua App

Antes de entrarmos na teoria, que tal ver como é absurdamente simples expor uma aplicação local usando Docker? Literalmente 3 comandos:

Terminal - Teste Rápido
# 1. Rode sua aplicação (exemplo: servidor web simples)
python -m http.server 8000

# 2. Em outro terminal, rode o cloudflared
docker run --rm -it --network host cloudflare/cloudflared:latest tunnel --url http://localhost:8000

# 3. Pronto! Copie a URL que apareceu e compartilhe 🎉
É isso mesmo! Em menos de 30 segundos você tem uma URL pública e segura apontando para sua aplicação local. Sem configuração, sem cadastro, sem complicação.

🐳 Exemplos Práticos com Docker Compose

Para projetos mais complexos, integrar o cloudflared ao seu docker-compose.yml torna tudo ainda mais elegante. Veja alguns exemplos práticos:

🔥 Cenário 1: App Rodando Localmente (Fora do Docker)

Sua aplicação já está rodando na sua máquina (ex: npm run dev na porta 3000). Você só quer expor ela rapidamente:

docker-compose.yml
version: '3.8'
services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    command: tunnel --url http://localhost:3000
    network_mode: host
    restart: unless-stopped

🔍 Por que usar network_mode: host aqui?

Com network_mode: host, o container compartilha a rede do host. Isso significa:

  • localhost funciona: O container pode acessar localhost:3000 diretamente
  • Sem configuração extra: Não precisa expor portas ou configurar redes customizadas
  • Ideal para apps já rodando: Perfeito quando sua aplicação já está executando fora do Docker

💻 Exemplo 2: Aplicação React/Next.js

docker-compose.yml
version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - ./src:/app/src # Hot reload

  cloudflared:
    image: cloudflare/cloudflared:latest
    command: tunnel --url http://app:3000
    depends_on:
      - app
    restart: unless-stopped

🗄️ Exemplo 3: API + Banco de Dados

docker-compose.yml
version: '3.8'
services:
  api:
    build: ./api
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/myapp
    depends_on:
      - db

  db:
    image: postgres:15
    environment:
      - POSTGRES_DB=myapp
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass

  cloudflared:
    image: cloudflare/cloudflared:latest
    command: tunnel --url http://api:3000
    depends_on:
      - api

💡 Dicas Práticas para o Dia a Dia

🚀 Para Demos e Apresentações:

Para URLs profissionais fixas, você precisa configurar um túnel nomeado no painel da Cloudflare primeiro, depois usar no Docker:

# 1. Primeiro, crie um túnel no painel Cloudflare
# 2. Depois use o token no Docker:
TUNNEL_TOKEN=seu_token_aqui

Modo rápido (URL aleatória): Use tunnel --url como nos exemplos acima - funciona imediatamente!

🐛 Para Testes de Webhook:

Perfeito para testar integrações com APIs externas que precisam fazer callbacks para sua aplicação.

👥 Para Colaboração:

Compartilhe sua aplicação em desenvolvimento com colegas sem configurar VPN ou port forwarding.

🔧 Como Funciona por Baixo dos Panos?

O Cloudflare Tunnel funciona de forma inteligente: ele estabelece uma conexão de saída (outbound) da sua máquina para os servidores da Cloudflare. Quando alguém acessa sua URL, a requisição vai primeiro para a Cloudflare e depois é roteada pelo túnel seguro até sua aplicação local.

  1. 1. Sua aplicação roda localmente (ex: localhost:3000)
  2. 2. Cloudflared cria um túnel seguro para a Cloudflare
  3. 3. Cloudflare gera uma URL pública para você
  4. 4. Requisições chegam na Cloudflare e são roteadas pelo túnel
  5. 5. Sua aplicação recebe e responde normalmente

⚖️ Cloudflare Tunnel vs. Ngrok

CaracterísticaCloudflare TunnelNgrok
Setup1 comando DockerDownload + configuração
SegurançaWAF + DDoS Protection + Zero Trust integrados + TLS automáticoTLS fornecido, mas menos camadas de segurança
Limitações (free)Nenhuma no uso básicoRate limits + sessões limitadas
PersistênciaProjetado para ser persistente (via serviço)Sessões limitadas no free tier
CustoGratuito para uso básico (requer domínio Cloudflare)Gratuito com limitações, pago para recursos avançados

🔒 E a Segurança?

Uma das maiores vantagens do Cloudflare Tunnel é a segurança nativa:

  • ✅ Sem portas abertas: Nenhuma porta do seu firewall precisa ser aberta
  • ✅ Criptografia end-to-end: Todo tráfego é criptografado
  • ✅ DDoS Protection: Proteção automática contra ataques
  • ✅ WAF integrado: Web Application Firewall da Cloudflare
  • ✅ Zero Trust: Controle de acesso baseado em identidade
O Cloudflare Tunnel + Docker é uma combinação poderosa que simplifica o processo de exposição de aplicações locais. Sem configurações complexas, sem limitações frustrantes - apenas funciona! 🚀
📝 Conteúdo criado por naysinger.tech (Colaboração de William Alievi)