Expose est un outil dont le but est d’exposer des services locaux vers l’extérieur. Il a été développé en PHP par Beyond Code.
Contrairement à ngrok, Expose est une solution OpenSource qui peut être auto-hébergée.
On a donc davantage de contrôle côté serveur et sur le trafic.
Dans quel cas pouvons-nous utiliser Expose ?
Il peut par exemple servir de :
- Debug lors du développement d’une application mobile
En effet, lorsque l’on développe une application mobile on souhaite parfois tester un build de notre application sur les stores.
Notre application n’ayant pas accès à notre API locale, on doit pouvoir ouvrir un accès pour pouvoir tester nos features, notamment sur un build de staging si nous n’avons pas encore d’environnement adéquat en early.
- Faciliter la mise en place de webhook
Qui n’a pas déjà implémenté un service bancaire ?
On peut parfois avoir besoin de créer un webhook accessible depuis le service bancaire pour avoir les codes retours suite à un test de paiement et mettre à jour nos commandes de test.Et pour un système d’authentification avec Facebook ou Google ?Il est possible de paramètrer une URL de Callback en y mettant l’URL Expose afin de tester l’authentification.
Et pour un système d’authentification avec Facebook ou Google ?
Il est possible de paramètrer une URL de Callback en y mettant l’URL Expose afin de tester l’authentification.

- Ou tout simplement exposer un projet en cours de développement.
Pour le montrer à un client lors d’une démo, et afin qu’il puisse tester un POC très rapidement.
Installation
Expose s’installe assez facilement, il suffit d’un serveur qui supporte PHP 7.2 avec composer
En s’assurant que le dossier bon de composer est bien dans le PATH (vous pouvez ajouter cette ligne à la fin du .bashrc selon l’endroit où se trouve vos fichiers composer).
On peut aussi l’installer directement via l’exécutable :
Utilisation
En utilisant le serveur d’expose
Tout d’abord créer un compte sur https://expose.dev.
On obtient ensuite un token que l’on doit activer :
Vous pouvez ensuite démarrer un tunnel sur le port souhaité avec la commande :
Expose génère une URL publique accessible via l’extérieur.


Vous avez également accès à un dashboard pour visualiser les requêtes HTTP http://127.0.0.1:4040

Pour le moment l’utilisation reste la même que pour ngrok, tirons tous les avantages d’expose en auto-hébergeant la solution.
Mise en place de l’auto-hébergement
Prérequis :
- PHP 8.1
- extension sqlite3
- installer expose comme précédemment (celui-ci installe le client et le serveur)
Pour lancer le serveur expose, rien de plus simple, cela se fait en une seule commande :
Dans notre exemple sur mon serveur j’exécute la commande :
L’argument port permet de spécifier un port différent du port 8080 (défaut).
N’oubliez pas d’ouvrir le port en TCP sur le serveur.
J’ai maintenant un tunnel Expose opérationnel !
Il faut maintenant configurer notre client expose sur notre machine pour qu’il passe par notre serveur.
Pour cela il faut modifier le fichier ~/.expose/config.php et y ajouter notre serveur


Vous pouvez également modifier d’autres paramètres dans ce fichier, n’hésitez pas à vous référer à la documentation officielle https://expose.dev/docs/server/starting-the-server
Relancez la commande sur votre machine :
expose share http://monsite.test
Voilà, vous exposez à présent votre site local à travers votre serveur !
Avantages par rapport à ngrok
Lorsque l’on utilise ngrok, on peut rapidement être embêté par le fait de ne pas utiliser d’url custom, ce qui force dans certains cas spécifique à redéployer une version de notre application pour utiliser la bonne url, d’autant plus qu’il y a un temps limité à l’utilisation d’une url avec ngrok.
En auto-hébergeant sa propre instance d’Expose on élimine toutes les limites qui nous auraient été imposées :
- Nombre de requêtes (20000 par mois)
- Limite de requêtes par minute (4000 par minutes)
- Limitation du maximum de données (1Go sur la version gratuite de ngrok)
Pricingngrok propose trois versions :
- personal : 8$/dev/mois, ce qui revient à 96$ annuel
- pro : 20$/dev/mois, ce qui revient à 240$ annuel
- enterprise : 39$/dev/mois, ce qui revient à 468$ annuel
Tandis qu’Expose propose (prix annuels) :
- pro : 59$/dev/an
- business : 499$/dev/an
- Enterprise : sur mesure
Il faudra donc bien choisir son offre par rapport à nos besoins, si nos besoins restent basiques, la version personal d’ngrok fera très bien l’affaire.ConclusionExpose constitue une bonne alternative Open Source à ngrok, ce qui permet de ne pas dépendre d’un seul acteur et de confronter deux solutions par rapport à nos besoins.Il permet un contrôle total grâce à son auto-hébergement, sans les limitations imposées par ngrok (requêtes, débit de données, etc.). Les coûts annuels d’Expose sont également plus compétitifs, bien que la version basique de ngrok puisse suffire pour des besoins limités.Aller plus loin avec ExposeNous avons vu comment mettre une instance auto-hébergeable d’Expose, celui-ci permet également d’aller plus loin avec sa gestion d’utilisateurs pour l’authentification, la gestion de domaines, de sites partagés ainsi qu’une interface pour faciliter l’administration.