tva
← Insights

Docker multi-tenant sans dépendances communes accidentelles

Un article de suivi actuel et orienté production, qui traduit la documentation des éditeurs en contrôles opérationnels, décisions de migration et critères de mise en service vérifiables.

Ce qui a changé en 2026

Nous revenons sur ce sujet parce que les limites opérationnelles ont évolué. Les principes durables restent pertinents, mais les versions actuelles rendent certains anciens raccourcis incomplets ou risqués. Ce suivi part de la documentation des éditeurs disponible au 14 juillet 2026, distingue les faits des choix locaux et traite chaque modification de configuration comme une intervention contrôlée en production.

Sources primaires actuelles

Comment exploiter cette mise à jour

Nous commençons par les sources primaires, consignons les versions réellement déployées et définissons le résultat observable avant toute modification. La plus petite intervention réversible est testée dans un environnement représentatif. Une commande réussie ne constitue pas un critère de validation : l’état du service, l’intégrité des données, la latence, les frontières de sécurité et le délai de retour arrière le sont. La séquence de diagnostic encore valable de l’ancien article est conservée ci-dessous comme socle opérationnel ; chaque exemple dépendant d’une version doit être vérifié dans la documentation actuelle.

Socle opérationnel

Comment créer un environnement de développement multi-tenant basé sur des modèles, avec 16 services conteneurisés, fonctionnant hors ligne tout en restant accessible en ligne grâce au routage par sous-domaines

La gestion des environnements de développement pour plusieurs clients implique souvent de choisir entre des configurations manuelles complexes ou des solutions cloud coûteuses. Les déploiements manuels sont chronophages et sujets aux erreurs. Les plateformes cloud sont pratiques mais créent une dépendance vis-à-vis du fournisseur et des coûts récurrents qui augmentent avec l'utilisation.

Aujourd'hui, nous allons parcourir la construction d'une stack de développement multi-tenant évolutive qui vous offre les deux : une isolation complète entre les environnements clients avec des capacités de déploiement automatisé, tout en conservant un contrôle total sur votre infrastructure. Cette approche s'inscrit dans notre philosophie de solutions auto-hébergées — similaire à ce que nous avons montré avec l'auto-hébergement de n8n pour l'automatisation des workflows et le déploiement de Windmill avec Docker pour un contrôle opérationnel complet.

Les outils que nous utilisons

Commençons par comprendre le rôle de chaque composant dans notre architecture complète à 16 conteneurs :

Docker : votre fondation de conteneurisation

Docker fournit l'isolation et la cohérence dont nous avons besoin pour les environnements multi-tenant. Chaque client dispose de ses propres conteneurs avec des configurations identiques, garantissant que ce qui fonctionne en développement fonctionnera en production. Pensez-y comme si vous aviez plusieurs serveurs complètement séparés fonctionnant sur le même matériel.

L'avantage principal ? Une isolation parfaite entre les clients. Les données, configurations et personnalisations d'un client n'interfèrent jamais avec celles d'un autre. C'est crucial lorsqu'on gère plusieurs clients professionnels ayant des exigences et des besoins de sécurité différents.

Traefik : proxy inverse intelligent et répartiteur de charge

Traefik agit comme un directeur de trafic intelligent, routant automatiquement les requêtes vers le bon environnement client en fonction des noms de domaine. Au lieu de configurer manuellement des règles Apache ou Nginx complexes, Traefik lit les labels de vos conteneurs Docker et configure le routage automatiquement.

Pensez à Traefik comme un réceptionniste intelligent qui sait exactement vers quel bureau (conteneur) chaque visiteur (requête) doit être dirigé, sans que vous ayez à donner des indications à chaque fois. Dans notre configuration, Traefik gère la terminaison SSL, la découverte automatique de services et fournit des tableaux de bord de surveillance détaillés.

Cloudflare Tunnels : accès externe sécurisé

Les Cloudflare Tunnels fournissent un accès sécurisé à votre stack de développement locale sans configurations complexes de pare-feu ou de VPN. Chaque domaine client dispose de son propre tunnel, assurant une séparation complète au niveau réseau tout en maintenant une sécurité de niveau entreprise.

L'avantage est que vos environnements de développement restent locaux et sécurisés, mais les clients peuvent accéder à leurs services spécifiques depuis n'importe où avec une authentification appropriée — similaire à la façon dont nous avons configuré l'accès externe sécurisé dans notre guide d'hébergement n8n.

