Étude de cas · Ingénierie
Greffon
Auto-hébergez vos apps souveraines en un clic.

Client
Samouraï Coop — notre propre produit
Équipe
Ingénierie
Périmètre
Plan de contrôle · Agent worker · Catalogue open source
Stack
Django · FastAPI · Docker · Nginx
01
La demande
Déployer une application, c’est choisir entre deux pôles — et la plupart des équipes vivent entre les deux.
Les plateformes managées ont démocratisé le déploiement au prix d’une facturation à l’usage, de conditions imposées et d’aucun droit de regard sur l’endroit où vivent les données. Kubernetes est le standard de l’industrie, à juste titre, et un engagement opérationnel de plusieurs années pour des équipes qui devraient livrer des fonctionnalités. C’est dans l’entre-deux que se trouvent les organisations soumises à des contraintes de résidence des données, de conformité ou de budget.
02
Le pourquoi
L’auto-hébergement n’est pas de la nostalgie. C’est une position sur la propriété du pipeline.
Samouraï Coop construit et promeut la culture open source, et le studio d’ingénierie traite la question « qui contrôle l’infrastructure ? » comme une contrainte de conception, non comme un détail. Une organisation devrait posséder son pipeline de déploiement comme elle possède son code. Greffon rend cette conviction opérable — la position que la coopérative applique à ses propres outils, proposée à tous les autres.
03
La contrainte
Il fallait que des équipes sans pôle plateforme puissent l’exploiter.
Pas de charts Helm, pas d’admission controllers, pas de DSL d’ingress — Docker Compose et un schéma de configuration déclaratif. N’importe quelle machine Linux fait un nœud : bare metal, VM ou instance cloud. La contrainte n’était pas « rendez-le puissant », mais « rendez-le exploitable par une petite équipe sur le matériel qu’elle possède déjà ».
04
Comment nous l’avons construit
Un plan de contrôle, autant de workers que nécessaire, aucun fournisseur dans la boucle.
Le backend du manager est un plan de contrôle Django : il tient le catalogue des applications déployables, authentifie les utilisateurs, orchestre le cycle de vie des instances et émet les certificats via une autorité de certification intégrée — aucun gestionnaire de secrets externe à amorcer d’abord. Chaque greffer est un agent FastAPI léger installé sur l’un de vos nœuds. Il s’enregistre par une poignée de main sécurisée, installe des certificats mTLS pour tous les échanges suivants, rend le modèle Docker Compose avec Jinja2, crée volumes et réseaux, place la pile derrière un proxy TLS Nginx par instance, et remonte l’état de santé de façon asynchrone. Les greffers sont du bétail, pas des animaux de compagnie : le manager détient la configuration, donc un nœud mort signifie que l’instance redémarre ailleurs.
- Source :greffon.io ↗
- Source :github.com/greffon/greffer ↗
05
Ce que nous avons livré
En bêta, en ligne, et ouvert précisément là où l’ouverture compte.
Greffon tourne en bêta sur greffon.io. Deux composants sont publics : greffer, l’agent worker, en Python et FastAPI sous AGPL-3.0 — un copyleft réseau, qui garde ouvertes les dérivées hébergées tout en laissant l’usage auto-hébergé libre ; et greffon-catalog, les modèles d’applications d’exemple, en TypeScript sous Apache-2.0 pour que les modèles se réutilisent partout sans friction. Ce partage de licences est délibéré : copyleft fort là où réside la valeur de la plateforme, permissif là où l’adoption doit être sans effort.



06
Ce qui s’est passé
Le cœur est stable. La plateforme se durcit à découvert.
Le premier jalon a clos la fiabilité du cœur — plan de contrôle Django, autorité de certification intégrée, API d’orchestration stable — et c’est là qu’en est la bêta. La migration du greffer vers FastAPI a débloqué le fonctionnement asynchrone et le support WebSocket ; viennent ensuite l’intégration de step-ca et Let’s Encrypt, le tunnel inverse pour les greffers derrière NAT, et une observabilité structurée. Chaque jalon comble de vraies lacunes opérationnelles avant que le suivant ne s’ouvre.
- Chiffres d’adoption et citation utilisateur nommée — en attente
