Slim – HTTPS local et tunnels publics, tout en un

Monter un serveur HTTPS local pour bosser sur du Next.js ou du Vite, ça reste étrangement chiant. Faut mkcert pour générer les certifs, faut éditer le /etc/hosts à la mimine, installer caddy ou nginx en reverse proxy par-dessus… bref, vous voyez le diiiiliiiire ! Heureusement,
Kamran Ahmed
, le mec derrière roadmap.sh, vient de balancer
Slim
, un binaire Go standalone qui fait tout ça d’un coup.
Et tant qu’à faire, il rajoute aussi des tunnels publics à la ngrok au cas où vous voudriez présenter votre travail de dev payé au lance pierre, à un client pressé.
L’idée c’est donc de taper : slim start myapp --port 3000 et hop, votre app tourne OKLM en local sur le port 3000 et devient accessible via https://myapp.test avec un certif totalement valide reconnu à 100% par votre navigateur.
Ça permet d’esquiver tout config manuelle, puisque le binaire crée une autorité de certification locale (CA) dès le premier lancement, signe ensuite les certifs par domaine, et met à jour /etc/hosts tout seul, sans oublier de rediriger les ports 80/443 sur 10080/10443 sans même avoir besoin de root.

Et cette CA est ajoutée au trousseau du système, donc votre Chrome, Safari ou Firefox (ze best !!) la considèrent immédiatement comme légitime, sans alerte de sécurité. Du tout-en-un comme je l’aime quoi !
L’install se fait en une ligne (pensez à regarder comme d’hab le contenu du fichier .sh avant de le lancer, je ne le répéterais jamais assez) :
curl -sL https://slim.sh/install.sh | sh
Ensuite, pour les domaines, vous avez le choix entre .test (par défaut), .loc ou .dev. Notez que Kamran a explicitement banni le .local parce que ce TLD est réservé à mDNS et que ça fout en l’air toute la résolution DNS sur macOS et Linux. Ouf !
Le routing par chemin est aussi de la partie. Si vous bossez sur une app Next.js qui tourne sur le port 3000 et une API séparée sur le 8080, vous pouvez tout router en 1 seule commande :
slim start myapp --port 3000 --route /api=8080 --route /ws=9000
Tout tape alors sur https://myapp.test, et c’est slim qui fait le découpage. Et si vous avez plusieurs services à orchestrer, un fichier .slim.yaml à la racine du projet permet de tout déclarer d’un coup et de lancer le bouzin avec slim up.
WebSocket et HMR sont également gérés nativement, donc ça marche direct avec Vite et Next.
Maintenant, l’autre moitié de l’outil c’est slim share --port 3000 --subdomain demo qui vous délivre une URL publique sur slim.show pour exposer votre localhost sur le net. Vous pouvez ainsi ajouter un mot de passe, un TTL d’expiration, voir les logs en direct… bref, c’est du ngrok-like classique mais déjà inclus dans le même binaire ce qui éviter d’aller vous créer un compte séparé. Suffit de lancer un slim login pour activer le partage public.
Alors Slim c’est cool mais y’a pas de support Windows officiel pour l’instant… ce sera donc macOS ou Linux uniquement.
Et si vous êtes sur des stacks où vous avez déjà investi dans
Tunnelto
pour son dashboard d’introspection HTTP ou dans
Tunnl.gg
pour son approche zéro-client, slim n’apportera pas forcément de quoi migrer. Mais si vous galérez à empiler mkcert + caddy + ngrok à chaque nouveau projet, c’est pil poil ce qu’il vous faut.
Le code est sur
GitHub
et un grand merci à Philobois pour le partage !
Source : korben.info