Contexte
Cinq sites d’éditeur en langue roumaine dans trois niches différentes (actualités générales, sport, business) tournant côte à côte depuis un seul host Docker de 32 Go. Le brief était de publier quotidiennement, en roumain idiomatique, avec un budget opérationnel suffisamment réduit pour que le projet ne nécessite pas une seule embauche éditoriale après le lancement.
La contrainte qui a tout façonné : personne dans l’équipe n’écrit le roumain comme langue première. La pipeline devait donc produire un texte assez bon pour se lire comme celui d’un local, pas « traduit par IA », pas « assez bon pour parcourir rapidement ».
Brief
- Cinq sites d’actualités, niches et voix éditoriales distinctes.
- Roumain uniquement, mais la pipeline vit en anglais (opérateur).
- Un seul host Docker, sur une seule station de travail, aucune facture cloud par site.
- 100% sans surveillance après le lancement, aucune relecture humaine programmée des articles générés.
- Thème personnalisé par site, conçu en Figma, construit comme thème WordPress block.
- 12 mois de « 100% uptime » comme barre de succès explicite.
Architecture
Une seule stack Docker Compose sur un Gaming PC sous WSL2 héberge le tout, un MariaDB partagé, un Ollama partagé, un N8N partagé, plus un conteneur WordPress + un conteneur pipeline par site.
Le backend de génération d’articles est en couches : Claude Sonnet (via un proxy local qui enveloppe l’abonnement Claude Code CLI, donc le coût par article est fonctionnellement nul) est le primaire ; si le proxy expire ou retourne une réponse malformée, la pipeline bascule sur qwen3:14b sur Ollama. Le fallback tourne sur le GPU de la même station, donc il n’y a jamais de mode d’échec « les deux systèmes en panne » sauf si le host lui-même est hors ligne.
Une petite couche Cloudflare se trouve devant les cinq sites : terminaison TLS, mise en cache edge pour les assets statiques, et DNS.
Résultats
- 1 200+ articles publiés sur les cinq sites dans les premiers mois après le lancement.
- 100% uptime depuis le lancement, les seules interruptions ont été des reboots planifiés du host, jamais de la pipeline.
- Quatre thèmes personnalisés livrés depuis Figma, avec le drift typographique entre eux capté en v2 (voir « Ce que je ferais autrement »).
- Zéro effectif éditorial, le fondateur passe moins de 30 minutes par semaine sur la console opérateur.
- Coût par article plafonné par l’abonnement Claude Max que Fares paie déjà, pas de dépense API par article.
Captures
[FILL: remplacer par des captures anonymisées de la console opérateur + un côte-à-côte de deux des quatre thèmes personnalisés. Éviter les captures des sites publics eux-mêmes, les identités de marque sont sensibles.]
La suite
Deux éléments sur la liste de la prochaine itération :
- Stockage objet partagé, remplaçant les répertoires d’uploads WordPress par conteneur. L’architecture mono-host plafonne la scalabilité horizontale confortable au nombre de sites actuel ; un store partagé compatible S3 (probablement Cloudflare R2) lèverait ce plafond.
- Styles éditoriaux par langue. Chacun des quatre thèmes partage actuellement un seul prompt de tone-of-voice ; promouvoir le prompt à un guide de style par niche permettrait aux sites sport et business de diverger stylistiquement sans édition manuelle.