Déployer Dify en Self-Hosted avec Docker et Docker Compose : Le Guide Complet
Déployer Dify en Self-Hosted avec Docker et Docker Compose : Le Guide Complet
Dify est rapidement devenu un acteur incontournable dans l'écosystème des applications basées sur les grands modèles de langage (LLM). En tant que plateforme open source, elle offre une flexibilité sans précédent pour le développement de chatbots, d'agents intelligents et de workflows complexes. Cependant, pour de nombreux développeurs et entreprises, le contrôle total des données et de l'infrastructure est une priorité. C'est là qu'intervient le déploiement en self-hosted, et la méthode la plus efficace et recommandée pour Dify est l'utilisation de Docker et Docker Compose.
Ce guide détaillé vous accompagnera à travers chaque étape, des prérequis techniques à la configuration finale, pour déployer votre propre instance de Dify, garantissant ainsi sécurité, personnalisation et souveraineté de vos données.
1. Dify : Qu'est-ce que c'est et pourquoi le self-hosting avec Docker ?
Dify est une plateforme de développement d'applications LLM qui se distingue par sa nature open source. Elle permet de construire et de déployer rapidement des solutions variées : chatbots conversationnels, agents autonomes, workflows complexes intégrant des modèles RAG (Retrieval Augmented Generation), gestion optimisée des prompts, et exposition d'APIs. Elle se positionne comme une alternative robuste et contrôlable à des services SaaS comme Voiceflow, Botpress ou même les GPTs personnalisés offerts par certains fournisseurs de modèles.
L'intérêt principal du self-hosting réside dans la maîtrise totale de votre environnement. Vos données restent sur vos serveurs, sous votre contrôle, ce qui est crucial pour la confidentialité, la conformité réglementaire et la sécurité. De plus, le self-hosting offre une liberté de personnalisation et d'intégration bien supérieure aux solutions cloud pré-packagées.
Docker et Docker Compose sont les outils de prédilection pour le déploiement de Dify, et ce n'est pas un hasard. Dify est une application complexe, composée de multiples services interdépendants : une API backend, une interface web frontend, une base de données (PostgreSQL), un système de cache (Redis), un magasin vectoriel (souvent pgvector), un serveur web (Nginx), et plusieurs workers pour les tâches asynchrones. Docker permet de conteneuriser chacun de ces services, assurant leur isolation et leur portabilité. Docker Compose, quant à lui, orchestre l'ensemble de ces conteneurs, définissant leurs interactions, leurs réseaux et leurs volumes de stockage dans un seul fichier de configuration (docker-compose.yml). Cette approche simplifie grandement le déploiement, la maintenance et la mise à l'échelle d'une application multi-services comme Dify, la rendant la méthode officiellement recommandée par la documentation et plébiscitée par la communauté.
2. Prérequis techniques pour un déploiement self-hosted
Avant de plonger dans le déploiement, assurez-vous que votre environnement respecte les prérequis techniques suivants.
Matériel et Système d'Exploitation
Pour un déploiement de test, de développement, ou pour une petite production, voici les recommandations minimales usuelles :
- CPU : Un minimum de 2 vCPU est recommandé. Pour des usages plus intensifs ou multi-applications, 4 vCPU ou plus seront préférables.
- RAM : 4 Go de mémoire vive est le strict minimum pour que Dify fonctionne. Pour une utilisation sérieuse, avec plusieurs applications ou un trafic conséquent, 8 Go ou plus sont fortement recommandés pour assurer la fluidité et la réactivité de la plateforme.
- OS : Un système d'exploitation Linux 64 bits récent est idéal. Des distributions comme Ubuntu (22.04/24.04), Debian, ou CentOS sont de bons choix. Vous pouvez également déployer Dify sur une machine locale (Linux, macOS) ou via WSL (Windows Subsystem for Linux) si Docker est correctement installé et configuré.
Pour des déploiements plus avancés, notamment ceux intégrant une base de données PostgreSQL/pgvector externe via des solutions comme Pigsty, il est conseillé de disposer d'un serveur Linux (x86_64 ou arm64) avec une adresse IP statique et un accès Internet stable.
Logiciels Indispensables
Sur la machine cible (qu'il s'agisse d'un serveur VPS, d'une machine virtuelle ou de votre poste de travail) :
- Docker Engine : La plateforme de conteneurisation doit être installée et le service démarré. C'est le moteur qui exécutera les conteneurs de Dify.
- Docker Compose v2 : Assurez-vous d'avoir la version 2 de Docker Compose, souvent disponible comme plugin de Docker (
docker composeau lieu dedocker-compose). - git : L'outil de gestion de version est nécessaire pour cloner le dépôt source de Dify depuis GitHub.
- Accès réseau : Si Dify doit être accessible depuis l'extérieur, les ports HTTP (80) et/ou HTTPS (443) doivent être ouverts sur votre pare-feu. L'utilisation d'un reverse proxy (Nginx, Caddy, Cloudflare) est fortement recommandée pour la gestion des certificats SSL et l'exposition sécurisée.
Voici un exemple d'installation rapide des prérequis sur un serveur Ubuntu :
curl -fsSL https://get.docker.com | sh
apt update && apt install -y docker-compose-plugin git
systemctl enable docker && systemctl start docker
3. Cloner le dépôt Dify : Choisir la bonne version
Pour garantir la stabilité de votre installation, il est crucial de cloner la bonne version du dépôt Dify. Les documentations officielles et les bonnes pratiques de la communauté recommandent de cibler la dernière release taguée plutôt que la branche main, qui peut contenir des modifications instables ou en cours de développement.
Pour récupérer la dernière version stable, exécutez les commandes suivantes :
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
cd dify/docker
Cette commande utilise curl et jq (un parseur JSON en ligne de commande, vous devrez peut-être l'installer via apt install jq ou yum install jq) pour récupérer dynamiquement le nom de la dernière étiquette de version et la passe à git clone. Vous vous positionnez ensuite dans le sous-répertoire docker du projet, où se trouvent les fichiers de configuration Docker Compose.
Si, pour des raisons de développement ou de test, vous souhaitez suivre la branche main (ce qui est déconseillé pour une production) :
git clone https://github.com/langgenius/dify.git
cd dify/docker
4. Configuration essentielle : Le fichier .env
Le fichier .env est le cœur de la configuration de votre instance Dify. Il contient toutes les variables d'environnement nécessaires au bon fonctionnement des services Docker. Vous le trouverez dans le répertoire dify/docker.
Copiez le modèle : Commencez par copier le fichier d'exemple fourni :
cp .env.example .envModifiez le fichier
.env: Ouvrez le fichier.envavec votre éditeur de texte préféré (nano, vim, VS Code, etc.) et ajustez les paramètres suivants. Ce sont les points clés généralement ajustés pour un déploiement fonctionnel :SECRET_KEY: C'est une clé secrète aléatoire essentielle pour la sécurité de votre application (sessions utilisateur, tokens, etc.). Il est impératif de la générer et de ne pas laisser la valeur par défaut. Vous pouvez en générer une robuste avecopenssl:openssl rand -base64 42Copiez la chaîne de caractères résultante et collez-la comme valeur de
SECRET_KEY.NGINX_SERVER_NAME: Définissez le domaine ou l'adresse IP de votre instance Dify. Par exemple,dify.mondomaine.comouyour_server_ip. Ce paramètre est utilisé par le conteneur Nginx pour router les requêtes.URL publique de Dify : Selon la version de Dify, une variable comme
WEB_URLouAPP_BASE_URLpeut être présente. Assurez-vous qu'elle reflète l'URL publique complète où Dify sera accessible (ex:http://dify.mondomaine.comouhttps://dify.mondomaine.com).Base de données : Par défaut, Dify déploie une base de données PostgreSQL dans le même stack Docker. Pour la production, il est souvent préférable de pointer vers une instance PostgreSQL externe (gérée via Pigsty, un service RDS cloud, etc.) pour des raisons de performance, de sauvegarde et de haute disponibilité. Si vous utilisez une base de données externe, vous devrez modifier les variables
DB_HOST,DB_PORT,DB_USER,DB_PASSWORD, etDB_NAMEen conséquence. Sinon, laissez les valeurs par défaut pour une base de données interne.Vector store : Dify utilise un magasin vectoriel pour les fonctionnalités RAG. Par défaut,
pgvectorest souvent utilisé avec PostgreSQL. Si vous utilisez un autre magasin vectoriel externe ou une configuration spécifique, ajustez les variables associées.Clés d'API LLM : Pour interagir avec des modèles de langage externes (OpenAI, Azure OpenAI, Anthropic, etc.), vous devrez fournir vos clés d'API. Cherchez les variables de type
OPENAI_API_KEY,AZURE_OPENAI_API_KEY, etc., et renseignez-les avec vos identifiants. Vous pouvez également les configurer plus tard via l'interface web de Dify.Autres paramètres : Pour un déploiement de production, vous pourriez également vouloir configurer les paramètres d'envoi d'e-mails (SMTP) pour les notifications et la récupération de mot de passe, ainsi que les paramètres de stockage d'objets (S3 ou compatible comme MinIO) pour les fichiers téléchargés.
Pour un premier test, la communauté suggère souvent de ne personnaliser que le strict minimum (clé secrète, domaine/IP, et éventuellement une clé API LLM) pour vérifier que tout fonctionne, puis d'affiner la configuration par la suite.
5. Lancement du stack Docker Compose
Une fois que votre fichier .env est correctement configuré et que vous vous trouvez dans le répertoire dify/docker, vous pouvez lancer tous les services Dify avec une seule commande :
docker compose up -d
docker compose up: Cette commande lit le fichierdocker-compose.yml(et potentiellementdocker-compose.override.ymlsi présent) et démarre tous les services définis (API, web, Nginx, PostgreSQL, Redis, workers, etc.).-d: L'option-d(pour "detached") permet de lancer les conteneurs en arrière-plan, libérant ainsi votre terminal.
Docker Compose va télécharger les images Docker nécessaires (si elles ne sont pas déjà présentes localement), créer les conteneurs, configurer les réseaux internes et les volumes de données. Ce processus peut prendre quelques minutes lors du premier lancement.
Pour vérifier que tous les services sont bien démarrés et en cours d'exécution, vous pouvez utiliser les commandes suivantes :
docker compose ps
Ceci listera l'état de tous les conteneurs gérés par votre docker-compose.yml.
Pour consulter les logs en temps réel de tous les services (utile pour le débogage) :
docker compose logs -f
Appuyez sur Ctrl+C pour quitter l'affichage des logs.
6. Finalisation de l'installation via l'interface web
Une fois que tous les conteneurs sont démarrés et stables (cela peut prendre quelques instants après le docker compose up -d), vous pouvez finaliser l'installation via l'interface web de Dify.
Accédez à la page d'initialisation de l'administrateur :
- Si vous avez déployé Dify en local :
http://localhost/install - Si vous avez déployé Dify sur un serveur distant :
http://votre_ip_ou_domaine/install(remplacezvotre_ip_ou_domainepar l'adresse IP de votre serveur ou le nom de domaine que vous avez configuré).
- Si vous avez déployé Dify en local :
Créez le compte administrateur : Suivez l'assistant d'installation. Vous serez invité à renseigner une adresse e-mail et un mot de passe pour créer le premier compte utilisateur, qui aura les privilèges d'administrateur sur votre instance Dify. C'est ce compte qui vous permettra de gérer la plateforme, de créer des applications et de configurer les fournisseurs de modèles.
Connectez-vous à l'interface : Une fois le compte administrateur créé, vous serez redirigé vers la page de connexion. Utilisez les identifiants que vous venez de créer pour vous connecter à votre nouvelle instance Dify :
- En local :
http://localhost - Sur serveur :
http://votre_ip_ou_domaine(ouhttps://votre_domainesi vous avez configuré un reverse proxy avec SSL).
- En local :
Félicitations ! Votre instance Dify est maintenant opérationnelle et prête à l'emploi. Vous pouvez commencer à explorer ses fonctionnalités, créer vos premières applications LLM, et tirer parti de la puissance de l'intelligence artificielle sous votre contrôle.
Conclusion : Maîtrisez vos applications LLM avec Dify
Le déploiement de Dify en self-hosted avec Docker et Docker Compose est une démarche stratégique pour quiconque souhaite développer des applications basées sur les LLM tout en conservant une autonomie complète sur son infrastructure et ses données. Bien que le processus puisse sembler technique, les étapes détaillées ci-dessus, combinées à la robustesse de Docker, rendent cette opération accessible.
En suivant ce guide, vous avez non seulement mis en place une plateforme puissante, mais vous avez également posé les bases d'un environnement de développement LLM sécurisé, personnalisable et évolutif. Vous êtes désormais prêt à explorer l'éventail des possibilités offertes par Dify, de la création de chatbots sophistiqués à l'orchestration d'agents intelligents complexes, le tout depuis votre propre écosystème maîtrisé. Le monde de l'IA est à votre portée, sous vos propres conditions.
L'équipe SEOmnix
L'équipe technique de SEOmnix teste, compare et décortique les meilleurs outils SaaS et IA pour aider les professionnels à automatiser leur croissance.