Todos os artigos
comparisonCloudflare Tunnellocalhost tunnelingopen source

PortPreview vs Cloudflare Tunnel: ferramentas diferentes

Isto não é realmente um versus. Cloudflare Tunnel (cloudflared) e PortPreview moram em quartos diferentes. O Cloudflare Tunnel é para manter um serviço permanentemente online atrás do edge da Cloudflare — Zero Trust, túneis nomeados, domínios personalizados. O PortPreview é para os próximos vinte minutos da sua sessão de desenvolvimento — testes de webhook, QA mobile, compartilhar um branch com um designer. Escolher entre eles depende sobretudo de qual problema você realmente tem.

No que o Cloudflare Tunnel é bom

O cloudflared foi construído para uma coisa: colocar um serviço na internet sem abrir uma única porta de entrada e sem expor seu IP de origem. Rode-o num servidor, anexe um túnel nomeado a um hostname no seu domínio Cloudflare, e o tráfego flui pelo edge da Cloudflare até sua origem por uma conexão de saída que sua máquina iniciou.

Coisas que ele faz bem:

  • Roteamento de produção. O recurso de túnel nomeado é durável. Você pode rodar o cloudflared como serviço e o hostname continua funcionando entre reinícios.
  • Políticas de acesso Zero Trust. Proteja o túnel atrás de SSO, MFA ou allowlists de IP para exposição de ferramentas internas.
  • Domínios personalizados. Traga seu próprio domínio na Cloudflare. O túnel termina em seu-dominio.com, não num subdomínio do fornecedor.
  • Roteamento WARP. Alcance serviços privados de qualquer dispositivo na rede Cloudflare sem configurar VPN.

Nada disso é sobre depuração de webhooks.

Onde o Cloudflare Tunnel fica desajeitado para desenvolvimento

O modo quick tunnel (cloudflared tunnel --url localhost:3000) é o mais perto que o cloudflared chega de uma ferramenta de desenvolvimento, e funciona. Você obtém uma URL *.trycloudflare.com apontando para sua porta local. Mas:

  • A URL rotaciona a cada sessão, como a maioria dos túneis de desenvolvimento.
  • Não há inspetor de requisições integrado. Você vê o que seu servidor de desenvolvimento registra e nada mais. Capturar um payload de webhook para replay depois exige acoplar um proxy ou logger separado.
  • A configuração de túneis nomeados (a versão de URL estável) envolve uma conta Cloudflare, registros DNS e um arquivo de config. Vale a pena para um serviço de vida longa; exagero para uma sessão de iteração de webhook.

Onde o PortPreview se encaixa

O PortPreview é um CLI de tunneling localhost para o loop de desenvolvimento. Um comando, URL HTTPS pública, captura e replay de requisições integrados.

npx portpreview 3000

O que otimizamos é o momento entre "mudei meu handler de webhook do Stripe" e "sei se funciona". Esse momento deveria durar segundos. Capture o payload, conserte o handler, replay até ficar verde, tudo sem re-disparar o evento upstream.

Lado a lado

NecessidadeCloudflare TunnelPortPreview
Sessão rápida para depuração de webhookPossível (quick tunnel)Feito para isso
Captura e replay de requisiçõesNãoSim
Hostname nomeado estávelSim (com configuração)Não é o foco padrão
Domínio personalizadoSimSubdomínio do túnel
Política de acesso Zero TrustSimNão
Complexidade de configuraçãoBaixa para quick, média para namedUm comando
Rodar para sempre como serviçoSimProjetado para sessões
Cliente open sourceSim (cloudflared)Sim

Quando usar cada um

Use o Cloudflare Tunnel quando

  • Você precisa de um serviço online 24/7 sem abrir portas do firewall.
  • Você quer acesso protegido por SSO a um dashboard interno ou ferramenta de admin.
  • Você precisa de uma URL estável de domínio personalizado respaldada por um cert de CA real e seu DNS Cloudflare existente.
  • Você já está na Cloudflare e o custo marginal de configuração é pequeno.

Use o PortPreview quando

  • Você itera num handler de webhook e quer replay com um clique.
  • Você quer compartilhar um branch com um designer por dez minutos.
  • Você testa callbacks de OAuth ou fluxos mobile sem configurar DNS.
  • Você prefere não gerenciar uma conta Cloudflare só para testar um evento do Stripe.

Eles coabitam bem

Vários times com quem conversamos usam ambos. Cloudflare Tunnel para a ferramenta interna sempre-ativa que precisa de uma URL fixa e SSO. PortPreview para a depuração diária de webhooks que precisa de replay e um único comando. Eles não conflitam — apenas servem partes diferentes do arco dev-para-prod.

Se você também está pesando ngrok ou localtunnel, essas comparações podem ser mais diretamente relevantes. Entre na lista de espera do PortPreview para o lado do loop de desenvolvimento.

Perguntas frequentes

O Cloudflare Tunnel é um substituto para o PortPreview?
Não exatamente. O Cloudflare Tunnel otimiza para manter um serviço permanentemente online com o edge da Cloudflare — túneis nomeados, domínios personalizados, Zero Trust. O PortPreview otimiza para o loop de desenvolvimento — sessões de um comando com captura e replay de requisições. Eles resolvem problemas diferentes e coabitam bem.
O Cloudflare Tunnel suporta inspeção de requisições de webhook?
Não nativamente. O cloudflared encaminha o tráfego sem um inspetor de requisições integrado. Para inspecionar ou fazer replay de webhooks você precisaria acoplar um proxy ou camada de logging separada. O PortPreview inclui captura e replay no CLI.
Posso usar o Cloudflare Tunnel para sessões de desenvolvimento rápidas?
Sim, via o modo quick tunnel (cloudflared tunnel --url localhost:3000). É serviçável para exposição básica mas não inclui inspeção de requisições, replay ou uma URL estável sem configuração adicional de túnel nomeado.