Mis à jour mars 2026 ~2 heures de configuration

Comment auto-héberger Dify en 2026

Un guide complet et pratique pour exécuter Dify sur votre propre VPS. Du choix du serveur aux certificats SSL et à la maintenance continue — tout ce dont vous avez besoin en un seul endroit.

Qu'est-ce que l'auto-hébergement de Dify ?

Dify est une plateforme open source de développement d'applications LLM qui vous permet de créer des applications alimentées par l'IA, des chatbots et des pipelines RAG. L'auto-hébergement signifie exécuter Dify sur votre propre serveur plutôt que d'utiliser Dify Cloud.

Vous choisiriez l'auto-hébergement plutôt que Dify Cloud pour trois raisons principales :

  • Coût — Un Hetzner CX22 coûte €3,79/mois contre $59/mois pour Dify Cloud Pro. À l'échelle d'une équipe, les économies sont considérables.
  • Contrôle — Accès complet à la configuration, aux plugins, aux modèles personnalisés, membres d'espace de travail illimités et sans limites de crédits de messages.
  • Confidentialité des données — Vos prompts, documents et historiques de conversations ne quittent jamais votre infrastructure. Essentiel pour les secteurs réglementés.

La contrepartie est que vous êtes responsable de la configuration, des mises à jour et de la disponibilité. Ce guide vous simplifie la tâche.

Prérequis du serveur

Minimum

2 vCPU 4 Go RAM 50 Go SSD

Recommandé

4 vCPU 8 Go RAM 80 Go SSD

OS : Ubuntu 22.04 LTS (recommandé). Debian 11/12 fonctionne également.

1

Choisir un serveur

Pour la plupart des auto-hébergeurs, Hetzner CX22 (€3,79/mois, 2 vCPU, 4 Go RAM, 40 Go NVMe) est le meilleur point de départ. Il fait tourner confortablement Dify et tous ses services. Les centres de données européens en font un choix idéal pour la conformité RGPD.

Pour les débutants qui souhaitent un panneau de contrôle plus simple, Hostinger VPS commence à $7,99/mois et offre plus d'accompagnement. Si vous avez besoin de 8 Go RAM, leur plan KVM 2 à $9,99/mois est un excellent rapport qualité-prix.

Conseil : Créez le serveur avec votre clé publique SSH déjà ajoutée. Cela évite entièrement l'authentification par mot de passe et est plus sécurisé.

2

Configuration initiale du serveur

Connectez-vous à votre serveur et effectuez la configuration initiale :

# Se connecter au serveur via SSH
ssh root@YOUR_SERVER_IP

# Mettre à jour les paquets
apt update && apt upgrade -y

# Installer les outils essentiels
apt install -y curl wget git ufw

# Créer un utilisateur non-root
adduser dify
usermod -aG sudo dify

# Copier les clés SSH vers le nouvel utilisateur
rsync --archive --chown=dify:dify ~/.ssh /home/dify

# Configurer le pare-feu UFW
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'SSH'
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'
ufw --force enable
ufw status

Déconnectez-vous maintenant et reconnectez-vous en tant qu'utilisateur dify pour les étapes suivantes.

3

Installer Docker Engine

Installez Docker en utilisant le dépôt apt officiel — n'utilisez pas la version snap :

# Installer les prérequis
sudo apt install -y ca-certificates curl gnupg lsb-release

# Ajouter la clé GPG officielle de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Ajouter le dépôt apt Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Installer Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# Ajouter votre utilisateur au groupe docker (pas besoin de sudo)
sudo usermod -aG docker $USER
newgrp docker

# Vérifier l'installation
docker --version
4

Installer le plugin Docker Compose

Le plugin Docker Compose est inclus dans le paquet ci-dessus. Vérifiez qu'il fonctionne :

# Vérifier la version Docker Compose (doit être v2.x)
docker compose version

# Si non installé, l'ajouter manuellement
sudo apt install -y docker-compose-plugin
5

Cloner et configurer Dify

Clonez le dépôt officiel Dify et configurez votre environnement :

# Cloner le dépôt
git clone https://github.com/langgenius/dify.git
cd dify/docker

# Créer votre fichier .env depuis l'exemple
cp .env.example .env

# Générer un SECRET_KEY sécurisé
openssl rand -base64 42

