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.

Puedes redirigir el trafico de cualquier servicio y protocolo que requieras, por ejemplo:
ngrok tcp 22 (Para SSH)
ngrok http 80 (Para web)
ngrok http 3000 (Para node)
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:
Descarga el archivo .exe a tu carpeta de proyecto (si es node.js o si esta en xampp con localhost)

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:

.\ngrok.exe config add-authtoken XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Ejecutamos el comando (siendo 80 el puerto http de localhost por defecto, 3000 si es node por ejemplo):
ngrok http 80
Este creará un dominio de forwarding, accede a él a través de navegador.

Ya podemos entrar a nuestro servidor localhost a través de dominio público.

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 :
Descarga e instala chocolatey desde su página oficial mediante el comando que te aparece
Instala ngrok con el comando especificado en la documentación de ngrok (
choco install ngrok
)Revisa la versión con
ngrok -v
Añade el token de autenticación tal y como se ha visto en pasos anteriores.
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í:
ngrok http 8080 --url https://example.ngrok.app
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:
apt install ngrok
o
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
| sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
&& echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
| sudo tee /etc/apt/sources.list.d/ngrok.list \
&& sudo apt update \
&& sudo apt install ngrok
o
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
#despues de hacer el wget hacemos esto para descomprimir
tar -xvzf ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin/
A continuación, como siempre, añade el token:
ngrok config add-authtoken XXXXXXXXXXXX
Y ahora para que lo contemple como servicio deberemos crear una unidad service en /etc/systemd/system/ngrok.service
:
sudo nano /etc/systemd/system/ngrok.service
[Unit]
Description=Ngrok Tunnel Service
After=network.target
[Service]
ExecStart=/usr/local/bin/ngrok http 80
Restart=always
User=root
WorkingDirectory=/usr/local/bin
[Install]
WantedBy=multi-user.target
Reiniciamos el daemon sin parar servicios:
systemctl daemon-reload
Reiniciamos el servicio de ngrok:
systemctl restart ngrok.servive
Podemos revisar ahora si está activo o no:
systemctl status ngrok.servive
Activarlo por defecto con el inicio del servidor:
systemctl enable ngrok.servive
En la web de Ngrok (en endpoints) podemos encontrar ahora la URL efímera que nos ha creado:
http://7.tcp.eu.ngrok.io:19089
Para Docker
Con docker simplemente hay que descargar la imagen de ngrok con el siguiente comando:
docker pull ngrok/ngrok
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:
docker run --net=host -it -e NGROK_AUTHTOKEN=XXXXXXXXXX ngrok/ngrok:latest http 80
Una vez ejecutado, podrás revisar los endpoints en su página correspondiente.
Última actualización