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

Connexion…

Démos actives

—

Charge CPU

—

Mémoire

—

Uptime

—

Le chemin d’une requête

  1. Navigateur

    Toi

  2. nginx

    HTTPS · reverse proxy

  3. Next.js

    Front + API proxy, secret côté serveur

  4. docker-backend

    Express · quotas · TTL 15 min

  5. 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.