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:
# 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 🎉
🐳 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:
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
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
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:
# 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. Sua aplicação roda localmente (ex: localhost:3000)
- 2. Cloudflared cria um túnel seguro para a Cloudflare
- 3. Cloudflare gera uma URL pública para você
- 4. Requisições chegam na Cloudflare e são roteadas pelo túnel
- 5. Sua aplicação recebe e responde normalmente
⚖️ Cloudflare Tunnel vs. Ngrok
Característica | Cloudflare Tunnel | Ngrok |
---|---|---|
Setup | 1 comando Docker | Download + configuração |
Segurança | WAF + DDoS Protection + Zero Trust integrados + TLS automático | TLS fornecido, mas menos camadas de segurança |
Limitações (free) | Nenhuma no uso básico | Rate limits + sessões limitadas |
Persistência | Projetado para ser persistente (via serviço) | Sessões limitadas no free tier |
Custo | Gratuito 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