ngrok

``

  • Backend

    Descripción

  • Herramienta para crear túneles seguros que exponen servidores locales a Internet mediante una URL pública.
  • Ideal para desarrollo, pruebas y demos de aplicaciones web que necesitan ser accesibles externamente sin desplegar en un servidor público.
  • Permite exponer HTTP, HTTPS y TCP de manera segura.

Casos de uso

  • Desarrollo de APIs locales y pruebas con webhooks externos.
  • Acceso remoto a servicios internos sin necesidad de abrir puertos en el router.
  • Exposición de aplicaciones IoT o contenedores a Internet.
  • Demos rápidas de aplicaciones sin necesidad de configurar DNS o certificados.

Características principales

  • URLs públicas temporalmente disponibles para cada sesión.
  • Soporta subdominios personalizados y URLs estáticas (en planes pagos).
  • Integración con APIs y SDKs para automatizar la creación de túneles.
  • Dashboard web para monitoreo y estadísticas de tráfico.
  • Seguridad mediante autenticación básica y tokens para túneles privados.
  • Compatibilidad multiplataforma: Windows, Linux, macOS, Docker.

Instalación

# Instalación vía Homebrew en macOS/Linux
brew install ngrok/ngrok/ngrok

# Instalación en Windows con PowerShell
winget install ngrok

`

Uso básico

# Exponer un servidor local en el puerto 8080 con HTTP
ngrok http 8080

# Exponer un servidor TCP en el puerto 22 (SSH)
ngrok tcp 22

# Autenticación con token de ngrok
ngrok config add-authtoken <TU_TOKEN>

Integraciones y avanzadas

  • API Gateway: Integración para enrutar tráfico a servicios locales mediante ngrok.
  • IoT Device Gateway: Permite que dispositivos IoT expongan servicios locales de manera segura.
  • Secure Tunnels for Containers: Facilita la exposición de contenedores Docker sin necesidad de puertos públicos.
  • Uso con frameworks como Laravel, Node.js, Django para pruebas externas rápidas.

Túneles persistentes y subdominios personalizados

  • En planes pagos, ngrok permite asignar subdominios estáticos y URLs persistentes que no cambian entre sesiones.
  • Útil para webhooks en producción, demos permanentes o integración con servicios externos que requieren URLs fijas.

Configuración avanzada con ngrok.yml

  • Archivo de configuración en YAML que permite definir:
    • Múltiples túneles con diferentes puertos y protocolos.
    • Perfiles de usuario para separar entornos (desarrollo, staging, producción).
    • Opciones de seguridad como auth, IP restrictions y region.
tunnels:
  web:
    proto: http
    addr: 8080
    subdomain: myapp
    auth: "user:password"
  ssh:
    proto: tcp
    addr: 22

`

Inspección de tráfico y depuración

  • Dashboard web para revisar logs, solicitudes y respuestas en tiempo real.
  • Permite replay de requests para pruebas rápidas de APIs.
  • Integración con la API de ngrok para automatizar análisis y monitorización.

Seguridad avanzada

  • Soporte HTTPS para todos los túneles.
  • Autenticación básica configurable por túnel.
  • Restricción de IPs y dominios permitidos.
  • Tokens de acceso para manejar túneles privados.

Automatización y CI/CD

  • Scripts para iniciar túneles automáticamente durante despliegues.
  • Integración con pipelines para pruebas externas de APIs o microservicios.
  • Posibilidad de levantar túneles temporales en contenedores o máquinas virtuales sin intervención manual.

Comparativa con alternativas

  • LocalTunnel: simple, sin registro, pero menos estable y sin subdominios persistentes.
  • Serveo: requiere SSH, sin cliente instalado, ideal para casos rápidos.
  • Ventaja de ngrok: estabilidad, control avanzado, subdominios persistentes, dashboard y monitoreo.

Limitaciones y consideraciones

  • Conexión temporal en plan gratuito, URLs cambian cada sesión.
  • Ancho de banda limitado en free tier.
  • Dependencia de un servicio externo; para producción crítica se recomienda configuración redundante o VPN.
  • Posible latencia adicional por el túnel.

ngrok — Casos de uso con ejemplos de código

Exponer un servidor HTTP local

  • Escenario: Tienes un servidor web local corriendo en el puerto 3000 y quieres que sea accesible públicamente.
# Inicia un túnel HTTP en el puerto 3000
ngrok http 3000

