Aller au contenu
gaetancottrez.dev

Rendre accessible facilement son localhost sur internet avec Ngrok

Published:le  à 19:00 | (6 min de lecture)
Rendre accessible facilement son localhost sur internet avec Ngrok

Table des matières

Ouvrir table des matières

Rendre accessible son localhost sur internet avec Ngrok

Lorsque l’on développe localement une application web par exemple, on utilise un serveur web local pour développer et faire fonctionner son application. En général, on ne se prend pas la tête on utilise tout simplement le localhost. Mais il peut arriver dans certains cas que l’on ait besoin d’exposer son localhost sur internet.

C’est le cas par exemple si votre application doit s’interfacer d’autres systèmes comme des API ou des webhooks ou pour tout simplement faire tester ou montrer son application à une tierce personne.

Il existe plusieurs solutions pour réaliser cela, mais je vais vous en présenter une que j’utilise particulièrement et cette solution c’est Ngrok.

Pourquoi utiliser Ngrok ?

Prenons un exemple simple.

Vous êtes en train de développer une API s’interconnectant avec l’application web de Devis/Facture Quickbooks. Et vous voulez utiliser les webhooks pour que lorsqu’un utilisateur dans Quickbooks crée une facture ou un devis, vous puissiez la récupérer automatiquement. Vous vous basez sur leur documentation, vous codez votre truc et vous souhaitez tester ce que vous avez fait.

Problème : les webhooks fonctionnent avec des URL endpoint, c’est-à-dire que le webhook Quickbooks a besoin de savoir l’URL de destination pour vous notifier les événements dans Quickbooks. Votre URL localhost ne fonctionnera pas et c’est là que Ngrok va entrer en jeu pour pallier à ce problème.

Ngrok va vous permettre de créer très simplement un tunnel sécurisé entre votre machine et Internet.

Alors on pourrait utiliser la phase de staging (environnement de simulation) intégrer dans un système de déploiement continu pour rendre public notre travail et tester notre webhook, mais cela serait long et fastidieux pour votre développement et vos tests. Surtout si pendant votre phase de développement, vous modifierez par moment un mot ou une ligne de code pour faire fonctionner votre code.

Ngrok dans la pratique

Tout d’abord, je vous conseille de vous créer un compte sur le site de Ngrok si vous comptez l’utiliser pour bénéficier des nombreuses fonctions gratuites que propose l’outil et qui seront dans la majorité des cas très suffisantes.

Une fois, votre compte créé vous tomberez sur votre page Get Started. Il vous explique comment télécharger et installer l’utilitaire ainsi que la commande à exécuter pour lier votre compte fraîchement crée avec votre utilitaire avec un AuthToken.

Vous retrouverez également une partie “Comment puis-je ?” vous montrant toutes les possibilités de Ngrok dans la version que vous utilisez (ici ce sera la gratuite).

Utilisation de Ngrok

La principale commande à retenir et que vous allez utiliser le plus souvent c’est celle-ci :

ngrok http <PORT_DE_VOTRE_APPLICATION>

Par exemple si votre application répond sur le port 80 sur votre machine vous devrez taper la commande :

ngrok http 80

Vous obtiendrez ensuite une fenêtre vous affichant ces informations :

Ngrok online ngrok après lancement

Plusieurs informations à l’écran :

2 petites choses à savoir :

En faisant un simple ngrok avec le nom de la commande voulue, on obtient les explications et les possibilités de l’outil.

Admettons que votre serveur web local est paramétré avec des v-host et que vous vouliez n’exposer qu’un seul de ces v-host. C’est tout à fait possible avec la même commande, mais au lieu de spécifier le numéro du port il suffit de mettre le v-host, ce qui vous donnera par exemple :

ngrok http monapp.local

Lorsque vous appellerez votre URL ngrok, celle-ci répondra et affichera ce que votre v-host local à l’habitude d’afficher.

Si votre application répond sur un autre port autre que le 80 (par exemple le port 5000) vous pouvez aussi le spécifier dans le nom de votre v-host ce qui vous donnera :

ngrok http monapp.local:5000

Interface web de Ngrok

Vous pouvez y accéder sur l’URL http://127.0.0.1:4040 une fois votre tunnel ouvert. Vous tomberez directement sur la page « inspect » et elle ressemblera à ça si vous avez déjà lancé des requêtes HTTP sur votre tunnel :

Ngrok page inspect Ngrok, page inspect HTTP

L’outil est assez intéressant, car il historise toutes les requêtes qui transitent sur votre tunnel. Vous pouvez ainsi analyser chacune de vos requêtes tant au niveau de la demande qu’au niveau de la réponse (le même genre d’informations que l’on peut retrouver dans la console développeur de Google Chrome par exemple).

Le petit plus : vous pouvez rejouer n’importe laquelle de vos requêtes passées et même modifier certaines d’entre elles en y rajouter des paramètres avant de les rejouer ce qui est vraiment pratique.

Reprenons notre exemple précédent, vous travaillez sur votre code pour récupérer ce que Quickbooks vous envoie par l’intermédiaire de ses webhooks. Vous allez certainement créer une facture ou un devis pour déclencher le webhook de Quickbooks.

Mais si vous êtes en phase de développement et de test, vous allez très certainement avoir besoin de déclencher plusieurs fois le webhook ce qui pourra devenir très vite pénible. Le fait de pouvoir rejouer vos requêtes passées (et donc potentiellement des requêtes reçues des webhooks) va non seulement vous simplifier la vie, mais surtout vous faire gagner du temps.

Pour terminer, vous avez également accès à la page « status » qui vous donnera des détails techniques sur votre tunnel et un lien vers la documentation de Ngrok.

Bien entendu, si vous regardez la documentation, vous pouvez faire énormément de choses avec Ngrok, mais avec ce que je vous ai montré vous aurez déjà de quoi faire avec vos développements.

Partager cet article :

Vous pourriez aussi aimer ❤️

Mon environnement de travail en tant que Web Developer

Mon environnement de travail en tant que Web Developer

Comment réaliser un vrai projet web : de A à Z

Comment réaliser un vrai projet web : de A à Z