Page cover

Comunicación punto a punto con ngrok

Ngrok es una herramienta que permite exponer un servidor local a Internet de manera segura y sencilla. Básicamente, crea una especie de "túnel" entre tu ordenador (o servidor local) y la red externa, asignándote una URL pública temporal.

Esta aplicación es sobretodo útil en entornos de testeo de aplicaciones o para acceder a servicios locales desde otros dispositivos o desde Internet, sin necesidad de configurar un dominio o modificar el router, algunas utilidades:

  • Desarrollo y pruebas remotas: Ideal para probar aplicaciones web y APIs con servicios externos o para mostrar avances a clientes sin desplegar la app en un servidor real.

  • Pruebas de Webhooks: Herramientas como Stripe, GitHub, Slack, entre otros, requieren URLs públicas para enviar notificaciones, y Ngrok facilita recibir esos datos en tu entorno de desarrollo.

  • Pruebas en diferentes dispositivos: Puedes acceder a tu aplicación desde otros dispositivos (como móviles) usando la URL pública que Ngrok genera.

ngrok funciona como servidor intermedio y seguro

Puedes redirigir el trafico de cualquier servicio y protocolo que requieras, por ejemplo:

Para ello sigue estos pasos: primero de todo, regístrate en ngrok y elige que entorno de trabajo utilizas (Linux, Windows, Docker...) y sigue las instrucciones de instalación. Dependiendo de la plataforma elegida sigue los pasos:

Para Windows

Podrías hacerlo de dos formas:

  • Mediante el archivo .exe

  • Mediante chocolatey 🍫

Empezando de forma más sencilla:

  1. Descarga el archivo .exe a tu carpeta de proyecto (si es node.js o si esta en xampp con localhost)

  1. Ejecutamos ngrok en el mismo terminal de VScode y como aparece en las instrucciones o mediante el propio archivo .exe (.\ngrok.exe) con el token de autorización que te ha dado el propio ngrok:

  1. Ejecutamos el comando (siendo 80 el puerto http de localhost por defecto, 3000 si es node por ejemplo):

  1. Este creará un dominio de forwarding, accede a él a través de navegador.

En la imagen se ve abajo el enlace temporal
  1. Ya podemos entrar a nuestro servidor localhost a través de dominio público.

El enlace es temporal y solo funcionará mientras el tunel de terminal siga activo.

Instalación con chocolatey

Con el uso de chocolatey 🍫, este es un packet manager para Windows que se encarga de la instalación y mantenimiento de aplicaciones del paquete de forma automática. Para realizarlo con este gestor :

  1. Descarga e instala chocolatey desde su página oficial mediante el comando que te aparece

  2. Instala ngrok con el comando especificado en la documentación de ngrok (choco install ngrok)

  3. Revisa la versión con ngrok -v

  4. Añade el token de autenticación tal y como se ha visto en pasos anteriores.

  5. Ahora vuelve a ejecutar el comando ngrok http 80

Para un dominio estático

Si lo que quieres es servir tu aplicación a través de un dominio estático comprado, el comando seria tal que así:

Para Linux

En Linux, ngrok se ejecutará como un servicio de systemd pero podemos instalarlo de varias formas dependiendo de la distro, en distros de Debian:

o

o

A continuación, como siempre, añade el token:

Y ahora para que lo contemple como servicio deberemos crear una unidad service en /etc/systemd/system/ngrok.service:

Reiniciamos el daemon sin parar servicios:

Reiniciamos el servicio de ngrok:

Podemos revisar ahora si está activo o no:

Activarlo por defecto con el inicio del servidor:

En la web de Ngrok (en endpoints) podemos encontrar ahora la URL efímera que nos ha creado:

Una aplicación interesante es crear un túnel SSH para poder conectarnos en remoto, para ello simplemente el comando es ngrok tcp 22 como ya hemos visto y desde la web, en endpoints copiaremos el dominio.

Con esto podemos conseguir redirigir (como en el comando) la visualización de proxmox (puerto 8006) y generar una conexión SSH a la vez.

Para Docker

Con docker simplemente hay que descargar la imagen de ngrok con el siguiente comando:

Para el dominio público aleatorio de ngrok, ejecutaremos el contenedor redirigiendo el tráfico del servicio que queremos. Por ejemplo, en http por el puerto 80 (http://localhost:8080). Recuerda añadir el token correspondiente de la web:

Una vez ejecutado, podrás revisar los endpoints en su página correspondiente.

Última actualización