Comparison
10 min read
80 views

ngrok vs. Expose: El túnel PHP de código abierto para desarrolladores web

IT
InstaTunnel Team
Published by the InstaTunnel team | Editorial policy
ngrok vs. Expose: El túnel PHP de código abierto para desarrolladores web

Current comparison

Looking for the main ngrok alternative guide?

We keep the latest ngrok alternative comparison, CLI commands, pricing notes, and webhook examples on one canonical page.

Open the InstaTunnel ngrok alternative guide

Quick answer

ngrok vs Beyond Code's Expose: El túnel de código abierto: quick answer

If free tunnel limits interrupt your workflow, compare session length, stable URLs, concurrent tunnels, and paid-plan pricing before choosing a localhost tunnel tool.

What free tunnel limits should developers check first?

Check session duration, URL stability, concurrent tunnels, custom subdomains, bandwidth or request limits, and whether webhook callbacks survive restarts.

How does InstaTunnel handle longer development sessions?

InstaTunnel Free is designed around 24-hour sessions, with Pro available for higher limits and MCP endpoint tunnel workflows.

Si construyes APIs, configuras webhooks de Stripe, Shopify o GitHub, o necesitas ofrecer a un cliente una vista previa funcional sin desplegar en staging, probablemente hayas usado ngrok en algún momento. Durante más de una década ha sido la respuesta predeterminada a “¿cómo comparto mi localhost?”

Pero el producto ngrok ha cambiado de forma. Ha evolucionado de ser una utilidad sencilla para desarrolladores a una plataforma completa de ingreso y gateway API, y su nivel gratuito refleja ese cambio. Esto ha abierto espacio para alternativas más específicas para desarrolladores — una de las más establecidas es Expose, un túnel PHP de código abierto desarrollado por Beyond Code (los creadores de Laravel Herd y Tinkerwell).

Este artículo compara ambas herramientas tal como son hoy, no como a menudo se describen en publicaciones antiguas.

(Nota: esto es Expose de Beyond Code, no LocalXpose, una herramienta de túnel multiplataforma cubierta en otra parte de este sitio. Productos diferentes, nombres similares.)

Por qué existen los túneles locales

