Cómo exponer tu web local al exterior: guía completa de HTTP tunnels en 2026
Estás desarrollando una aplicación en localhost:3000 y necesitas que un cliente la pruebe, recibir un webhook de Stripe, validar un OAuth callback o simplemente mostrar un avance a un colega remoto. Desplegar a producción para cada cambio es lento, abrir puertos en tu router es complicado (y en muchos ISP residenciales, imposible), y configurar un VPN puede ser excesivo. La solución estándar de la industria son los HTTP tunnels: servicios que exponen tu localhost al internet con una URL pública en segundos.
En este artículo repaso qué es un HTTP tunnel, por qué lo vas a necesitar tarde o temprano como developer, y un panorama completo de las herramientas más relevantes en 2026 — desde el clásico ngrok hasta opciones self-hosted como frp, pasando por enfoques modernos como Tailscale Funnel.
¿Qué es un HTTP tunnel?
Un HTTP tunnel es un servicio que crea un puente entre tu máquina local y un servidor con IP pública en internet. La idea, en su forma más simple, es esta: tu máquina abre una conexión saliente y persistente hacia el servidor del tunnel. Cuando alguien hace una petición HTTP/HTTPS a una URL pública asignada por ese servicio, el servidor reenvía esa petición por la conexión que tu máquina abrió, llega a tu localhost, tu app responde, y la respuesta vuelve por el mismo camino hasta el visitante.
Lo importante es que la conexión la inicia tu máquina hacia afuera, no al revés. Eso significa que no necesitas abrir puertos en tu router, no te afecta estar detrás de un NAT, y los firewalls corporativos suelen permitir el tráfico saliente sin problemas. Visto desde fuera, es como tener una IP pública temporal sin pagar por ella ni configurar nada de red.
La mayoría de servicios además se encarga del HTTPS automáticamente, así que tu URL pública viene con certificado válido sin que tengas que tocar Let's Encrypt ni nada por el estilo.
¿Por qué vas a necesitarlo?
Hay varios escenarios en los que un tunnel pasa de "utilidad" a "necesidad real":
El más común es probar webhooks localmente. Servicios como Stripe, MercadoPago, PayPal, GitHub, Discord o n8n necesitan una URL pública para enviarte eventos. Sin un tunnel, cada cambio en tu handler implica desplegar a un staging y esperar — con un tunnel, recibes los webhooks directamente en tu código en debug.
El segundo escenario son las demos a clientes. Cuando estás desarrollando un proyecto y quieres mostrar el avance sin desplegar, una URL pública temporal es lo más rápido. Esto aplica también a OAuth callbacks: muchos providers (Google, GitHub, Auth0) exigen HTTPS público para registrar el redirect_uri, y sin un tunnel no puedes testear el flujo completo en local.
También aparece en desarrollo móvil, donde tu API local necesita ser accesible desde un dispositivo físico que no está en la misma red, y en proyectos de IoT o hardware que golpean tu API mientras desarrollas. Y por supuesto, está el caso simple de compartir tu trabajo en progreso con alguien remoto sin pasar por un deploy.
ngrok: el clásico
ngrok es la referencia obligada cuando se habla de HTTP tunnels. Existe desde hace más de una década, tiene una experiencia de usuario muy pulida y un dashboard de inspección de requests que sigue siendo uno de los mejores del mercado.
La instalación es directa en cualquier sistema:
# macOS
brew install ngrok
# Windows
choco install ngrok
# Autenticación con tu token (gratis desde dashboard.ngrok.com)
ngrok config add-authtoken TU_TOKEN
# Levantar el tunnel hacia tu app local
ngrok http 3000
Una vez ejecutado, ngrok te da una URL pública del tipo https://xxxx.ngrok-free.app y un panel local en http://localhost:4040 donde puedes ver cada request entrante, el body, los headers, y replicarlas con un click. Esa interfaz es lo que hace que ngrok siga siendo difícil de reemplazar para desarrollo de webhooks.
Las limitaciones del plan gratuito son el principal motivo por el que muchos developers buscan alternativas: solo un endpoint activo a la vez, ancho de banda limitado, la URL cambia en cada reinicio (las URLs estáticas son de pago), y no hay soporte de UDP. El pricing actual va desde un plan Personal accesible hasta planes Pro y Enterprise para uso intensivo.
Cloudflare Tunnel: gratis "en serio"
Si ya tienes un dominio en Cloudflare, Cloudflare Tunnel es probablemente la mejor relación costo-beneficio del mercado: es completamente gratis, sin límite de ancho de banda, y permite usar tu propio dominio sin pagar nada extra.
Funciona mediante un daemon llamado cloudflared que corre en tu máquina y mantiene una conexión saliente hacia la red de Cloudflare. Tu IP pública nunca queda expuesta, y de regalo te llevas la protección DDoS y el routing global de Cloudflare.
Hay dos modos de uso. El "rápido" te da una URL temporal en un subdominio de trycloudflare.com:
brew install cloudflare/cloudflare/cloudflared
cloudflared tunnel --url http://localhost:3000
Y el modo "con nombre", que crea un tunnel persistente apuntado a un subdominio tuyo:
cloudflared tunnel login
cloudflared tunnel create mi-app
cloudflared tunnel route dns mi-app dev.fazt.dev
cloudflared tunnel run mi-app
A partir de ese momento, dev.fazt.dev apunta a tu localhost de manera estable, con HTTPS automático y sin que tu IP residencial quede expuesta. La gran limitación frente a ngrok es que Cloudflare Tunnel no incluye inspección de requests — para eso, sigues necesitando algo como ngrok o Hookdeck.
Las opciones ligeras: Pinggy, localhost.run y Tunnelmole
Para casos donde simplemente quieres una URL pública en cinco segundos sin instalar nada, hay una categoría de tunnels minimalistas que vale la pena conocer.
Pinggy se ha vuelto muy popular en 2026 por su simplicidad. No requiere descargar nada ni crear cuenta para probar — basta con un comando SSH:
ssh -p 443 -R0:localhost:3000 a.pinggy.io
Los tunnels gratuitos duran 60 minutos, e incluye QR codes en la terminal y un inspector de requests integrado. Es probablemente la opción más rápida para un demo improvisado.
localhost.run sigue la misma filosofía SSH-based con cero instalación:
ssh -R 80:localhost:3000 nokey@localhost.run
Tunnelmole se diferencia por ser open source. Tiene HTTPS automático, configuración cero, y el cliente está en GitHub si quieres self-hostearla:
npm install -g tunnelmole
tmole 3000
Las tres comparten la misma vibra: ideal para demos rápidos, no te importa que la URL cambie, no quieres instalar nada permanente. Cuando necesitas algo persistente con tu dominio, ngrok o Cloudflare Tunnel siguen siendo mejores opciones.
VSCode Tunnel y Microsoft Dev Tunnels
Microsoft tiene dos productos en este espacio que suelen confundirse, y vale la pena distinguirlos.
VSCode Tunnel está pensado para desarrollo remoto, no tanto para exponer una web. Cuando ejecutas code tunnel en una máquina, esa máquina queda accesible desde otra instancia de VSCode (o desde vscode.dev en el browser), de modo que puedes editar archivos, ejecutar terminales y debuggear como si estuvieras sentado frente a ella. Lo que expones es tu entorno de desarrollo, no una URL HTTP para visitantes.
Microsoft Dev Tunnels es la versión "standalone" para exponer puertos arbitrarios:
devtunnel host -p 3000 --allow-anonymous
Es funcional, pero muestra warnings cuando los visitantes acceden a la URL, así que no es para producción ni para compartir con clientes — sirve más bien como utilidad interna del ecosistema Microsoft.
Si ya pasas el día dentro de VSCode, conocer estas opciones te ahorra instalar otra herramienta. Para todo lo demás, las opciones anteriores son más apropiadas.
Opciones self-hosted: frp, zrok y bore
Si prefieres no depender de un SaaS y ya tienes un VPS con IP pública (un Hetzner o DigitalOcean barato bastan), las opciones self-hosted te dan algo equivalente a ngrok Pro por el costo del servidor.
frp (Fast Reverse Proxy) es el rey indiscutido del self-hosted. Está escrito en Go, soporta HTTP, HTTPS, TCP, UDP y WebSockets, y se configura con dos binarios: frps corre en tu VPS y frpc en tu máquina local. La configuración es en TOML y es uno de esos proyectos open source con tracción real, miles de stars en GitHub y comunidad activa.
zrok está construido sobre OpenZiti y publicado bajo licencia Apache 2. Su diferenciador es que permite compartir tanto público como privado, y ofrece tanto un servicio hosteado gratis como la opción de self-hostearlo completo.
bore es la opción minimalista, escrita en Rust:
bore local 3000 --to bore.pub
Una sola línea, un solo binario, y puedes correr tu propio servidor con bore server si quieres soberanía total. No tiene las features avanzadas de frp, pero para casos simples es perfecto.
Tailscale Funnel: el enfoque "fuera de la caja"
Tailscale técnicamente no es un tunnel tradicional — es una mesh VPN sobre WireGuard que conecta todas tus máquinas en una red privada. Pero con la feature Funnel, puedes exponer cualquier servicio de tu red Tailscale al internet público con un solo comando:
tailscale funnel 3000
El servicio queda accesible desde un subdominio en *.ts.net con HTTPS automático. La gracia es que mezcla en una sola herramienta el acceso privado entre tus máquinas (laptop de trabajo, server, NAS) y el acceso público al mundo cuando lo necesitas.
Tiene sentido sobre todo si ya estás invertido en el ecosistema Tailscale. Si vienes a esto solo por exponer un localhost, las opciones anteriores son más directas.
Tabla comparativa
| Herramienta | Open source | Free tier | Dominio propio | UDP | TCP | Self-host | Inspección |
|---|---|---|---|---|---|---|---|
| ngrok | Cliente parcial | Sí (limitado) | Pago | No | Sí | No | Excelente |
| Cloudflare Tunnel | Cliente (Apache 2) | Sí, sin límite BW | Gratis | No | Sí | No | No |
| Pinggy | No | Sí (60 min) | Pago | Sí | Sí | No | Sí |
| localhost.run | No | Sí | Pago | No | No | No | No |
| Tunnelmole | Sí | Sí | Pago | No | No | Sí | No |
| LocalXpose | No | Sí | Pago | Sí | Sí | No | Sí |
| VSCode Tunnel | Parcial | Sí | No | No | No | No | No |
| MS Dev Tunnels | No | Sí | No | No | Sí | No | No |
| frp | Sí (Apache 2) | N/A | Sí | Sí | Sí | Sí | No |
| zrok | Sí (Apache 2) | Sí | Sí | Sí | Sí | Sí | Parcial |
| bore | Sí (MIT) | Sí | No | No | Sí | Sí | No |
| Tailscale Funnel | Cliente OSS | Sí | Subdominio .ts.net |
No | HTTPS | No | No |
| Inlets | No | No | Sí | Sí | Sí | Sí | No |
¿Cuál elegir?
La respuesta corta es que no hay una sola herramienta que gane en todos los escenarios — y por eso vale la pena conocer varias. Esta es mi recomendación según el caso de uso:
Para empezar hoy mismo sin pensarlo demasiado, ngrok o Cloudflare Tunnel. Si ya tienes un dominio en Cloudflare, Cloudflare Tunnel gana sin discusión por ser gratis con dominio propio. Si no, ngrok te da una experiencia más completa con su inspector.
Para desarrollo intensivo de webhooks, ngrok sigue siendo difícil de superar por su dashboard. Si vives de webhooks (un SaaS de integraciones, por ejemplo), Hookdeck CLI está construido específicamente para eso, con replay de eventos y filtros.
Para demos rápidos sin instalar nada, Pinggy o localhost.run con SSH. Cinco segundos, una línea, listo.
Para control total y no depender de un SaaS, frp si necesitas todas las features, bore si quieres simplicidad. Ambos requieren un VPS, pero el costo total es bajo.
Si ya usas Tailscale para conectar tus máquinas, Funnel ya está pagado dentro de tu setup actual. Activarlo es un comando.
La realidad es que la mayoría de developers experimentados terminamos teniendo dos o tres de estos instalados, cada uno para un escenario distinto. No tienes que casarte con una sola.
Recursos
Documentación oficial de las herramientas mencionadas:
- ngrok — https://ngrok.com/docs
- Cloudflare Tunnel — https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/
- Pinggy — https://pinggy.io
- localhost.run — https://localhost.run
- Tunnelmole — https://tunnelmole.com
- LocalXpose — https://localxpose.io
- VSCode Tunnel — https://code.visualstudio.com/docs/remote/tunnels
- Microsoft Dev Tunnels — https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/
- frp — https://github.com/fatedier/frp
- zrok — https://zrok.io
- bore — https://github.com/ekzhang/bore
- Tailscale Funnel — https://tailscale.com/kb/1223/funnel
- Inlets — https://inlets.dev
- Hookdeck CLI — https://hookdeck.com
Artículos consultados para armar este panorama 2026:
- Awesome Tunneling (lista curada en GitHub) — https://github.com/anderspitman/awesome-tunneling
- Top 10 Ngrok alternatives in 2026 (Pinggy) — https://pinggy.io/blog/best_ngrok_alternatives/
- Top ngrok Alternatives for 2026 (freeCodeCamp) — https://www.freecodecamp.org/news/top-ngrok-alternatives-tunneling-tools/
- Best ngrok Alternatives for 2026 (LocalXpose) — https://localxpose.io/blog/best-ngrok-alternatives
- Top 10 Cloudflare Tunnel Alternatives in 2026 (Pinggy) — https://pinggy.io/blog/best_cloudflare_tunnel_alternatives/
- Top 10 Cloudflare Tunnel Alternatives in 2026 (dev.to) — https://dev.to/lightningdev123/top-10-cloudflare-tunnel-alternatives-in-2026-a-practical-guide-for-developers-2akg
- ngrok Alternatives (Tailscale) — https://tailscale.com/learn/ngrok-alternatives
- Top 10 Ngrok Alternatives in 2026 (dev.to) — https://dev.to/lightningdev123/top-10-ngrok-alternatives-in-2026-a-practical-guide-to-choosing-the-right-tunnel-54f6
- Best Cloudflare Tunnel Alternatives in 2026 (LocalXpose) — https://localxpose.io/blog/cloudflare-tunnel-alternatives
- Best ngrok Alternatives for Webhook Development (Hookdeck) — https://hookdeck.com/webhooks/platforms/ngrok-alternatives-for-local-tunnel-webhook-development