Configurando Cloudflare Zero Trust Tunnel com Docker
Configurando Cloudflare Zero Trust Tunnel com Docker
O Cloudflare Tunnel (parte do ecossistema Zero Trust) permite expor serviços locais para a internet de forma segura, sem a necessidade de abrir portas no seu roteador ou lidar com configurações complexas de NAT e firewall.
Neste guia, utilizaremos o método de Cloud-managed Tunnels, que permite gerenciar todas as rotas diretamente pelo painel da Cloudflare, utilizando Docker para uma implantação limpa e escalável.
Por que usar Cloudflare Tunnels?
- Sem Port Forwarding: Não é necessário expor seu IP público ou abrir portas 80/443.
- Segurança Nativa: Proteção contra DDoS e integração com políticas de acesso (WAF).
Pré-requisitos
- Domínio configurado na Cloudflare.
- Docker e Docker Compose instalados.
- Acesso ao painel Cloudflare Zero Trust.
Passo 1: Criação do Túnel no Painel
Em vez de configurar arquivos YAML complexos localmente, vamos criar o túnel de forma gerenciada:
- Acesse o painel Zero Trust e vá em Networks > Tunnels.
- Clique em Create a Tunnel e selecione Cloudflared.
- Dê um nome ao túnel (ex:
servidor-home-lab) e salve. - Na seção “Choose your environment”, selecione Docker.
- O painel exibirá um comando. Copie apenas o token alfanumérico longo que aparece após o parâmetro
--token.
Passo 2: Configuração do Docker Compose
No seu servidor, crie a estrutura de diretórios e o arquivo de configuração. Ou se você use o Portainer, pode adicionar o conteúdo do docker-compose diretamente na parte da criação da stack.
mkdir -p ~/cloudflared && cd ~/cloudflared
nano docker-compose.yml
Docker Compose File
version: '3.8'
services:
tunnel:
image: cloudflare/cloudflared:latest
container_name: cloudflared-tunnel
restart: unless-stopped
environment:
- TUNNEL_TOKEN=SEU_TOKEN_AQUI
command: tunnel --no-autoupdate run
Inicie o serviço:
docker-compose up -d
Passo 3: Configurando Rotas (Public Hostnames)
Agora que o container está conectado, configure o acesso externo:
- No painel da Cloudflare (onde você pegou o token), clique em Next.
- Na aba Public Hostname, clique em Add a public hostname.
- Preencha os campos:
- Subdomain: app (ou o nome desejado).
- Domain: Selecione seu domínio.
- Service Type: HTTP (ou HTTPS, dependendo do seu serviço local).
- URL: O IP interno do seu servidor e a porta (ex: 192.168.1.50:8080 ou nome_do_container:porta se estiverem na mesma rede Docker).
- Clique em Save hostname.

Uma vez que esse túnel está salvo, o seu túnel já está exposto para a internet. O túnel elimina a necessidade de portas abertas, mas expõe o serviço à internet. É importante implementar as camadas de segurança para mitigar ataques de força bruta e vulnerabilidades no serviço de origem.