# Modifier le fichier .env
nano .env

Paramètres clés à mettre à jour dans .env :

# OBLIGATOIRE : Définir une clé secrète aléatoire forte
SECRET_KEY=your-generated-secret-key-here

# Définir votre domaine (utilisé dans les emails et liens)
CONSOLE_URL=https://your-domain.com
APP_URL=https://your-domain.com

# Changer le mot de passe de base de données par défaut
DB_PASSWORD=your-strong-db-password

# Changer le mot de passe Redis par défaut
REDIS_PASSWORD=your-strong-redis-password

# Optionnel : Ajouter votre clé API OpenAI pour un démarrage rapide
OPENAI_API_KEY=sk-...
6

Démarrer Dify

Lancez tous les services Dify avec Docker Compose :

# Démarrer tous les services en arrière-plan
docker compose up -d

# Vérifier que tous les conteneurs fonctionnent
docker compose ps

# Suivre les logs pour observer le démarrage (Ctrl+C pour quitter)
docker compose logs -f

Une fois que tous les conteneurs affichent le statut healthy (prend 1 à 2 minutes), visitez http://YOUR_SERVER_IP pour compléter l'assistant de configuration administrateur.

7

Configurer SSL avec Nginx

La stack Docker de Dify inclut son propre Nginx sur le port 80. Pour SSL, nous allons ajouter un Nginx au niveau hôte comme proxy inverse devant lui. Commencez par changer le port de Dify pour éviter les conflits :

# Dans dify/docker/.env, changer le port Nginx
EXPOSE_NGINX_PORT=8080

# Redémarrer pour appliquer
docker compose down && docker compose up -d

# Installer Nginx et Certbot sur l'hôte
sudo apt install -y nginx certbot python3-certbot-nginx

# Créer la configuration Nginx pour votre domaine
sudo nano /etc/nginx/sites-available/dify

Ajoutez cette configuration (remplacez your-domain.com) :

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;

    location / {
        proxy_pass http://localhost:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
        client_max_body_size 100M;
    }
}
# Activer et tester
sudo ln -s /etc/nginx/sites-available/dify /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# Obtenir le certificat SSL (configure Nginx pour HTTPS automatiquement)
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
8

Maintenance

Mise à jour de Dify — Dify publie fréquemment des mises à jour. Mettez à jour sans aucun changement de configuration :

cd ~/dify
git pull origin main
cd docker
docker compose pull
docker compose up -d

Sauvegarde — Sauvegardez votre base de données PostgreSQL et les fichiers téléversés :

# Sauvegarder la base de données
docker compose exec db pg_dump -U postgres dify > backup_$(date +%Y%m%d).sql

# Sauvegarder les fichiers téléversés
tar -czf dify_storage_$(date +%Y%m%d).tar.gz ./volumes/app/storage

Surveillance — Vérifier l'utilisation des ressources :

# Utilisation des ressources par conteneur
docker stats

# Utilisation du disque
df -h
docker system df

Questions fréquemment posées

Conflit de port : quelque chose utilise déjà le port 80

Un autre service (souvent Apache) occupe le port 80. Soit vous l'arrêtez (sudo systemctl stop apache2), soit vous changez le port Nginx de Dify dans .env en définissant EXPOSE_NGINX_PORT=8080.

Le conteneur se termine avec une erreur de mémoire insuffisante

Dify a besoin d'au moins 4 Go RAM. Vérifiez avec free -h. Si la RAM est limite, ajoutez un fichier swap de 4 Go : fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile.

Impossible d'accéder à la page de configuration administrateur

Vérifiez que tous les conteneurs fonctionnent (docker compose ps) et que votre pare-feu autorise le port 80 (sudo ufw status). Le conteneur API prend 30 à 60 secondes pour être prêt — attendez le statut healthy.

Mot de passe administrateur oublié

Réinitialisez-le via le conteneur API : docker compose exec api flask reset-password — suivez les instructions pour entrer votre email et nouveau mot de passe.

Comment mettre à jour Dify sans interruption de service ?

Exécutez docker compose pull pour pré-télécharger les nouvelles images, puis docker compose up -d pour appliquer. Docker Compose effectue des redémarrages progressifs par défaut, donc l'interruption de service est généralement inférieure à 30 secondes.