La stack de services complète : tout ce dont vos clients ont besoin

Notre stack multi-tenant comprend sept catégories de services de base réparties sur 16 conteneurs par client :

Automatisation des workflows et logique métier :

  • n8n : plateforme complète d'automatisation des workflows pour l'automatisation des processus métier
  • Authentik : gestion de l'authentification unique (SSO) et des identités de niveau entreprise (3 conteneurs : serveur, worker, cache Redis)

Base de données et services backend :

  • PostgreSQL : backend de base de données robuste supportant tous les services avec pooling de connexions optimisé
  • Stack Supabase : backend-as-a-service complet avec 5 conteneurs spécialisés (Studio, Auth, API REST, Realtime, Kong Gateway)
  • NocoDB : interface de base de données no-code pour la gestion des données clients

IA et intelligence :

  • Ollama : modèles de langage IA locaux avec accélération GPU pour l'automatisation intelligente
  • Qdrant (optionnel) : base de données vectorielle pour les workflows IA avancés et la recherche par similarité

Infrastructure et surveillance :

  • Cloudflare Tunnel : connectivité externe sécurisée
  • Traefik : proxy inverse avec SSL automatique et tableau de bord de surveillance

Comment tout fonctionne ensemble

Voici le flux complet lorsqu'un client accède à son environnement :

  • Le client navigue vers son domaine personnalisé (par ex., workflows.client-a.com)
  • Le Cloudflare Tunnel route la requête vers votre instance Traefik locale
  • Traefik lit le domaine, applique les middlewares (authentification, SSL, limitation de débit) et transmet au bon conteneur client
  • Authentik gère l'authentification SSO sur tous les services si configuré
  • Le client obtient son environnement complètement isolé avec ses données et configurations
  • Tous les autres clients restent complètement non affectés et inaccessibles

Tout reste organisé et séparé, chaque client disposant de sa propre structure de sous-domaines comme auth.client-a.com, database.client-a.com, backend.client-a.com, etc.

Mise en place : les étapes pratiques

Préparer les fondations

Tout d'abord, vous aurez besoin de Docker Desktop installé et d'une configuration de gestion de domaines. Nous recommandons la mise en place d'une structure DNS avec caractères génériques (wildcard) pour faciliter l'intégration des clients :

Créer le système de modèles

La magie opère grâce à une approche basée sur des modèles. Au lieu de configurer manuellement chaque client, nous créons des modèles qui peuvent être déployés instantanément avec des configurations spécifiques au client.

Créez la structure de répertoires complète :

Configuration complète du modèle multi-services

Créez un modèle complet de docker-compose.yml avec les 16 services :

Modèle d'environnement complet

Créez le fichier .env.template pour les variables spécifiques à chaque client :

Scripts d'initialisation de la base de données

Créez l'initialisation complète de la base de données dans init/01-create-multiple-databases.sql :

Configuration de la passerelle Kong pour Supabase

Créez le fichier supabase/kong.yml pour le routage de la passerelle API :

Script de déploiement automatisé

Le script de déploiement complet qui crée de nouveaux environnements clients en quelques minutes :

Utiliser votre stack multi-tenant

Déployer de nouveaux clients

La création d'un nouvel environnement client devient triviale avec notre script complet :

Chaque déploiement crée :

  • Un réseau Docker complètement isolé avec 16 conteneurs
  • Des volumes de données séparés pour le stockage persistant
  • Des conteneurs de services uniques avec surveillance de l'état de santé
  • Une configuration individuelle de tunnel Cloudflare
  • Un routage de domaine personnalisé avec certificats SSL
  • Une infrastructure SSO de niveau entreprise prête à l'activation

Gestion de plusieurs environnements

Surveillez tous les environnements clients depuis un emplacement central :

Analyse approfondie de l'architecture des conteneurs

Notre architecture complète de 16 conteneurs par client comprend :

Couche infrastructure (4 conteneurs) :

  • cloudflare-tunnel : connectivité externe sécurisée
  • traefik : proxy inverse avec SSL automatique et découverte de services
  • postgres : base de données centrale avec pooling de connexions
  • whoami : surveillance de l'état de santé et vérification du routage

