
Compartir:
Aaron era un defensor de los desarrolladores en Nexmo. Ingeniero de software experimentado y aspirante a artista digital, Aaron suele crear cosas con código o electrónica; a veces ambas cosas. Cuando está trabajando en algo nuevo, suele percibir el olor a componentes quemados en el aire.
Conecta tu servidor de desarrollo local a la API de Vonage mediante un túnel Ngrok
Tiempo de lectura: 7 minutos
A menudo, cuando desarrollo de demos para conferenciasescribir entradas de blog y "how-tos o creamos una guía para nuestro portal de desarrolladores necesitamos exponer nuestro entorno de desarrollo local a la Internet pública para que sea accesible por las API de Vonage.
ngrok diagra
¿Por qué utilizamos ngrok?
Nuestro equipo de relaciones con los desarrolladores es remoto, y a menudo viaja, así que a veces trabajamos desde casa, o podemos estar en nuestra oficina de Londres o en una cafetería. Para recibir webhooks entrantes tendríamos que configurar un servidor local, redirigir los puertos correctos, asegurarnos de que el DNS tiene nuestra nueva IP pública y se propaga, configurar SSL, etcétera. Esto no sólo es poco práctico, sino probablemente imposible en determinadas situaciones. Pero con ngrok podemos exponer nuestro servidor local, en su propio subdominio con soporte https en un solo comando.
ngrok in terminal
Sin embargo, ten en cuenta que si estás en una red corporativa no deberías crear ningún túnel remoto sin antes consultarlo con tu administrador de red. Consulta la sección de seguridad para más información.
La otra opción es desplegar nuestro código en un servidor remoto. Con aplicaciones como Heroku y Digital Ocean, esto es cada vez más fácil, pero todavía hay que hacer algunas configuraciones y normalmente conlleva algún coste. Pero si todo lo que quiero hacer es servir un NCCO (Objeto de Control de Llamada) JSON es poco probable que cualquier otro servicio puede ser más fácil que;
Empezar a funcionar con ngrok
El sitio ngrok tiene descargas disponibles para la mayoría de los principales sistemas operativosTambién tiene instrucciones sobre cómo instalar ngrok, que básicamente consiste en descomprimirlo. Yo suelo mover el binario ngrok en /usr/local/bin (u otro directorio en mi $PATH) en Mac/Linux para poder invocarlo fácilmente desde la línea de comandos sin especificar la ruta completa al binario. How-to Geek tiene un gran artículo sobre la edición de su PATH del sistema en Windows si desea hacer algo similar en una máquina Windows.
Una vez instalado ejecutar ngrok es tan fácil como ejecutar lo siguiente, donde 8000 es el número de puerto en el que se ejecuta su servidor local
Esto iniciará ngrok en su terminal.
Una vez iniciado, deberías ver las URL públicas que ngrok ha creado para ti, así como otra información como la región en la que se está ejecutando tu túnel, cuántas conexiones actuales tiene y un registro de las peticiones HTTP recibidas.
Como ngrok se ejecuta en su terminal, probablemente necesitará tener una ventana de terminal abierta para su servidor local y una ventana de terminal separada para ngrok. También puede utilizar Pantalla GNU o tmux. La documentación de ambos es bastante densa. Puede encontrar buena información sobre los fundamentos de screen buscando "quickstart GNU screen <operating system>"
Repetición de solicitudes
Una de las funciones más útiles de ngrok es la posibilidad de reproducir solicitudes.
ngrok web console
Cuando inicias ngrok una de las URLs listadas es para la interfaz web. Esta interfaz web se ejecuta localmente en su máquina, normalmente en el puerto 4040 y proporciona toda una serie de información acerca de su túnel en ejecución, incluyendo métricas sobre las solicitudes.
En la pestaña inspeccionar también hay una lista de todas las peticiones recibidas. Esta lista incluye el tipo de solicitud (GET, POST, HEAD, etc.), qué URL se solicitó y qué código de respuesta HTTP envió su servidor local (200, 404, etc.). Al hacer clic en una solicitud se mostrará más información, incluidas las cabeceras e incluso la solicitud/respuesta sin procesar. Esto puede ser muy útil para depurar las interacciones de la API.
Tras seleccionar una solicitud de la lista, puede reproducir esa solicitud. Esto reenviará la petición a su servidor local. Por ejemplo, si estás desarrollando una aplicación que utiliza la SMS API de Vonage para SMS entrantes, en lugar de tener que enviar otro SMS para activar el webhook, puedes simplemente reproducir la última solicitud de SMS entrante.
Funciones adicionales
ngrok tiene un montón de características adicionales, incluyendo una API, por lo que recomiendo encarecidamente que leer su documentación para familiarizarse con todo lo que está disponible como yo sólo voy a correr a través de algunas de las características más comunes que utilizamos durante el desarrollo.
Sólo HTTPS - Por defecto ngrok abrirá endpoints tanto para tráfico http como https.
-bind-tls=truesólo escuchará peticiones httpsCambiar región - Por defecto, ngrok utilizará la región us - United States (Ohio), pero puede elegir entre varias regiones diferentes que pueden ser más cercanas
Añadir HTTP Basic Auth - Esta característica requiere una Account ngrok, por lo que tendrás que registrarte y autorizar su cliente ngrok primero
Funciones de pago
Todo lo que hemos comentado hasta ahora ha estado disponible sin una Account de ngrok o con una Account gratuita. Las siguientes características sólo están disponibles con una suscripción de pago ngrokpero creemos que son muy útiles, así que las he incluido.
Dominios personalizados y reservados. Por defecto ngrok asignará un nombre hexadecimal aleatorio al túnel por ti. Este nombre cambiará cada vez que reinicie ngrok (por ejemplo, al cerrar accidentalmente su terminal). Tener que actualizar todas tus URLs de webhooks cada vez que reinicias tu terminal es una molestia. Usando un dominio personalizado o reservado entonces su URL permanecerá igual cada vez que ejecute ngrok. Puedes llevar esto un paso más allá usando tu propio dominio personalizado.
Lista blanca de IP (configurada a través del panel ngrok). La creación de un túnel en su red local no está exenta de problemas de seguridad, puede ayudar a mitigarlos mediante la creación de una lista blanca sólo de aquellas direcciones IP que deben ser capaces de acceder a su servidor local. Puedes encontrar una lista de los rangos de IP de Vonage que debes poner en la lista blanca en nuestra base de conocimientos.
Cuestiones de seguridad
Si quieres arruinarle el día a un administrador de red, dile que quieres ejecutar un proxy inverso abierto en su red local. ngrok es una aplicación fantástica que usamos a diario aquí en Vonage, pero debes tener en cuenta las implicaciones de seguridad de hacer un túnel a través del firewall de tu red. Habla con tu administrador de red antes de usar ngrok en tu red de trabajo.
Si se ejecuta en casa, en una cafetería, en algún otro lugar sin un administrador de red con el que pueda hablar, o donde usted es el administrador de red, entonces le recomendamos que utilice ngrok con Autenticación básica HTTP, Lista blanca de IP y HTTPS forzado.
Puede encontrar información sobre cómo usar HTTP Basic Auth con Vonageasí como nuestras direcciones IP públicas en nuestra base de conocimientos.
Alternativas
Compartir:
Aaron era un defensor de los desarrolladores en Nexmo. Ingeniero de software experimentado y aspirante a artista digital, Aaron suele crear cosas con código o electrónica; a veces ambas cosas. Cuando está trabajando en algo nuevo, suele percibir el olor a componentes quemados en el aire.