`

  • Esto genera una URL pública como https://abc123.ngrok.io que puedes compartir.
  • Útil para pruebas de APIs, demos o integración con webhooks.

Exponer un servidor TCP (SSH)

  • Escenario: Necesitas acceso remoto a un servidor local vía SSH.
# Inicia un túnel TCP para SSH en el puerto 22
ngrok tcp 22
  • ngrok te proporcionará una dirección como tcp://0.tcp.ngrok.io:12345.
  • Puedes conectarte desde cualquier máquina:
ssh usuario@0.tcp.ngrok.io -p 12345

Configuración de túneles múltiples con ngrok.yml

  • Escenario: Quieres exponer un servidor web y un SSH al mismo tiempo, con autenticación básica en el HTTP.
authtoken: <TU_TOKEN>
tunnels:
  web:
    proto: http
    addr: 3000
    subdomain: miapp
    auth: "admin:secret"
  ssh:
    proto: tcp
    addr: 22
  • Comando para iniciar todos los túneles:
ngrok start --all

Uso con webhooks

  • Escenario: Integrar un servicio externo (GitHub, Stripe, Twilio) con un webhook en tu servidor local.
ngrok http 5000
  • GitHub webhook URL:
https://abc123.ngrok.io/webhook
  • Tu servidor local recibirá las solicitudes externas directamente para pruebas y desarrollo.

Uso en contenedores Docker

  • Escenario: Tienes un contenedor corriendo una aplicación y quieres exponerla sin abrir puertos.
docker run -d -p 8080:8080 miapp
ngrok http 8080
  • Genera una URL pública para que clientes externos puedan acceder al contenedor.

Inspección y replay de requests

  • Inicia ngrok y accede al dashboard web en http://127.0.0.1:4040.
  • Revisa solicitudes entrantes y su payload.
  • Replay para pruebas automáticas:
curl -X POST http://127.0.0.1:4040/api/requests/<ID>/replay

Automatización con scripts

  • Escenario: Levantar túneles automáticamente al iniciar tu entorno de desarrollo.
#!/bin/bash
# start-tunnel.sh
ngrok start --all &
echo "Túneles iniciados..."
  • Puedes integrar este script en tu pipeline de CI/CD para exponer APIs temporales durante pruebas automáticas.

Seguridad avanzada

  • Autenticación en túnel HTTP:
ngrok http 3000 --auth="user:password"
  • Restricción de región:
ngrok http 3000 --region=eu
  • Solo accesible desde la región europea, útil para cumplir políticas de latencia o privacidad.

ngrok 2025 — Nota Actualizada con Recursos y Contexto

Cambios recientes (2025)

  • En 2025 ngrok sigue evolucionando con actualizaciones frecuentes del agente, nuevas APIs, mejoras de seguridad y soporte ampliado para configuraciones avanzadas.
  • Se han agregado funciones como Secrets para Traffic Policy, mejoras en TLS/TCP y un HTTP API interno /api/endpoints que facilita programar y manejar túneles desde scripts o aplicaciones.

Plataforma actual de ngrok

  • ngrok ya no es solo un “túnel de desarrollo”: es una plataforma completa de Gateway para APIs, IoT, Kubernetes, y servicios empresariales con seguridad avanzada.
  • Ofrece control de tráfico, autenticación de identidad, balanceo global y observabilidad integrada para aplicaciones modernas.

Seguridad y cumplimiento de estándares

  • La seguridad es un pilar de ngrok: cifrado TLS por defecto, políticas de acceso, autenticación y capacidades auditables para revisiones de seguridad corporativa.
  • Hay documentación y whitepapers disponibles para revisiones de compliance (SOC2, etc.).

Modelos de precios 2025

  • El plan gratuito sigue siendo útil para desarrollo, pero con limitaciones en túneles simultáneos, ancho de banda y configuraciones avanzadas.
  • Las capas pagas añaden:
    • endpoints adicionales
    • políticas de tráfico
    • identidad/autenticación
    • observabilidad
    • dominios personalizados y SSO/RBAC en empresa.

Integraciones, SDKs y extensiones

  • ngrok se integra con múltiples lenguajes y frameworks mediante SDKs oficiales (Python, Go, Rust, JavaScript, etc.).
  • Por ejemplo, pyngrok permite usar ngrok desde Python con métodos programáticos para crear y controlar túneles.

Buenas prácticas de uso en 2025

  • HTTPS por defecto y autenticación en túneles públicos para evitar exposición no autorizada.
  • Cerrar túneles cuando no se usen para no generar tráfico no deseado.
  • Revisar logs y usar replay de solicitudes para depurar integraciones (especialmente con webhooks).
  • Mantener la herramienta actualizada con el agente v3.x dado que recibe mejoras continuas.

Limitaciones actuales (2025)

  • El plan gratuito no ofrece subdominios estáticos ni branding de dominios sin pago.
  • Algunas políticas de tráfico avanzadas o manipulación de headers requieren plan pago.
  • La sesión gratuita puede desconectarse tras cierto periodo si no está configurada con cuenta.

Recursos oficiales (2025)

Consideraciones sobre alternativas

  • Existen alternativas como InstaTunnel que promueven menos restricciones en la capa gratuita y ofrecen duración de sesiones más largas o túneles múltiples sin coste adicional.
  • Para setups más controlados y autónomos, opciones self-hosted como zrok o túneles basados en software libre pueden ser exploradas.