ngrok: Convierte tu localhost en un servidor web hecho y derecho


NOTA: Cabe destacar que ngrok es multiplataforma, pero para efectos de este tutorial usaré Fedora Linux como sistema operativo de referencia.

A veces estamos trabajando en un proyecto y queremos ir mostrando los avances incrementales a las personas poco a poco. La manera más fácil de hacer esto sin usar un servidor en producción es usando tu servidor de desarrollo y exponiendo tu localhost al mundo por medio de ngrok. Ngrok es una aplicación/servicio bastante genial programada en Go que nos permite hacer de nuestro servidor de desarrollo (corriendo en localhost) un servidor de showcase para nuestros amigos/familiares/clientes. Tú lanzas tu servidor de desarrollo, inicias ngrok y de pronto tienes una URL con la que todo mundo puede ver tu aplicación/proyecto directamente desde sus computadoras, corriendo en la tuya. Esto se logra por medio de un túnel SSH seguro que los de ngrok amablemente nos proveen tras registrarnos en su sitio y descargar su aplicación, en este post te enseñaré cómo configurarlo y hacerlo correr:

1) Registro y Descarga

Primero nos hemos de registrar en la página de ngrok, cabe destacar que se puede usar la cuenta de Github para dicho proceso, haciéndolo mucho más cómodo. Luego podremos descargar la aplicación desde su sitio de descargas, la guardaremos y extraeremos en alguna carpeta de nuestra preferencia y en terminal haremos cd hacia ella para empezar a trabajar.

2) El fichero de configuración

El fichero de configuración ngrok se crea con el siguiente comando (como usuario normal):

gedit ~/.ngrok

Dentro de él, escribiremos nuestras opciones de configuración en un formato que se parece mucho a YAML. La información de cómo estructurar tu fichero de configuración está por acá. Con ngrok puedes obtener una dirección para acceder a un servidor web local que corra en tu máquina, no importa si este server es HTTP/SSH o de cualquier otro servicio... En la página antes citada se explica de buena manera cómo se arma un archivo de configuración, pero para que no queden dudas, aquí hay uno de ejemplo que muestra cómo configurar 2 túneles HTTP diferentes para usar:



Aquí los puntos importantes son auth_token que equivale a tu token personalizado que ngrok genera por usuario, onetunel y othertunel son los nombres de los túneles, los subdominios es la url que se generará para acceder a ese tunel (como onetunel.ngrok.com para el primero en el caso del ejemplo) y las palabras port equivalen al puerto de tu computadora que quieres que esté accesible a través del túnel. Para una app Rails por ejemplo usaríamos el 3000, para ssh (en caso de configurar dicho tunel) usaríamos el 22 y así sucesivamente.

3) Iniciar ngrok

Una vez lista la configuración, podremos iniciar los túneles configurados uno a uno (estando dentro de la carpeta donde descargamos y extrajimos ngrok en consola) con un comando del tipo:

ngrok start nombredeltunel

donde nombredeltunel equivale al nombre que le pusiste al túnel correspondiente que quieras iniciar en el fichero de configuración (onetunel y othertunel respectivamente en el caso de nuestro ejemplo).

Finalizando...

Ngrok es un servicio gratuito y opensource al que incluso puedes ayudar a su desarrollo a través de Github. La disponibilidad de túneles introspectivos seguros hacia nuestro localhost es un muy buen apoyo para todos aquellos que queramos montar un servidor web de manera fácil, rápida y gratuita, además de que nos ofrecen una interfaz de monitoreo en http://localhost:4040 con cada túnel que iniciamos. No hay un límite explícito de tiempo/ancho de banda u otras cosas por el estilo al usar ngrok, pero definitivamente no es un reemplazo para un entorno de producción puesto que no está pensado para ello. Por último, ngrok como software entra dentro de la categoría "donationware" así que puedes donar cualquier cantidad de dinero que quieras (en cuanto puedas) para que lo sigan desarrollando y tú puedas acceder a características pagas que los usuarios normales no tienen. La verdad es un buen trato y te recomiendo que si usas ngrok, consideres donar un poco alguna vez.