Coffee bytes

Blog de desarrollo web con Python y Javascript

Eduardo Zepeda

Ngrok, tu localhost accesible desde internet

El jueves, 29 de abril de 2021

por Eduardo Zepeda

Tiempo de lectura: 3 minutos

Me topé con Ngrok intentando redirigir la notificación de un pago de Mercado Pago a mi localhost, para hacer pruebas. Funcionaba más o menos así. Mercado pago te otorgaba una dirección url a donde redigir al comprador para efectuara el pago. Una vez terminado el pago, Mercado Pago hacía una petición HTTP a cualquier dirección url que tú le indicaras y mandaba por POST los resultados del intento de pago. El problema es que mercado libre no manda notificaciones a localhost.

Ngrok te permite compartir tu localhost al exterior

Lo que hace Ngrok es servir como un túnel que redirige cualquier petición web, a través de sus propias urls, a tu localhost. Esto puede usarse para probar un webhook o recibir notificaciones, una tarea bastante común en pasarelas de pago, compartir tu localhost con colaboradores sin necesidad de un dominio propio, etc.

Instalación de Ngrok

Para instalar Ngrok entremos en su sitio web y creemos una cuenta o iniciemos sesión. Puedes usar Github o Gmail si no quieres registrarte.

Ahora descarguemos el programa, hay que tener cuidado de elegir el adecuado para nuestro sistema operativo, yo usaré el de GNU/Linux.

Tener el programa no es suficiente, necesitamos un Token para poder usarlo.

Ahora que ya tenemos el token y el programa descargado vamos a usar Ngrok y usemos el token para crear un archivo de configuración de manera automática. En algunos casos puedes saltar este paso.

unzip ngrok-stable-linux-amd64.zip
./ngrok authtoken tu_token_secreto

Uso básico de ngrok

Para ejecutar ngrok en GNU/Linux basta con correr el ejecutable, seguido de la opción http y un número de puerto. Yo usé 8080 pero puedes usar el que prefieras.

./ngrok http 8080

Si todo funcionó correctamente verás la siguiente información en tu terminal

¿Qué significa la pantalla de arriba? Significa que todas las peticiones que se hagan a http://fc2ca35fd170.ngrok.io; es decir, al subdominio fc2ca35fd170 del dominio de ngrok, se redirigirán a tu localhost, específicamente al puerto 8080. Y es todo, así de simple y fácil de usar.

Ejemplo con Django

Para este ejemplo redigirí una aplicación de Django en el puesto 8000, en lugar del puerto 8080.

Si no tienes idea de como usar Django tengo algunas recomendaciones de libros: Django la guia definitiva y Django by example.

Recuerda agregar el dominio, con su subdominio a la variable ALLOWED_HOSTS del archivo de configuración.

# tu_proyecto/settings.py
ALLOWED_HOSTS = ['8da947737113.ngrok.io']

Corramos el servidor de Django, por default correrá en el puerto 8000

python manage.py runserver

Si ahora ejecutamos ngrok, especificamos el puerto 8000 y accedemos a la dirección que nos indica, visualizaremos nuestra aplicación.

ngrok http 8000

Observa el dominio en el que se ejecuta nuestra aplicación de Django.

¡Logramos poner nuestra aplicación al acceso de cualquier persona que tenga la url que ngrok nos provee!

Presume lo que aprendiste en redes

Únete a mi comunidad de lectores

Recibe contenido como este por correo electrónico, una vez por semana, de manera totalmente gratuita.

* Campo obligatorio