Si alguna vez necesitaste mostrar una aplicación que estás desarrollando en tu computadora, probar un webhook o conectar un servicio externo con una API que todavía funciona únicamente en localhost, probablemente hayas utilizado ngrok.
Ahora existe otra herramienta que vale la pena conocer: tunnl.gg.
Su propuesta es bastante sencilla: convertir una aplicación que se está ejecutando en tu computadora en una dirección HTTPS pública utilizando únicamente SSH.
No necesitas instalar un agente específico, crear una cuenta ni configurar un token.
Al 2 de octubre de 2026, la documentación oficial de tunnl.gg confirma que el servicio continúa disponible gratuitamente bajo límites de uso razonable y que su servidor es además open source.
¿Qué es tunnl.gg?
tunnl.gg es un servicio de reverse tunneling que conecta una aplicación ejecutándose en tu equipo con una dirección pública accesible desde Internet.
Imagina que tienes una API funcionando en:
http://localhost:8000Normalmente esa dirección solamente puede abrirse desde tu computadora.
Con tunnl.gg puedes ejecutar:
ssh -t -R 80:localhost:8000 proxy.tunnl.ggy recibir una dirección pública similar a:
https://happy-tiger-a1b2c3d4.tunnl.ggCualquier petición enviada a esa URL será redirigida hacia tu aplicación local mientras mantengas abierta la conexión SSH.
Esto permite probar aplicaciones sin tener que desplegarlas previamente en un hosting o servidor.
Entonces... ¿tunnl.gg es como ngrok?
Sí.
Ambas herramientas solucionan uno de los problemas más habituales durante el desarrollo: hacer accesible desde Internet una aplicación que solamente está disponible en localhost.
La diferencia está principalmente en la forma de hacerlo.
| Característica | tunnl.gg | ngrok |
|---|---|---|
| Exponer localhost | Sí | Sí |
| HTTPS automático | Sí | Sí |
| WebSockets | Sí | Sí |
| Crear cuenta | No | Sí |
| Instalar un agente | No | Sí |
| Token de autenticación | No | Sí |
| URL estable | Sí, usando SSH Key | Disponible con cuenta |
| Elegir subdominio | No | Disponible según plan |
| TCP sin procesar | No | Sí |
| Inspector avanzado de peticiones | Limitado | Sí |
| Open source para autoalojar | Sí | No |
La propia documentación de tunnl.gg reconoce que ngrok continúa siendo más apropiado cuando se necesitan características avanzadas como túneles TCP, dominios personalizados, políticas de tráfico o herramientas integradas de inspección.
Para pruebas rápidas de APIs, demos y webhooks, tunnl.gg apuesta principalmente por la simplicidad.
¿Por qué resulta interesante?
La parte más llamativa de tunnl.gg es que prácticamente elimina el proceso de configuración.
Si utilizas Windows 10 o superior, Linux o macOS, normalmente ya tienes disponible un cliente SSH.
Por tanto, en muchos casos simplemente necesitas abrir PowerShell o una terminal y ejecutar:
ssh -t -R 80:localhost:8000 proxy.tunnl.ggNo necesitas descargar otro programa.
No necesitas registrar un usuario.
No necesitas copiar ningún token.
El parámetro:
-Rindica a SSH que realizará un remote port forwarding.
En este ejemplo:
80:localhost:8000el tráfico recibido por tunnl.gg será enviado hacia el puerto 8000 de nuestra computadora.
El parámetro:
-ttambién es importante porque tunnl.gg lo utiliza para mostrar en la terminal la URL pública y un código QR.
Ejemplo práctico con Laravel
Supongamos que estamos desarrollando una API con Laravel.
Primero iniciamos nuestro servidor:
php artisan serveLaravel normalmente quedará disponible en:
http://127.0.0.1:8000Abrimos una segunda terminal y ejecutamos:
ssh -t -R 80:localhost:8000 proxy.tunnl.ggDespués de aceptar la conexión SSH la primera vez, tunnl.gg mostrará nuestra dirección pública.
Podríamos recibir algo parecido a:
https://happy-tiger-a1b2c3d4.tunnl.ggAhora una ruta local como:
http://localhost:8000/api/userspodría consultarse mediante:
https://happy-tiger-a1b2c3d4.tunnl.gg/api/usersEsto resulta especialmente útil si estamos desarrollando una aplicación móvil o necesitamos que un servicio externo pueda comunicarse temporalmente con nuestra API.
Usarlo con Node.js o Next.js
Si nuestra aplicación está trabajando en el puerto 3000:
http://localhost:3000utilizamos:
ssh -t -R 80:localhost:3000 proxy.tunnl.ggLa documentación oficial utiliza precisamente el puerto 3000 como uno de sus ejemplos habituales.
Usarlo con React o Vite
Vite normalmente utiliza:
http://localhost:5173Por tanto:
ssh -t -R 80:localhost:5173 proxy.tunnl.ggExiste aquí un detalle importante.
Herramientas como Vite, Next.js, webpack, Rails o Django pueden bloquear dominios externos desconocidos como medida de seguridad.
Si aparece un mensaje similar a:
Blocked requesto:
Invalid Host headerserá necesario permitir el dominio .tunnl.gg dentro de la configuración del servidor de desarrollo. La documentación oficial dispone de instrucciones específicas para estos frameworks.
Usarlo con Flask
Si Flask está ejecutándose en el puerto 5000:
ssh -t -R 80:localhost:5000 proxy.tunnl.ggY listo.
Nuestra aplicación Python podrá recibir peticiones desde Internet mientras el túnel continúe abierto.
Una función especialmente interesante: URL permanente
Aquí tunnl.gg tiene una característica bastante útil.
Cuando utilizamos:
ssh -t -R 80:localhost:3000 proxy.tunnl.ggnormalmente recibiremos una URL diferente cada vez que iniciemos una nueva conexión.
Pero podemos pedir una dirección estable utilizando:
ssh -t -R 80:localhost:3000 stable@proxy.tunnl.ggEn este caso la dirección se genera utilizando nuestra clave SSH.
Mientras utilicemos la misma clave, tunnl.gg devolverá la misma URL cada vez que nos conectemos. No necesitamos registrar previamente la clave ni crear una cuenta.
Esto resulta extremadamente útil para trabajar con webhooks.
Crear una llave SSH si todavía no tienes una
Si stable@ devuelve:
Permission denied (publickey)podemos crear una llave SSH utilizando:
ssh-keygen -t ed25519Después volvemos a ejecutar:
ssh -t -R 80:localhost:8000 stable@proxy.tunnl.ggLa documentación señala que cualquier llave SSH puede utilizarse para obtener una dirección estable.
Ideal para probar webhooks
Probablemente este sea uno de los escenarios donde herramientas como tunnl.gg o ngrok resultan más útiles.
Servicios como GitHub, Stripe, plataformas OAuth o APIs de mensajería necesitan enviar peticiones hacia una URL pública.
El problema aparece cuando nuestro backend todavía se encuentra en desarrollo.
Por ejemplo:
http://localhost:8000/webhookUn servicio externo no puede conectarse directamente a esa dirección.
Podemos crear un túnel:
ssh -t -R 80:localhost:8000 stable@proxy.tunnl.ggy configurar el webhook utilizando una URL como:
https://brave-fox-7c41e09b.tunnl.gg/webhookGracias a la modalidad estable, podremos continuar utilizando esa misma dirección cada vez que reiniciemos nuestro entorno de desarrollo.
Para quienes desarrollan integraciones con APIs, bots, sistemas de pagos o automatizaciones, esto puede ahorrar bastante tiempo.
También genera un código QR
Al iniciar el túnel, tunnl.gg puede mostrar un código QR directamente en la terminal.
Esto resulta práctico para probar una aplicación web desde un teléfono real.
Por ejemplo, podemos ejecutar:
ssh -t -R 80:localhost:5173 proxy.tunnl.ggescanear el QR desde nuestro móvil y comprobar inmediatamente cómo funciona nuestra interfaz fuera del entorno local.
Esta función forma parte actualmente del proyecto oficial.
¿Tiene límites?
Sí.
Aunque tunnl.gg es gratuito, no significa que esté diseñado para funcionar como hosting permanente.
Actualmente el servicio establece, entre otros límites, hasta 3 túneles simultáneos por dirección IP, hasta 50 peticiones por segundo por túnel, un máximo de 24 horas por conexión y cierre por inactividad después de aproximadamente dos horas sin peticiones ni WebSockets abiertos.
Por tanto, su función principal es el desarrollo, pruebas y demostraciones temporales.
No debería entenderse como sustituto de un servidor de producción.
¿Por qué aparece una pantalla de advertencia?
Al abrir por primera vez una dirección tunnl.gg desde un navegador puede aparecer una pantalla informativa antes de mostrar la aplicación.
No es un error.
tunnl.gg incorpora esta pantalla como mecanismo contra campañas de phishing.
Según su documentación, aparece una vez al día por sitio para visitantes desde navegador.
Las peticiones realizadas mediante webhooks, SDK, curl y otros clientes que no sean navegadores pasan directamente hacia la aplicación.
Para clientes automatizados también existe el encabezado:
tunnl-skip-browser-warningPor ejemplo:
curl -H "tunnl-skip-browser-warning: 1" https://tu-url.tunnl.gg¿Es seguro?
Hay un punto importante que conviene entender antes de utilizar cualquier herramienta de tunneling.
Las conexiones públicas de tunnl.gg utilizan HTTPS y posteriormente el tráfico viaja hacia tu equipo dentro del túnel SSH.
Sin embargo, el TLS termina en los servidores de tunnl.gg. Por esa razón el propio servicio aclara que no debe considerarse cifrado de extremo a extremo.
Su política de privacidad señala también que no almacena permanentemente el contenido del tráfico, aunque puede conservar temporalmente registros técnicos como IP, fecha, ancho de banda y otros datos necesarios para seguridad y prevención de abuso; estos registros normalmente se eliminan en aproximadamente siete días.
Como regla general, nunca deberíamos publicar mediante un túnel paneles administrativos, bases de datos, credenciales o servicios sensibles sin las medidas de autenticación adecuadas.
Un detalle interesante: es open source
Otra característica que diferencia a tunnl.gg es que el servidor está disponible públicamente en GitHub bajo licencia MIT.
Eso significa que desarrolladores con conocimientos de infraestructura pueden estudiar cómo funciona e incluso desplegar su propia instancia.
El repositorio incluye configuraciones para Docker, compilación desde código fuente, certificados TLS y despliegue del servidor.
Esto convierte a tunnl.gg no solamente en una herramienta útil, sino también en un proyecto interesante para quienes quieran estudiar cómo funciona un servicio de reverse tunneling.
¿Deberías dejar de usar ngrok?
No necesariamente.
ngrok continúa ofreciendo características considerablemente más avanzadas para determinados proyectos.
Pero tunnl.gg tiene una propuesta muy atractiva para desarrolladores que simplemente necesitan:
probar rápidamente un webhook, compartir una demo, abrir una aplicación desde el teléfono o publicar temporalmente una API local.
En esos escenarios, poder ejecutar simplemente:
ssh -t -R 80:localhost:8000 proxy.tunnl.ggy obtener inmediatamente una dirección HTTPS pública resulta extremadamente cómodo.
Conclusión
tunnl.gg demuestra que exponer temporalmente un servidor local a Internet no tiene por qué implicar instalar herramientas adicionales o configurar cuentas.
Con SSH, una terminal y un solo comando podemos tener nuestra aplicación disponible mediante HTTPS en cuestión de segundos.
No sustituye todas las posibilidades de ngrok y tampoco está pensado como infraestructura de producción, pero para pruebas, demos, desarrollo de APIs y especialmente webhooks puede convertirse en una herramienta muy práctica dentro del kit de cualquier desarrollador.
Y probablemente esa sea su mayor ventaja:
localhost → URL pública HTTPS con un solo comando.
Más información y documentación oficial:
tunnl.gg