Un servidor local (http://localhost:8000) no es accesible desde internet — ese es el comportamiento predeterminado correcto. Pero se vuelve un problema cuando necesitas:

  • Webhooks: Stripe, GitHub y servicios similares necesitan una URL pública para POSTear eventos.
  • Pruebas móviles: un teléfono o emulador requiere un endpoint real para comunicarse con tu backend local.
  • Demos para clientes: mostrar trabajo en progreso sin desplegar.

Las herramientas de túnel resuelven esto ejecutando un cliente en tu máquina que abre una conexión saliente a un servidor relay. Ese servidor te proporciona una URL pública y reenvía el tráfico por el túnel a tu puerto local.

ngrok: el incumbente

Creado en 2013 por Alan Shreve y escrito en Go, ngrok es la herramienta con la que la mayoría de desarrolladores aprendieron a hacer túneles. Desde entonces, se ha reposicionado como lo que su propio marketing llama un “gateway universal” — ofreciendo ingreso Kubernetes mediante su propio operador, reglas de política de tráfico (WAF, OAuth/OIDC, SAML), agrupamiento de endpoints para balanceo de carga, y cumplimiento SOC 2/HIPAA para clientes empresariales. Soporta HTTP, HTTPS, TCP y (en planes de pago) tráfico TLS, por lo que sigue siendo la herramienta adecuada para túneles que no son servidores web — sesiones SSH, servidores de juegos, puertos de bases de datos.

Lo que realmente restringe la capa gratuita (y lo que no)

Los límites actuales publicados por ngrok para el plan gratuito:

Recurso Límite en nivel gratuito
Endpoints en línea Hasta 3
Transferencia de datos saliente 1 GB/mes
Solicitudes HTTP/S 20,000/mes
Conexiones TCP 5,000/mes (requiere verificación de tarjeta para habilitar TCP)
Endpoints TLS No disponible
Miembros del equipo 1

Algunas correcciones a afirmaciones que circulan sobre la capa gratuita:

  • No hay timeout de sesión de 2 horas. La documentación de ngrok indica claramente que la capa gratuita no tiene timeout en los endpoints, y que puedes mantener un túnel indefinidamente como servicio en segundo plano. Esto se repite en muchos artículos comparativos; no es exacto según la documentación actual.
  • La URL en nivel gratuito no cambia aleatoriamente en cada reinicio. Cada cuenta de ngrok — incluida la gratuita — obtiene un “dominio de desarrollo” asignado (como your-name.ngrok-free.app) que está ligado a la cuenta, no se regenera por sesión. No puedes personalizarlo ni agregar tu propio dominio en el plan gratuito, pero no rota como describen escritos antiguos.
  • La página de advertencia intersticial puede ser evitada sin actualizar. ngrok inyecta una página de advertencia de seguridad en tráfico HTML en endpoints gratuitos para evitar abusos de phishing. No afecta el tráfico programático de API/webhook, y para tráfico de navegador puede saltarse enviando un encabezado ngrok-skip-browser-warning o un User-Agent no predeterminado — sin necesidad de pagar. La actualización elimina esto por completo, pero no es un bloqueo duro en el plan gratuito como a veces se presenta.

Lo que sí es restrictivo: 1 GB de transferencia mensual y 20,000 solicitudes que se agotan rápido en tráfico real, y los túneles TCP requieren verificación de tarjeta incluso en uso gratuito.

Precios actuales de pago

ngrok simplificó los nombres de sus planes. Actualmente no hay una categoría “Personal” — son Free, Hobbyist, Pay-as-you-go, y Enterprise:

  • Hobbyist — $8/mes facturado anualmente ($10 mes a mes): 3 endpoints en línea, 5 GB de transferencia, 100,000 solicitudes, sin página de advertencia, dominios con marca ngrok.
  • Pay-as-you-go — $20/mes base (incluye $20 de uso) más sobreuso medido: endpoints ilimitados, dominio propio, hasta 3 miembros en equipo.
  • Enterprise — precio personalizado, SSO/SCIM, HIPAA BAAs, soporte dedicado.

Expose: la alternativa nativa en PHP

Expose es desarrollado por Marcel Pociot y el equipo de Beyond Code (también detrás de Laravel Herd y Tinkerwell). A diferencia de ngrok, está escrito completamente en PHP y enfocado deliberadamente en HTTP/HTTPS — no soporta TCP o UDP en bruto, ni intenta ser un controlador de ingreso Kubernetes. Está dirigido exactamente a los flujos de trabajo que este blog cubre mucho: desarrollo web local, pruebas de webhooks, vistas previas para clientes.

Es realmente de código abierto (licencia MIT, cliente y servidor), que es su diferenciador principal frente a ngrok.

Instalación

Métodos oficiales actuales, según la documentación de Expose:

Composer (instalación global):

composer global require exposedev/expose

Asegúrate de que el directorio global de binarios de Composer esté en tu PATH.

Archivo PHP (PHAR), sin Composer:

curl https://github.com/exposedev/expose/raw/master/builds/expose -L --output expose
chmod +x expose
sudo mv expose /usr/local/bin/expose

Un aspecto importante a aclarar: Expose aún requiere una instalación local de PHP incluso si se instala como el “binario” PHAR — lo confirma la propia FAQ de Beyond Code. Si no usas PHP por otras razones, esa es una dependencia que ngrok no tiene en su binario único en Go.

La organización del proyecto en GitHub pasó de beyondcode a exposedev; el paquete Composer beyondcode/expose todavía existe y se actualiza, pero los docs ahora apuntan a exposedev/expose.

Autenticación y compartir un sitio

expose token TU_TOKEN
expose share http://localhost:8000

Si tienes una cuenta Pro o Team (o gestionas tu propio servidor), puedes solicitar un subdominio fijo:

expose share http://localhost:8000 --subdomain=mi-app-increible

El panel

Expose incluye un panel web local (http://127.0.0.1:4040, misma convención que ngrok) para inspeccionar y reproducir solicitudes HTTP entrantes. La versión actual, Expose 3, añadió varias funciones importantes si no lo has revisado recientemente:

  • Repetir con modificaciones — ahora puedes editar encabezados, URI o carga útil antes de reenviar una solicitud capturada.
  • Plugins de solicitudes — Expose reconoce formatos específicos de webhooks (GitHub y Paddle Billing integrados) y muestra los campos relevantes en el panel y CLI, sin tener que buscar en JSON crudo.
  • Detección de Vite — si compartes un sitio mientras un servidor de desarrollo Vite está activo, Expose lo detecta y enruta automáticamente el túnel Vite, arreglando un problema recurrente donde CSS/JS en caliente se rompían silenciosamente.
  • Comando catch-all — crea un túnel que responde 200 OK a cualquier solicitud, útil para inspeccionar rápidamente payloads de webhooks sin tener un endpoint implementado.

Auto-hospedaje vs. nivel gratuito gestionado — una distinción importante

Aquí muchas comparaciones simplifican demasiado. Decir “Expose es de código abierto, así que todo es gratis” no es del todo correcto si no gestionas tú mismo el servidor.

El nivel gratuito (“Hobby”) gestionado de Expose tiene restricciones reales, según la documentación de Beyond Code: un solo servidor en la UE, nombres de túnel aleatorios en cada conexión, y límite de tiempo por conexión. Eso es muy diferente del nivel gratuito de ngrok, que ofrece un dominio estable por cuenta sin timeout.

Auto-hospedar el servidor de código abierto es realmente gratis y elimina esas restricciones — controlas el dominio, no hay límite de tiempo, y solo dependes del ancho de banda de tu infraestructura. Pero implica montar y mantener tu propio servidor (un VPS básico de un proveedor como Hetzner o DigitalOcean es suficiente), lo cual es una responsabilidad continua, no solo una configuración inicial.

Expose Pro y Team (los niveles gestionados de pago) ofrecen URLs persistentes, dominios personalizados, subdominios reservados, y la red global de servidores de Beyond Code, sin que tengas que correr nada tú mismo.

Precios actuales publicados:

Plan Precio Incluye
Hobby Gratis Un servidor en la UE, nombres aleatorios, límite de tiempo
Auto-hospedado Gratis (tu infraestructura) Control total, dominio personalizado, sin límite de tiempo, tu ancho de banda
Pro $79/usuario/año URLs persistentes, dominios personalizados, subdominios reservados, red global, sin límite de tiempo
Team $229/equipo/año Todo en Pro, hasta 10 usuarios, soporte prioritario

Integración con Laravel, corregido

Una afirmación común es que Expose “reemplazó ngrok como la opción predeterminada” en Laravel Valet. Eso no es correcto — Valet 4+ soporta tres herramientas de compartición intercambiables (ngrok, expose, y cloudflared), seleccionadas explícitamente con valet share-tool <herramienta>. ngrok sigue siendo la opción predeterminada en Valet a menos que cambies.

Donde Expose tiene una integración más estrecha y actualizada es Laravel Herd, el entorno moderno de desarrollo local de Beyond Code (sucesor de Valet, disponible para macOS y Windows): Expose viene integrado en Herd, y puedes configurar tu token de Expose directamente desde la interfaz de Herd en lugar de la CLI.

Comparación de funciones

Función ngrok Expose
Uso principal Ingreso de red genérico; gateway API empresarial Túnel HTTP/HTTPS para desarrollo web
Lenguaje / runtime Go (binario único) PHP (PHAR aún requiere PHP local)
Protocolos HTTP/S, TCP, TLS (pago) HTTP, HTTPS solamente
Código abierto No Sí (MIT, cliente + servidor)
Ancho de banda/solicitudes en nivel gratuito 1 GB / 20,000 solicitudes/mes Sin límite en volumen, pero con conexiones de tiempo limitado y servidor único
URL en nivel gratuito Un dominio de desarrollo persistente por cuenta Subdominio aleatorio por conexión
Página de advertencia en webhooks Sí en nivel gratuito (evitable vía encabezado sin pagar) Ninguna
Inspección de solicitudes Panel local, reproducción Panel local, reproducción con ediciones, plugins de solicitudes webhook
Dominios personalizados Solo en planes de pago ($8–10/mes+) Gratis si auto-hospedas, o Pro ($79/usuario/año)
Kubernetes / ingreso empresarial Sí (operador integrado, SSO/SCIM, HIPAA) No es un caso de uso objetivo

Cuándo tiene sentido cada herramienta

Qué usar ngrok si: - Necesitas hacer túneles a algo que no sea HTTP — SSH, puerto de base de datos, servidor de juegos, TCP/TLS en bruto. - Necesitas ingreso Kubernetes, SSO/SAML, o documentación de cumplimiento (HIPAA BAAs, informes SOC 2). - Prefieres no tener PHP como dependencia en una máquina que no la requiere.

Considera Expose si: - Tu trabajo es en HTTP/webhook y ya usas PHP/Laravel (Herd, Valet, Sail). - Quieres una configuración realmente gratuita e ilimitada y estás dispuesto a auto-hospedar el servidor open-source en tu propio VPS. - El panel con detección de payloads (GitHub/Paddle, detección automática de Vite) encaja con cómo depuras integraciones.

No hay una herramienta que haya “ganado” aquí — resuelven problemas superpuestos pero distintos, y la comparación honesta depende más de si necesitas TCP en bruto / ingreso empresarial (territorio de ngrok) o un túnel HTTP ligero y auto-hospedable con flujo PHP nativo (territorio de Expose).


Registro de cambios

Correcciones y adiciones hechas al borrador original, con fuentes:

  1. Se eliminó la afirmación de “timeout de sesión de 2 horas” en ngrok gratuito. La documentación de límites del plan gratuito de ngrok indica claramente que no hay timeout en endpoints y soporta correr como servicio en segundo plano indefinidamente. (Fuente: docs ngrok, Límites del plan gratuito)
  2. Se corrigió la afirmación de “URL que cambia aleatoriamente en cada reinicio”. ngrok asigna un dominio de desarrollo por cuenta, no uno nuevo aleatorio por sesión; esto ha sido así desde que ngrok cambió sus dominios en 2023. (Fuente: docs ngrok, Límites del plan gratuito — “dominio de desarrollo… específico para tu cuenta”)
  3. Se corrigió la descripción de la página de advertencia como un problema que solo se resuelve pagando. Puede saltarse en nivel gratuito con el encabezado ngrok-skip-browser-warning o un User-Agent personalizado, sin afectar tráfico API/webhook. (Fuente: docs ngrok, Límites del plan gratuito — “Eliminar la página de advertencia”)
  4. Se actualizaron los nombres y precios de los planes de ngrok. Se eliminó la categoría “Personal” obsoleta; los planes actuales son Free, Hobbyist ($8/mes anual, $10/mes mensual), Pay-as-you-go ($20/mes + uso), y Enterprise. (Fuente: ngrok.com/pricing)
  5. Se corrigió el comando de instalación con Composer para Expose. Ahora especifica composer global require exposedev/expose (el org del proyecto cambió de beyondcode a exposedev); se añadió método alternativo con PHAR. (Fuente: expose.dev/docs/getting-started/installation)
  6. Se añadió que el “binario” PHAR de Expose aún requiere PHP local. No es un binario completamente autónomo como ngrok. (Fuente: expose.dev FAQ)
  7. Se corrigió la estructura de precios de Expose. Se reemplazó la descripción vaga por los niveles actuales: Hobby (gratis, restringido), Pro ($79/usuario/año), Team ($229/equipo/año, hasta 10 usuarios). (Fuente: expose.dev pricing)
  8. Se añadió que el nivel gratuito “Hobby” de Expose tiene restricciones reales — nombres aleatorios, límite de tiempo, un solo servidor EU. La idea de “todo gratis” solo aplica si auto-hospedas. (Fuente: expose.dev/docs/getting-started/authentication)
  9. Se corrigió la afirmación sobre la integración con Laravel Valet. Valet 4+ soporta tres herramientas de compartición (ngrok, expose, cloudflared), seleccionadas con valet share-tool <tool>. ngrok sigue siendo la opción predeterminada. (Fuentes: laravel.com/docs Valet; notas de lanzamiento de Valet 4.0)
  10. Se reemplazó la referencia a Valet por Laravel Herd, entorno de desarrollo local de Beyond Code con integración más directa con Expose (token desde la UI). (Fuente: expose.dev/docs/getting-started/authentication)
  11. Se añadieron detalles sobre Expose 3.0, la versión actual: nuevo panel, reproducción con ediciones, plugins webhook (GitHub, Paddle), detección automática de Vite, comando catch-all. (Fuente: expose.dev/docs/release-notes)
  12. Se eliminaron afirmaciones no verificables (como costos específicos de VPS) en favor de lenguaje general.
  13. Se eliminó el lenguaje promocional y SEO del encabezado y descripción original, enfocándose en información técnica precisa.

Continue from this article into the most relevant product guides and workflows.

Related Topics

#ngrok vs expose, beyond code expose, expose vs ngrok, ngrok alternative, open source ngrok alternative, best ngrok alternative for web developers, php tunneling tool, laravel tunneling tool, expose local web server, share local sites securely, self hosted tunnel free, bypass ngrok free tier, ngrok domain limits, local http dashboard, inspect incoming http requests, replay http requests, modify http headers, web developer tunnel, php ngrok alternative, laravel ecosystem tools, open source reverse proxy, free tunnel for localhost, expose php binary, beyond code tools, share localhost to internet, secure tunnel for web developers, ngrok paid features free, expose pro tier, self host expose server, open source tunneling software, web hooks local testing, expose localhost free, expose local site, local dev environment sharing, webhook inspection tool, free ngrok premium features, managed tunnel service, custom domains local tunnel, beyond code php, laravel web development tools, web app testing tunnel, localhost sharing tool, secure localhost tunnel, expose cli, web testing proxy, local server to internet, unmetered custom domains tunnel, php reverse proxy, laravel local sharing, web traffic inspector, http request replay tool, http header modifier, alternative to ngrok for web developers

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles