
Partager:
Aaron était défenseur des développeurs chez Nexmo. Ingénieur logiciel chevronné et artiste numérique en herbe, Aaron est souvent amené à créer des choses avec du code ou de l'électronique, parfois les deux. On peut généralement savoir qu'il travaille sur quelque chose de nouveau grâce à l'odeur de composants brûlés qui flotte dans l'air.
Connecter votre serveur de développement local à l'API Vonage à l'aide d'un tunnel Ngrok
Temps de lecture : 7 minutes
Souvent, lorsqu'il s'agit développer des démos pour des conférencesrédiger des articles de blog et des "modes d'emploi ou créer un guide pour notre portail de développement nous devons exposer notre environnement de développement local à l'internet public afin qu'il soit accessible par les API de Vonage.
ngrok diagra
Pourquoi utiliser ngrok ?
Notre équipe chargée des relations avec les développeurs travaille à distance et est souvent en déplacement, de sorte que nous travaillons parfois à domicile, parfois dans nos bureaux de Londres ou dans un café. Pour recevoir des webhooks entrants, nous devrions mettre en place un serveur local, transférer les ports corrects, nous assurer que le DNS a notre nouvelle IP publique et qu'elle est propagée, configurer SSL, etc. Cela n'est pas seulement peu pratique, mais probablement impossible dans certaines situations. Mais avec ngrok nous pouvons exposer notre serveur local, sur son propre sous-domaine avec le support https en une seule commande.
ngrok in terminal
Notez toutefois que si vous êtes sur un réseau d'entreprise, vous ne devez pas créer de tunnels à distance sans en référer d'abord à votre administrateur de réseau. Consultez la section ci-dessous sur les problèmes de sécurité pour plus de détails.
L'autre option consiste à déployer notre code sur un serveur distant. Avec Heroku et Digital Ocean, cela devient de plus en plus facile, mais il y a toujours une certaine configuration et normalement un certain coût. Mais si tout ce que je veux faire est de servir un NCCO (Call Control Object) JSON, il est peu probable qu'un autre service soit plus facile à utiliser ;
Se lancer dans l'aventure ngrok
Le site ngrok propose des téléchargements pour la plupart des systèmes d'exploitation.Il contient également des instructions pour l'installation de ngrok, qui consiste essentiellement à le décompresser. J'ai tendance à déplacer le binaire binaire ngrok dans /usr/local/bin (ou dans un autre répertoire de mon $PATH) sur Mac/Linux afin de pouvoir l'invoquer facilement à partir de la ligne de commande sans avoir à spécifier le chemin complet du binaire. How-to Geek a un excellent article sur l'édition de votre PATH système sous Windows si vous souhaitez faire la même chose sur une machine Windows.
Une fois installé, l'exécution de ngrok est aussi simple que l'exécution de la commande suivante, où 8000 est le numéro de port sur lequel tourne votre serveur local
Ceci lancera ngrok dans votre terminal.
Une fois lancé, vous devriez voir les URL publiques que ngrok a créées pour vous, ainsi que d'autres informations telles que la région dans laquelle votre tunnel fonctionne, le nombre de connexions actuelles et un journal des requêtes HTTP reçues.
Comme ngrok fonctionne dans votre terminal, vous devrez probablement avoir une fenêtre de terminal ouverte pour votre serveur local et une fenêtre de terminal séparée pour ngrok. Vous pouvez également utiliser GNU Screen ou tmux. La documentation de ces deux logiciels est assez dense. Vous pouvez trouver de bonnes informations sur les bases de screen en cherchant "quickstart GNU screen <operating system>"
Répétition des demandes
L'une des fonctionnalités les plus utiles de ngrok est la possibilité de rejouer les requêtes.
ngrok web console
Lorsque vous démarrez ngrok, l'une des URLs listées est celle de l'interface web. Cette interface s'exécute localement sur votre machine, normalement sur le port 4040, et fournit toute une série d'informations sur votre tunnel en cours d'exécution, y compris des métriques sur les requêtes.
L'onglet Inspecter contient également une liste de toutes les demandes reçues. Cette liste comprend le type de requête (GET, POST, HEAD, etc.), l'URL demandée et le code de réponse HTTP envoyé par votre serveur local (200, 404, etc.). En cliquant sur une requête, vous obtiendrez davantage d'informations, notamment les en-têtes et même la requête/réponse brute. Ces informations peuvent s'avérer précieuses lors du débogage des interactions avec l'API.
Après avoir sélectionné une demande dans la liste, vous pouvez rejouer cette demande. Celle-ci sera renvoyée à votre serveur local ! Par exemple, si vous développez une application qui utilise l'API SMS API de Vonage de Vonage pour les SMS entrants, au lieu d'envoyer un autre SMS pour déclencher le webhook, vous pouvez simplement rejouer la dernière demande de SMS entrant.
Caractéristiques supplémentaires
ngrok a beaucoup de fonctionnalités supplémentaires, y compris une API, donc je vous recommande fortement de de lire leur documentation pour vous familiariser avec tout ce qui est disponible, car je ne vais passer en revue que quelques-unes des fonctionnalités les plus courantes que nous utilisons pendant le développement.
HTTPS uniquement - Par défaut, ngrok ouvrira des points d'accès pour le trafic http et https.
-bind-tls=truengrok n'écoutera que les requêtes httpsChanger de région - Par défaut, ngrok utilisera la région us - United States (Ohio), mais vous pouvez choisir entre plusieurs régions différentes qui peuvent être plus proches
Ajouter HTTP Basic Auth - Cette fonctionnalité nécessite un Account ngrok, vous devez donc vous inscrire et autoriser votre client ngrok. autoriser votre client ngrok d'abord
Fonctionnalités payantes
Tout ce dont nous avons parlé jusqu'à présent était disponible sans compte ngrok ou avec un compte gratuit. Les fonctionnalités suivantes ne sont disponibles qu'avec un abonnement payant à ngrokmais nous pensons qu'elles sont très utiles, c'est pourquoi je les ai incluses.
Domaines personnalisés et réservés. Par défaut, ngrok assignera un nom hexadécimal aléatoire au tunnel pour vous. Ce nom changera à chaque fois que vous redémarrerez ngrok (en fermant accidentellement votre terminal par exemple). Devoir mettre à jour toutes les URLs de vos webhooks à chaque fois que vous redémarrez votre terminal est une gêne. En utilisant un domaine personnalisé ou réservé, votre URL restera la même à chaque fois que vous lancerez ngrok. Vous pouvez aller plus loin en utilisant votre propre domaine personnalisé.
Liste blanche d'IP (configuré via le tableau de bord ngrok). La création d'un tunnel dans votre réseau local n'est pas sans poser des problèmes de sécurité. Vous pouvez contribuer à les atténuer en établissant une liste blanche des adresses IP qui devraient être en mesure d'accéder à votre serveur local. Vous trouverez une liste des plages d'adresses IP de Vonage que vous devriez mettre sur liste blanche dans notre base de connaissances.
Préoccupations en matière de sécurité
Si vous voulez gâcher la journée d'un administrateur de réseau, dites-lui que vous voulez exécuter un proxy inverse ouvert dans son réseau local. ngrok est une application fantastique que nous utilisons quotidiennement chez Vonage, mais vous devez être conscient des implications en termes de sécurité d'un tunnel à travers le pare-feu de votre réseau. Consultez votre administrateur de réseau avant d'utiliser ngrok sur votre réseau professionnel.
Si vous travaillez à la maison, dans un café ou dans un autre endroit où il n'y a pas d'administrateur réseau à qui parler, ou si vous êtes l'administrateur réseau, nous vous recommandons d'utiliser ngrok avec l'option HTTP Basic Auth, liste blanche d'adresses IP et HTTPS forcé.
Vous pouvez trouver des informations sur l'utilisation de l'authentification de base HTTP avec Vonageainsi que nos adresses IP publiques dans notre base de connaissances.
Alternatives
Partager:
Aaron était défenseur des développeurs chez Nexmo. Ingénieur logiciel chevronné et artiste numérique en herbe, Aaron est souvent amené à créer des choses avec du code ou de l'électronique, parfois les deux. On peut généralement savoir qu'il travaille sur quelque chose de nouveau grâce à l'odeur de composants brûlés qui flotte dans l'air.