Todos los artículos
comparisonCloudflare Tunnellocalhost tunnelingopen source

PortPreview vs Cloudflare Tunnel: herramientas distintas

Esto no es realmente un versus. Cloudflare Tunnel (cloudflared) y PortPreview viven en habitaciones distintas. Cloudflare Tunnel es para mantener un servicio permanentemente en línea detrás del edge de Cloudflare — Zero Trust, túneles con nombre, dominios personalizados. PortPreview es para los próximos veinte minutos de tu sesión de desarrollo — pruebas de webhook, QA móvil, compartir una rama con un diseñador. Elegir entre ambos depende sobre todo de qué problema tienes en realidad.

En qué es bueno Cloudflare Tunnel

cloudflared se construyó para una cosa: poner un servicio en internet sin abrir un solo puerto entrante y sin exponer tu IP de origen. Córrelo en un servidor, adjunta un túnel con nombre a un hostname en tu dominio de Cloudflare, y el tráfico fluye por el edge de Cloudflare hasta tu origen por una conexión saliente que tu máquina inició.

Cosas que hace bien:

  • Routing de producción. La función de túnel con nombre es duradera. Puedes correr cloudflared como servicio y el hostname sigue funcionando entre reinicios.
  • Políticas de acceso Zero Trust. Protege el túnel detrás de SSO, MFA o allowlists de IP para exponer herramientas internas.
  • Dominios personalizados. Trae tu propio dominio en Cloudflare. El túnel termina en tu-dominio.com, no en un subdominio del proveedor.
  • Routing WARP. Alcanza servicios privados desde cualquier dispositivo en la red de Cloudflare sin configurar VPN.

Nada de eso trata sobre depuración de webhooks.

Dónde Cloudflare Tunnel se vuelve incómodo para desarrollo

El modo quick tunnel (cloudflared tunnel --url localhost:3000) es lo más cerca que cloudflared llega a ser una herramienta de desarrollo, y funciona. Obtienes una URL *.trycloudflare.com apuntando a tu puerto local. Pero:

  • La URL rota cada sesión, como la mayoría de los túneles de desarrollo.
  • No hay inspector de peticiones integrado. Ves lo que tu servidor de desarrollo registra y nada más. Capturar un payload de webhook para replay después requiere atornillar un proxy o logger separado.
  • La configuración de túneles con nombre (la versión de URL estable) implica una cuenta de Cloudflare, registros DNS y un archivo de config. Vale la pena para un servicio de larga vida; excesivo para una sesión de iteración de webhook.

Dónde encaja PortPreview

PortPreview es un CLI de tunneling localhost para el bucle de desarrollo. Un comando, URL HTTPS pública, captura y replay de peticiones integrados.

npx portpreview 3000

Lo que optimizamos es el momento entre "cambié mi handler de webhook de Stripe" y "sé si funciona". Ese momento debería durar segundos. Captura el payload, arregla el handler, replay hasta que esté en verde, todo sin re-disparar el evento upstream.

Lado a lado

NecesidadCloudflare TunnelPortPreview
Sesión rápida para depuración de webhookPosible (quick tunnel)Construido para esto
Captura y replay de peticionesNo
Hostname con nombre estableSí (con configuración)No es el foco por defecto
Dominio personalizadoSubdominio del túnel
Política de acceso Zero TrustNo
Complejidad de configuraciónBaja para quick, media para namedUn comando
Correr para siempre como servicioDiseñado para sesiones
Cliente open sourceSí (cloudflared)

Cuándo usar cada uno

Usa Cloudflare Tunnel cuando

  • Necesitas un servicio en línea 24/7 sin abrir puertos del firewall.
  • Quieres acceso protegido por SSO a un dashboard interno o herramienta de admin.
  • Necesitas una URL estable de dominio personalizado respaldada por un cert de CA real y tu DNS de Cloudflare existente.
  • Ya estás en Cloudflare y el costo marginal de configuración es pequeño.

Usa PortPreview cuando

  • Iteras en un handler de webhook y quieres replay de un clic.
  • Quieres compartir una rama con un diseñador por diez minutos.
  • Pruebas callbacks de OAuth o flujos móviles sin configurar DNS.
  • Prefieres no gestionar una cuenta de Cloudflare solo para probar un evento de Stripe.

Conviven bien

Varios equipos con los que hemos hablado usan ambos. Cloudflare Tunnel para la herramienta interna siempre activa que necesita una URL fija y SSO. PortPreview para la depuración diaria de webhooks que necesita replay y un solo comando. No entran en conflicto — solo sirven a partes distintas del arco dev-a-prod.

Si también estás sopesando ngrok o localtunnel, esas comparaciones pueden ser más directamente relevantes. Únete a la lista de espera de PortPreview para el lado del bucle de desarrollo.

Preguntas frecuentes

¿Es Cloudflare Tunnel un reemplazo de PortPreview?
No realmente. Cloudflare Tunnel optimiza para mantener un servicio permanentemente en línea con el edge de Cloudflare — túneles con nombre, dominios personalizados, Zero Trust. PortPreview optimiza para el bucle de desarrollo — sesiones de un comando con captura y replay de peticiones. Resuelven problemas distintos y conviven bien.
¿Cloudflare Tunnel soporta inspección de peticiones de webhook?
No de forma nativa. cloudflared reenvía tráfico sin un inspector de peticiones integrado. Para inspeccionar o hacer replay de webhooks necesitarías atornillar un proxy o capa de logging separada. PortPreview incluye captura y replay en el CLI.
¿Puedo usar Cloudflare Tunnel para sesiones de desarrollo rápidas?
Sí, vía el modo quick tunnel (cloudflared tunnel --url localhost:3000). Es servible para exposición básica pero no incluye inspección de peticiones, replay ni una URL estable sin configuración adicional de túnel con nombre.