Sous le capot
Le site et les démos tournent sur un VPS que j’administre. Voici le chemin d’une requête quand tu lances une démo, et l’état du serveur en ce moment.
Le serveur en ce moment
Démos actives
—
Charge CPU
—
Mémoire
—
Uptime
—
Le chemin d’une requête
Navigateur
Toi
nginx
HTTPS · reverse proxy
Next.js
Front + API proxy, secret côté serveur
docker-backend
Express · quotas · TTL 15 min
Docker
Conteneur démo isolé, sans Internet
Une fois la démo prête, l’iframe passe directement par nginx (/demo/<port>/) jusqu’au conteneur, publié uniquement sur l’interface interne de Docker.
Isolation des démos
N’importe qui peut lancer un conteneur sur mon serveur : chaque démo est donc enfermée et jetable.
- 01
Pas d’accès Internet
Le réseau de chaque démo est créé sans NAT sortant : le conteneur reste joignable par son port publié, mais ne peut contacter aucun serveur extérieur.
- 02
Ressources plafonnées
256 Mo de RAM et 50 % d’un cœur par service (1,5 Go pour Airflow), 256 processus maximum et no-new-privileges contre l’escalade de droits.
- 03
Durée de vie limitée
15 minutes par session, prolongeables 3 fois. À l’expiration, docker compose down -v supprime conteneurs et volumes.
- 04
Quotas anti-abus
5 lancements par IP toutes les 10 minutes et 3 démos simultanées au maximum. Un second visiteur rejoint l’instance déjà lancée.
- 05
Backend jamais exposé
Le backend pilote Docker via son socket, l’équivalent d’un accès root : il ne publie aucun port, exige un secret partagé et seul le front le joint.
- 06
Ports internes uniquement
Les démos sont publiées sur l’interface interne de Docker, jamais sur 0.0.0.0 : seul nginx les atteint, sous /demo/<port>/.
La stack du site
- Front
- Next.js 16React 19Tailwind CSS
- API des démos
- Node.jsExpressdocker compose (CLI)
- Hébergement
- VPS LinuxnginxDocker Compose
- CI
- GitHub Actionslint + buildtests backendvalidation des compose
Envie de le voir tourner ?
Lance une démo, puis reviens ici : elle apparaîtra dans les démos actives.