Soixante conteneurs sur un seul serveur
Une seule machine bare-metal fait tourner des dizaines à des centaines de conteneurs Hoody. La déduplication KSM et BTRFS rend le coût marginal quasi nul.
Snapshot votre baseline développeur une fois. Ensuite, chaque nouvelle recrue reçoit une URL. Elle clique dessus depuis le laptop qu'elle a, et la voilà dans un conteneur frais qui est un clone de la baseline — codebase, dépendances, env vars, base de données seedée, VSCode dans le navigateur. Coder en cinq minutes. Pas configurer.
Bienvenue ! votre environnement de dev est prêt : https://devbox-jordan.hoody.dev. Postgres seedée, repo cloné, juste cd ~/work && bun dev.
Les snapshots Hoody capturent un conteneur entier — fichiers sur disque, comptes utilisateurs, units systemd, base de données seedée. La copie de conteneur clone ce snapshot dans un conteneur frais par développeur. Le lien dans l'email est la route vers ce conteneur frais.
POST .../snapshotsPrenez un snapshot nommé de votre conteneur de référence — aliasez-le dev-baseline. Refaites quand la baseline change.
POST .../copy [ source_snapshot ]Un appel API clone le snapshot dans un conteneur frais sous le projet du nouveau développeur.
alex-laptop.containers.hoody.comLe conteneur ship avec une URL publique d'office. Collez-la dans Slack. Elle clique. Elle est dedans.
ttyd · webview · sshhoody_kit allume automatiquement les endpoints terminal, file browser et VSCode-in-browser. Rien à installer sur le laptop.
# 1. Snapshot la baseline (une fois, refais quand vous upgradez Node)
curl -X POST "$API/api/v1/containers/$BASE/snapshots" \
-H "Authorization: Bearer $TOKEN" \
-d '{ "alias": "dev-baseline" }'
# 2. Copie le snapshot dans un conteneur frais pour la nouvelle recrue
curl -X POST "$API/api/v1/containers/$BASE/copy" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"target_project_id": "$ACME",
"name": "alex-laptop",
"source_snapshot": "dev-baseline",
"copy_firewall_rules": true,
"copy_network_rules": true
}'
# 3. La réponse porte l'URL du container. Email-la. C'est l'onboarding.
# => https://alex-laptop.containers.hoody.comDeux POST et une URL. Le snapshot baseline est le contrat ; la copie de conteneur est le constructeur ; le sous-domaine résultant est ce qui atterrit dans l'email de bienvenue. Pas de bastion à provisionner, pas de repo dotfiles à cloner, pas de licence Docker Desktop à négocier.
Le README qui shippait avec chaque repo portait aussi les modes d'échec. La moitié des lignes étaient des contournements pour le laptop que la recrue avait apporté. L'URL est plus courte parce que le laptop n'est plus dans l'image — l'environnement, lui, l'est.
TO: alex@acme.com · SUBJECT: BIENVENUE
Bienvenue dans l'équipe. Ouvrez ceci quand vous êtes prêt à coder :
— infra@acme
Le README de 47 étapes est maintenant une ligne : ouvrez cette URL.
Chacun de ceux-ci essaie d'amener un environnement fonctionnel sur le laptop d'un nouveau développeur. Chacun coûte du setup, une licence ou de la glue maison. Une URL snapshot ne coûte rien de tout ça — l'environnement tourne déjà.
Arrêtez de livrer des étapes README. Livrez une URL.