Couche application (7 conteneurs) :

  • n8n : automatisation des workflows avec backend PostgreSQL
  • nocodb : interface de base de données no-code
  • supabase-studio : tableau de bord de développement backend
  • supabase-meta : service d'introspection de la base de données
  • supabase-auth : authentification et gestion des utilisateurs
  • supabase-rest : API REST auto-générée
  • supabase-realtime : abonnements et mises à jour en temps réel

Couche IA et passerelle (2 conteneurs) :

  • ollama : IA locale avec support d'accélération GPU
  • supabase-kong : passerelle API avec limitation de débit et CORS

Couche sécurité entreprise (3 conteneurs) :

  • authentik-server : serveur d'authentification SSO
  • authentik-worker : tâches en arrière-plan et notifications
  • authentik-redis : gestion des sessions et mise en cache

Dimensionnement des ressources par client

Ajustez les ressources en fonction des besoins et des modèles d'utilisation de chaque client :

Des avantages concrets pour votre entreprise

Isolation complète des clients avec fonctionnalités entreprise

Chaque client dispose de son propre univers complet incluant un SSO de niveau entreprise, des capacités d'IA et une infrastructure backend complète. Les données, configurations, personnalisations et politiques de sécurité restent complètement contenues. Un problème chez un client n'affecte jamais les autres, similaire à l'isolation que nous obtenons avec nos déploiements n8n individuels.

Intégration rapide des clients avec ensemble complet de fonctionnalités

Les nouveaux clients peuvent être opérationnels avec une stack complète de développement et d'automatisation en moins de 10 minutes. Le script de déploiement gère automatiquement toute la configuration complexe, la mise en place du DNS, l'initialisation des services et la configuration de la sécurité — bien plus complet que les approches traditionnelles.

Des coûts prévisibles de niveau entreprise

Après la configuration initiale, il n'y a aucun coût d'hébergement par client au-delà de votre infrastructure de base. Contrairement aux solutions SaaS qui facturent par utilisateur, par workflow ou par appel API, vous payez une fois pour le matériel et exécutez un nombre illimité d'environnements clients avec toutes les fonctionnalités entreprise.

Cohérence professionnelle de la marque

Chaque client dispose de ses propres domaines personnalisés avec des sous-domaines professionnels (workflows.client.com, auth.client.com, etc.) et peut personnaliser entièrement son environnement. Pas de mentions « powered by » ou d'interfaces partagées qui diluent l'identité de la marque.

L'intégration n8n : automatisation des workflows d'entreprise à grande échelle

C'est ici que les choses deviennent vraiment puissantes. Tout comme nous vous avons montré comment auto-héberger n8n pour l'automatisation des workflows, cette configuration multi-tenant donne à chaque client sa propre instance n8n complète intégrée à une stack entreprise complète.

Chaque client peut construire des workflows sophistiqués qui :

  • Se connectent à leurs propres bases de données (NocoDB, Supabase PostgreSQL)
  • Utilisent leurs propres modèles d'IA (Ollama) pour l'automatisation intelligente
  • S'authentifient via le SSO d'entreprise (Authentik)
  • S'intègrent avec leurs outils métier et API spécifiques
  • Traitent leurs données avec une isolation et une sécurité complètes

Cette combinaison crée une puissante plateforme de livraison client où vous pouvez :

  • Déployer rapidement des capacités d'automatisation standardisées
  • Personnaliser les workflows par client sans affecter les autres
  • Développer votre offre de services sans augmentation linéaire des coûts
  • Maintenir une souveraineté totale des données pour chaque client
  • Offrir une sécurité et une conformité de niveau entreprise

Cette approche s'appuie sur les mêmes principes que ceux utilisés dans notre guide de configuration Docker de Windmill, mais l'étend à une architecture multi-tenant complète.

Options de configuration avancées

Mise en place du SSO d'entreprise avec Authentik

Activez l'authentification unique sur tous les services client en configurant l'authentification par transfert Authentik :

Puis mettez à jour les labels de vos services pour utiliser le middleware :

Ajout d'une base de données vectorielle pour l'IA avancée

Améliorez les capacités d'IA avec la base de données vectorielle Qdrant :

Mise en place d'une architecture IA hybride

Pour des performances optimales, envisagez une approche hybride combinant IA conteneurisée et native :

