Le service
Chaque participant dispose d'un serveur Linux à lui seul pendant toute la formation. Ce serveur exécute la stack de la formation et réunit tout ce qu'il faut pour les travaux pratiques : terminal, interfaces d'administration, requêtes et présentations.
Tout se fait avec un simple navigateur, depuis une page d'accueil personnelle, à l'adresse https://<identifiant>.<domaine>/.
Fonctionnalités
- Page d'accueil : une seule adresse à retenir ; chaque lien ouvre son propre onglet, et un nouveau clic y revient sans le recharger.
- Connexion unique : un identifiant et un mot de passe donnent accès à tous les services pendant 12 heures ; seul le terminal redemande le mot de passe.
- Terminal web : session SSH sur le serveur, dans le navigateur ; deux terminaux ouverts depuis l'accueil ; copier / coller avec le poste.
- Interfaces d'administration : une adresse HTTPS par service de la formation.
- Console de requêtes : requêtes HTTP des exercices prêtes à l'emploi, modifiables, réponse mise en forme et commande
curléquivalente. - Présentations : supports de la formation en ligne, avec un bouton de copie sur chaque bloc de code.
- Postman ou Bruno (facultatif) : collection des requêtes et environnement personnel à télécharger.
- Serveur administrable : droits
sudoet Docker ; la stack de la formation tourne en conteneurs, pilotée par des commandesmake.
Avantages
Comparaison avec un accès classique à des serveurs de formation, par SSH pour le terminal et par HTTPS pour les interfaces web.
| Accès classique : SSH + HTTPS | Cet environnement : tout en HTTPS | |
|---|---|---|
| Poste du participant | client SSH à installer et à configurer (clés, tunnels), souvent impossible sur un poste verrouillé | un navigateur récent, rien à installer |
| Réseau de l'entreprise | port 22 sortant à ouvrir, ainsi que les ports des services ou des tunnels SSH, souvent bloqués par les pare-feu et les proxys | port 443 seul, celui de tout site web ; passage par le proxy de l'entreprise |
| Connexion | compte SSH d'un côté, accès à chaque service de l'autre | une connexion unique pour tous les services |
| Exposition des services | ports des services ouverts sur Internet, ou tunnels à maintenir | services joignables seulement depuis le serveur ; tout passe par HTTPS, avec des certificats reconnus par les navigateurs |
| Mise en route | consignes différentes selon le système et les logiciels du poste ; démarrage retardé par les problèmes d'accès | une adresse, un identifiant, un mot de passe ; mêmes consignes pour tous |
| Travail au quotidien | terminal, navigateur et outil de requêtes dans des fenêtres séparées | présentations, terminal, consoles et requêtes dans le même navigateur |
Et aussi
- Isolation : un serveur par participant ; une erreur ou une panne ne touche que lui.
- Vraie machine : droits d'administration pour les réglages du système, comme sur un serveur de production.
- Remise à zéro : le formateur réinitialise ou réinstalle un serveur en quelques minutes.
Stack technique
| Couche | Composants |
|---|---|
| Hébergement | un serveur virtuel par participant, Ubuntu 24.04 LTS |
| Accès HTTPS | Caddy : reverse proxy, certificats Let's Encrypt renouvelés automatiquement, connexion unique par cookie de session |
| Terminal | Wetty (xterm.js, Socket.IO) : session SSH sur le serveur lui-même ; repli sur des requêtes HTTP classiques si les WebSockets sont bloqués |
| Conteneurs | Docker et Docker Compose : Caddy et Wetty d'un côté, stack de la formation de l'autre ; commandes make |
| Site | pages HTML statiques sans bibliothèque externe (accueil, connexion, console de requêtes) ; présentations Slidev |
| Sécurité | seul le port 443 est ouvert aux participants ; services de la formation liés à 127.0.0.1 ; pare-feu ufw, fail2ban, mises à jour de sécurité automatiques ; mot de passe propre à chaque participant |
| Déploiement | scripts Bash et make lancés depuis le poste du formateur : DNS (un sous-domaine par participant), installation, site, contrôles |