Guia para Expor Serviços Locais com Segurança Usando Cloudflare Tunnel no ServBay
O Cloudflare Tunnel (anteriormente conhecido como Argo Tunnel) é um serviço de rede de confiança zero fornecido pela Cloudflare. Ele permite que você exponha com segurança serviços web locais, SSH ou outros aplicativos para a internet, sem precisar abrir portas públicas ou configurar regras de firewall complexas. Neste guia completo, você aprenderá a utilizar a ferramenta cliente cloudflared
no ServBay, um poderoso ambiente local de desenvolvimento web, para criar túneis seguros de acesso aos seus serviços locais via internet.
Principais Benefícios:
- Segurança Reforçada: Aproveite a segurança da rede global da Cloudflare, incluindo proteção DDoS, firewall de aplicações web (WAF) e mais.
- Configuração Simplificada: Elimine a necessidade de lidar com redirecionamento de portas, NATs ou regras de firewall.
- Modelo Zero Trust: As conexões são iniciadas de dentro para fora, reduzindo a superfície de ataque.
- Integração com recursos Cloudflare: Aproveite cache, otimização e análise de tráfego ofertados pela Cloudflare.
Visão Geral
O ServBay fornece um ambiente integrado e fácil de gerenciar para desenvolvedores, com suporte nativo a várias linguagens (PHP, Node.js, Python, Go, Java, Ruby, Rust etc.), bancos de dados (MySQL, PostgreSQL, MongoDB, Redis etc.) e servidores web (Caddy, Nginx, Apache). Por padrão, os sites e aplicativos que você desenvolve no ServBay só podem ser acessados localmente. Ao integrar o Cloudflare Tunnel, você pode compartilhar facilmente o progresso do desenvolvimento com membros do time ou, em situações específicas, expor serviços locais temporária ou permanentemente para usuários externos, mantendo todos os benefícios de segurança e desempenho da Cloudflare.
Princípio Técnico
O funcionamento do Cloudflare Tunnel baseia-se em rodar o cliente cloudflared
na sua máquina local (onde o ServBay está ativo). Este cliente estabelece proativamente uma ou mais conexões criptografadas, usando o protocolo QUIC, ao nó Cloudflare mais próximo. Como são conexões iniciadas de dentro para fora, não é necessário configurar regras de entrada no roteador ou firewall. Quando alguém acessa o serviço pelo domínio associado ao túnel, o tráfego chega primeiro à borda da Cloudflare, depois é encaminhado de maneira segura, através do túnel, até o cloudflared
, que então redireciona a requisição ao serviço local no ServBay (por exemplo, um site rodando em https://servbay.local
ou http://localhost:8000
). A resposta do serviço faz o caminho inverso até o usuário final.
Preparando o Ambiente
Antes de começar a configuração, garanta que você atenda aos seguintes pré-requisitos:
- ServBay Instalado e Rodando: O ambiente ServBay deve estar operacional e o site/serviço local que você deseja expor deve estar disponível no ServBay. Por exemplo, o domínio padrão
servbay.local
precisa ser acessível. - Conta Cloudflare: Você deve possuir uma conta na Cloudflare.
- Domínio Gerenciado pela Cloudflare: Tenha um domínio já adicionado à sua conta Cloudflare, com o DNS gerenciado pela empresa.
- Cliente
cloudflared
Instalado: Instale ocloudflared
na máquina macOS onde o ServBay está ativo.
1. Instalando o Cliente cloudflared
No macOS, recomenda-se usar o Homebrew. Se não o possuir, siga as instruções no site oficial do Homebrew.
Instalação com Homebrew (Recomendado):
brew update
brew install cloudflared
2
Download Manual (para arquitetura ARM do macOS):
# Baixe o binário para Apple Silicon (macOS ARM)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz | tar xz
# Mova o binário para um diretório no PATH do sistema
sudo mv cloudflared /usr/local/bin/
2
3
4
Verificação da Instalação: Após instalado, verifique a instalação e veja a versão usando:
cloudflared --version
# Exemplo de saída: cloudflared version 2024.5.0 (built 2024-05-01)
2
O número da versão pode mudar; o importante é que a informação apareça, confirmando que a instalação foi bem sucedida.
2. Faça Login na Conta Cloudflare
No terminal, autorize o cloudflared
com sua conta rodando o comando:
cloudflared tunnel login
Esse comando abrirá seu navegador e levará você à página de autorização da Cloudflare. Selecione a conta onde seu domínio está vinculado e conceda acesso ao cloudflared
. Após a autorização, um aviso de sucesso será exibido e, no terminal, uma mensagem confirmará a criação do arquivo cert.pem
no diretório padrão (geralmente ~/.cloudflared/
).
Configurando o Túnel na Prática
Vamos criar um novo túnel e direcionar o tráfego aos serviços locais rodando no ServBay.
Processo de Configuração Central
Criar o Túnel
No terminal, crie um túnel nomeado (ex:
servbay-demo-tunnel
):bashcloudflared tunnel create servbay-demo-tunnel
1Após a execução, será exibido um ID exclusivo do túnel (UUID) e o caminho do arquivo de credenciais. Exemplo de ID:
a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d
. Isso cria um arquivo de credenciais no formato JSON em~/.cloudflared/
(ex:a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json
). Guarde este arquivo com segurança.Configurar o Registro DNS
Para a Cloudflare encaminhar o tráfego do domínio ao seu túnel, crie um registro CNAME no DNS. Use o comando:
bashcloudflared tunnel route dns servbay-demo-tunnel servbay-demo.seudominio.com
1Substitua
servbay-demo-tunnel
pelo nome do túnel criado eservbay-demo.seudominio.com
pelo subdomínio desejado para acessar o serviço local (o domínio principal precisa estar sob sua conta Cloudflare).O comando cria automaticamente um registro CNAME em
servbay-demo.seudominio.com
apontando para<ID-do-Túnel>.cfargotunnel.com
.Criar o Arquivo de Configuração
O
cloudflared
utiliza um arquivo YAML para controlar que serviços serão expostos e sob que domínios. Por padrão, este arquivo fica em~/.cloudflared/config.yml
. Caso não exista, crie-o.Exemplo:
yaml# tunnel: UUID do túnel — troque pelo ID real do seu túnel tunnel: a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d # credentials-file: caminho do arquivo de credenciais credentials-file: /Users/seuusuario/.cloudflared/a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json # Substitua pelo seu usuário e caminho correto ingress: # Regras de correspondência para as solicitações que entram no túnel - hostname: servbay-demo.seudominio.com # O domínio externo service: https://servbay.local # Endereço local do serviço ServBay com SSL originRequest: # noTLSVerify: true # Se usar certificado autoassinado, ative esta opção para ignorar verificação TLS - service: http_status:404 # Regra padrão: retorna 404 para domínios desconhecidos
1
2
3
4
5
6
7
8
9
10
11
12Dicas Importantes:
- Substitua os valores de
tunnel
ecredentials-file
pelos obtidos no seu ambiente. - Altere
hostname
para o subdomínio determinado no registro DNS. service: https://servbay.local
aponta para o endereço HTTPS padrão do ServBay; ajuste o valor se o serviço rodar em outra porta/endereço, como por exemplo um app Node.js emhttp://localhost:3000
.- O parâmetro
originRequest.noTLSVerify: true
desativa a verificação de certificado SSL entre ocloudflared
e o serviço local, necessário se estiver usando certificados autoassinados (como o User CA do ServBay). Se usar um certificado válido do Let's Encrypt, não ative esta opção.
- Substitua os valores de
Iniciando o Serviço do Túnel
Com o arquivo de configuração pronto, inicie o serviço do túnel com:
cloudflared tunnel run servbay-demo-tunnel
Troque servbay-demo-tunnel
pelo nome do seu túnel.
O cloudflared
irá se conectar à rede Cloudflare e estabelecer o túnel, mostrando logs e status no terminal. O túnel permanecerá ativo enquanto o comando rodar. Para rodar em segundo plano, configure como serviço do sistema (exemplo: usando launchctl
no macOS; consulte documentação específica).
Validando o Serviço
Após o túnel estar em operação, acesse de qualquer rede o domínio configurado e valide o serviço:
Acesse o Domínio Configurado:
No navegador, acesse o subdomínio definido, por exemplo,https://servbay-demo.seudominio.com
.O que validar:
- O site carregado deve ser idêntico ao visto em
https://servbay.local
localmente. - O navegador deve mostrar SSL válido emitido para seu domínio (este certificado é da Cloudflare, não do serviço local).
- No painel de desenvolvedor, procure cabeçalhos HTTP como
CF-RAY
que indicam passagem do tráfego pela Cloudflare.
- O site carregado deve ser idêntico ao visto em
Dicas de Configuração Avançada
Roteamento para Múltiplos Serviços
Defina múltiplas regras na seção ingress
para rotear diferentes domínios/subdomínios para diversos serviços locais do ServBay (ex: sites distintos, APIs):
ingress:
- hostname: api.seudominio.com
service: http://localhost:8080 # API rodando localmente na porta 8080
- hostname: app.seudominio.com
service: https://servbay.local # Site principal
- service: http_status:404
2
3
4
5
6
Monitoramento de Tráfego e Logs
O cloudflared
oferece comandos para monitorar e depurar o túnel:
- Ver métricas em tempo real:bash
cloudflared tunnel info servbay-demo-tunnel
1 - Obter logs detalhados:
O comandocloudflared tunnel run
exibe logs no terminal. É possível ajustar o nível de log ou direcionar a saída a um arquivo.
Integração com Cloudflare Access
Para reforçar a proteção, integre o Cloudflare Access, adicionando camada de autenticação e autorização sobre os serviços expostos. O Access faz parte da plataforma Zero Trust e oferece controle granular, mais flexível que soluções VPN tradicionais. A configuração é feita no painel da Cloudflare.
Solução de Problemas
Veja abaixo uma tabela de sintomas comuns e respectivas soluções:
Sintoma | Solução |
---|---|
502 Bad Gateway ao acessar o domínio | Confira se o serviço local do ServBay está de fato rodando (https://servbay.local etc.).Verifique endereço/porta indicada em config.yml .Se usar HTTPS e não ativou noTLSVerify , confira a validade do certificado ou ative o parâmetro. |
Erro de resolução DNS | Certifique-se que há um registro CNAME correto em Cloudflare apontando para <ID-do-Túnel>.cfargotunnel.com .Use dig ou nslookup para conferir. |
Erro de certificado ao acessar | Se for do certificado da Cloudflare, verifique se hostname em config.yml corresponde ao domínio de acesso.Se o erro for na conexão cloudflared →serviço local (TLS), cheque o endereço e considere ativar originRequest.noTLSVerify: true . |
Erro ao rodar cloudflared tunnel run | Confirme se o arquivo ~/.cloudflared/config.yml existe e está no formato YAML correto.Confira os valores de tunnel e credentials-file .Verifique permissões de acesso do cloudflared aos arquivos de configuração e credenciais. |
Lentidão ou instabilidade de acesso | Verifique se sua internet está estável. O Cloudflare Tunnel usa QUIC – confira se seu ambiente de rede não bloqueia QUIC. Ajuste localização do túnel em Cloudflare ou contate o suporte se necessário. |
Resumo dos Benefícios da Solução
Ao integrar Cloudflare Tunnel ao ServBay, você é capaz de:
- Compartilhar resultados de desenvolvimento com segurança: Demonstre sites/apps para clientes ou equipes diretamente do ambiente local.
- Testar callbacks e webhooks externos: Facilite testes que exigem acesso público ao serviço.
- Ter proteção corporativa: Use as camadas de defesa Cloudflare (DDoS, WAF e outras) contra ataques, assegurando o serviço local.
- Simplificar a configuração de rede: Elimine de vez redirecionamento de portas e ajustes complexos de firewall.
- Aproveitar a rede global da Cloudflare: Obtenha performance e resiliência com Anycast.
O ecossistema robusto do ServBay, quando combinado à exposição segura proporcionada pelo Cloudflare Tunnel, oferece ao desenvolvedor um fluxo de trabalho eficiente e protegido.
Conclusão
Este tutorial mostrou como instalar e configurar o cliente cloudflared
em ambiente ServBay, criar e rodar um Cloudflare Tunnel, expondo com segurança seus serviços web locais para a internet. Ao seguir estas instruções, você aproveita o suporte multi-stack do ServBay e a segurança do Tunnel, potencializando o desenvolvimento e a colaboração. Lembre-se: o Cloudflare Tunnel faz parte da plataforma Zero Trust da Cloudflare — vale explorar recursos como o Cloudflare Access para controles de acesso e proteção ainda mais avançados.