Cela offre une amélioration des performances de 5 à 6 fois grâce à l'accès direct au GPU, tout en maintenant l'isolation des conteneurs pour les autres services.

Stack de surveillance et d'observabilité

Ajoutez une surveillance complète par client :

Problèmes courants et solutions

Erreurs « Service Unavailable » ou HTTP 502

Cela signifie généralement que Traefik ne peut pas atteindre le conteneur cible. Vérifiez que :

Problèmes de résolution DNS

La configuration DNS wildcard est cruciale pour le routage par sous-domaines :

Épuisement des ressources sur plusieurs clients

Surveillez l'utilisation des ressources sur tous les environnements clients :

Épuisement du pool de connexions à la base de données

Les limites de connexions PostgreSQL peuvent être atteintes avec de nombreux clients. Configurez par déploiement :

Problèmes de configuration du SSO Authentik

Problèmes courants de configuration SSO et solutions :

Problèmes de connexion du tunnel Cloudflare

Déboguer les problèmes de connectivité du tunnel :

Considérations d'infrastructure

Dimensionner votre infrastructure pour plusieurs clients

Pour une configuration typique gérant 10 à 15 clients simultanément avec des stacks complètes de 16 conteneurs :

Exigences minimales :

  • CPU : 16-24 cœurs (2 cœurs par environnement client actif)
  • RAM : 64-128 Go (4-8 Go par client selon l'utilisation de l'IA)
  • Stockage : SSD NVMe avec 2 To+ (les bases de données, modèles d'IA et journaux augmentent avec le temps)
  • Réseau : connexion Gigabit pour un accès client réactif

Recommandé pour la production :

  • Serveur : Hetzner CCX62 ou similaire (48 vCPU, 192 Go de RAM)
  • Stockage : 4 To NVMe avec système de sauvegarde automatisé
  • Réseau : connexions redondantes multiples
  • Surveillance : stack d'observabilité complète avec alertes

Stratégie de sauvegarde pour les environnements multi-clients

Mettez en place des sauvegardes automatisées par client :

Renforcement de la sécurité pour la production

Mettez en œuvre les meilleures pratiques de sécurité complètes :

Appliquez le middleware de sécurité à tous les services clients :

Analyse des coûts : les chiffres qui comptent

Coûts SaaS traditionnels (10 clients entreprise avec ensemble complet de fonctionnalités)

Coûts mensuels par client :

  • n8n Pro : 50 $/mois par client = 500 $/mois
  • Supabase Pro : 25 $/mois par client = 250 $/mois
  • Plateforme NoCode (Airtable) : 20 $/mois par client = 200 $/mois
  • SSO entreprise (Auth0) : 23 $/mois par client = 230 $/mois
  • Coûts API IA (OpenAI) : 50 $/mois par client = 500 $/mois
  • Total : 1 500 $/mois = 18 000 $/an

Coûts de la stack entreprise multi-tenant auto-hébergée

Coûts d'infrastructure annuels :

  • Serveur dédié (Hetzner CCX62) : 350 $/mois = 4 200 $/an
  • Coûts des domaines (10 clients) : 120 $/an
  • Cloudflare Pro (optionnel) : 240 $/an
  • Total : 4 560 $/an

Économies annuelles : 13 440 $ (réduction des coûts de 75 %)

De plus, vous bénéficiez de :

  • Souveraineté et confidentialité totales des données
  • Personnalisation et marque blanche illimitées
  • Aucune dépendance vis-à-vis d'un fournisseur ni limitation de débit API
  • Sécurité et conformité de niveau entreprise
  • Possibilité de proposer des services de revente
  • Contrôle total sur les mises à jour et les fonctionnalités

De la configuration à la décision opérationnelle

La vraie question n’est pas de savoir si une plateforme peut être configurée. L’équipe doit pouvoir attribuer les responsabilités, détecter les dérives, restaurer le service sans improviser et démontrer l’effet recherché. Nous associons donc chaque changement à un responsable, une référence initiale, une procédure de retour arrière et une fenêtre de contrôle. Une correction ponctuelle devient ainsi une capacité opérationnelle durable. Ce même dossier offre au prochain responsable un point de départ fiable et transforme l’optimisation ultérieure en décision mesurée plutôt qu’en nouvelle série d’hypothèses.

Insights associés

Articles connexes