SEOmnix
Infrastructure Tech & Web

Déployer Dify avec Traefik et SSL automatique : Le Guide Complet

7 min de lecture 1415 mots
Déployer Dify avec Traefik et SSL automatique : Le Guide Complet

Cet article contient des liens affiliés vers certains outils mentionnés. Si vous souscrivez via ces liens, SEOmnix peut percevoir une commission, sans coût additionnel pour vous.

Le déploiement d'applications modernes en self-hébergement, comme Dify, implique souvent une gestion complexe des accès, de la sécurité et des certificats SSL. Pour simplifier cette tâche cruciale, l'intégration de Traefik en tant que reverse proxy dynamique, combinée à l'automatisation du SSL via Let's Encrypt, offre une solution robuste et élégante. Ce guide détaillé vous accompagnera pas à pas pour déployer Dify avec Traefik et SSL automatique, garantissant ainsi une installation sécurisée et facile à maintenir.

Dify, une plateforme open-source essentielle pour le développement d'applications basées sur l'IA, nécessite une configuration réseau et de sécurité soignée pour être opérationnelle en production. En tirant parti de Traefik et de Docker, vous automatiserez le routage du trafic et la gestion des certificats TLS, rendant votre instance Dify accessible via HTTPS sans effort manuel.

Pourquoi Traefik est le choix idéal pour Dify ?

Traefik se distingue comme un reverse proxy et un équilibreur de charge cloud-native, particulièrement adapté aux environnements Docker. Sa capacité à découvrir automatiquement les services exposés par Docker et à configurer le routage sans nécessiter de rechargement manuel de la configuration en fait un allié précieux pour des déploiements dynamiques comme celui de Dify. Plutôt que de configurer des serveurs web internes complexes, Traefik centralise la gestion du trafic et simplifie l'exposition de vos applications.

Avec Traefik, vous bénéficiez d'une approche « configuration as code » grâce aux labels Docker, permettant de définir les règles de routage directement dans la définition de vos services. Cette flexibilité est primordiale pour les architectures microservices et pour des applications comme Dify, qui peuvent impliquer une dizaine de conteneurs dans un montage self-hosted (souvent avec des versions comme Dify v1.11.1).

L'automatisation SSL avec Let's Encrypt : Un atout majeur

L'un des principaux avantages de Traefik est son intégration native avec Let's Encrypt. Cette fonctionnalité permet de générer, d'installer et de renouveler automatiquement les certificats SSL/TLS pour vos services, éliminant ainsi la complexité et les risques d'erreurs humaines liés à la gestion manuelle des certificats. Les certificats Let's Encrypt sont valables 90 jours, rendant le renouvellement automatique essentiel pour la continuité de service.

Pour que Traefik puisse obtenir ces certificats, il utilise le protocole ACME (Automated Certificate Management Environment) avec des méthodes de challenge comme HTTP-01 ou DNS-01. Le challenge HTTP-01 est le plus courant et nécessite que les ports 80 et 443 soient ouverts sur votre serveur. Une fois configuré, Traefik s'occupe de tout, garantissant que votre instance Dify reste sécurisée avec des certificats à jour.

Architecture typique pour Dify et Traefik

Pour un déploiement optimal de Dify derrière Traefik, une architecture courante implique l'utilisation de deux noms d'hôte distincts : un pour l'interface web (par exemple, dify.votre-domaine.com) et un pour l'API (par exemple, api.dify.votre-domaine.com). Cette séparation permet une gestion plus fine des règles de routage et de sécurité.

Le conteneur Nginx intégré à Dify est généralement désactivé lorsque Traefik assume le rôle de point d'entrée HTTP/HTTPS. Les services Dify sont ensuite placés sur un réseau Docker partagé avec Traefik, ce qui permet à Traefik de les découvrir et de router le trafic en conséquence. Des labels Docker sont ajoutés aux services Dify pour définir les routeurs, les points d'entrée websecure et les règles d'hôte. Pour des guides plus spécifiques sur le déploiement de Dify sur différentes infrastructures, vous pouvez consulter des articles comme Installer Dify en Self-Hosted sur OVHcloud : Le Guide Complet.

Prérequis essentiels avant le déploiement

Avant de plonger dans la configuration, assurez-vous de disposer des éléments suivants :

  • Un nom de domaine public valide : Indispensable pour la délivrance des certificats SSL.
  • Enregistrements DNS A : Pointez les sous-domaines (dify.votre-domaine.com et api.dify.votre-domaine.com) vers l'adresse IP publique de votre serveur.
  • Ports 80 et 443 ouverts : Ces ports sont nécessaires pour la validation Let's Encrypt et pour servir le trafic HTTPS.
  • Docker et Docker Compose : Installés et fonctionnels sur votre serveur. Pour des instructions détaillées sur le déploiement de Dify avec Docker sur d'autres plateformes, vous pouvez vous référer à Déployer Dify sur Hetzner avec Docker : Le Guide Complet.

Guide de configuration étape par étape

1. Création du réseau Docker partagé

Pour que Traefik puisse communiquer avec les services Dify, ils doivent être sur le même réseau Docker. Créez un réseau si ce n'est pas déjà fait :

docker network create traefik_proxy

2. Configuration de Traefik (docker-compose.yml)

Créez un fichier docker-compose.yml pour Traefik. Voici un exemple de base :

version: '3.8'

services:
  traefik:
    image: traefik:v2.10
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/etc/traefik/traefik.yml:ro
      - ./acme.json:/acme.json
    networks:
      - traefik_proxy

networks:
  traefik_proxy:
    external: true

Créez ensuite un fichier traefik.yml pour la configuration principale de Traefik :

api:
  dashboard: true
  insecure: true # À désactiver en production si vous ne voulez pas exposer le dashboard sans auth

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: ":443"

certificatesResolvers:
  letsencrypt:
    acme:
      email: votre.email@example.com # Remplacez par votre adresse email
      storage: /acme.json
      httpChallenge:
        entryPoint: web

3. Persistance du fichier acme.json

Le fichier acme.json stocke vos certificats. Il est crucial de le protéger et d'assurer sa persistance. Créez-le et définissez les permissions appropriées :

touch acme.json
chmod 600 acme.json

4. Intégration des services Dify

Modifiez le docker-compose.yml de Dify pour y ajouter les labels Traefik et connecter les services au réseau traefik_proxy. Voici des exemples de labels à ajouter aux services api et webapp de Dify :

Pour le service api de Dify (dans votre docker-compose.yml de Dify) :

services:
  api:
    # ... autres configurations ...
    networks:
      - default
      - traefik_proxy # Ajoutez le réseau partagé
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dify-api.rule=Host(`api.dify.votre-domaine.com`)" # Remplacez par votre domaine
      - "traefik.http.routers.dify-api.entrypoints=websecure"
      - "traefik.http.routers.dify-api.tls.certresolver=letsencrypt"
      - "traefik.http.services.dify-api.loadbalancer.server.port=5001" # Port interne de l'API Dify

Pour le service webapp de Dify :

services:
  webapp:
    # ... autres configurations ...
    networks:
      - default
      - traefik_proxy # Ajoutez le réseau partagé
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dify-web.rule=Host(`dify.votre-domaine.com`)" # Remplacez par votre domaine
      - "traefik.http.routers.dify-web.entrypoints=websecure"
      - "traefik.http.routers.dify-web.tls.certresolver=letsencrypt"
      - "traefik.http.services.dify-web.loadbalancer.server.port=80" # Port interne de la webapp Dify

N'oubliez pas d'ajouter le réseau traefik_proxy à la section networks de votre docker-compose.yml de Dify :

networks:
  traefik_proxy:
    external: true

Après ces modifications, démarrez Traefik et Dify :

docker-compose -f docker-compose-traefik.yml up -d
docker-compose -f docker-compose-dify.yml up -d

Vérification et dépannage

Après le démarrage, il est crucial de vérifier que tout fonctionne correctement :

  1. Vérifiez l'état des conteneurs : docker ps doit montrer tous les conteneurs Dify et Traefik en état Up.
  2. Testez la santé de l'API Dify : Exécutez la commande de santé de l'API (si disponible) ou accédez directement à https://api.dify.votre-domaine.com/health. Vous devriez obtenir un statut ok.
  3. Consultez les logs de Traefik : docker logs traefik pour identifier d'éventuelles erreurs liées à ACME, au DNS ou au routage.
  4. Accédez à Dify : Ouvrez votre navigateur et naviguez vers https://dify.votre-domaine.com/ pour finaliser la configuration de Dify.

En cas de problème, assurez-vous que vos enregistrements DNS sont correctement propagés et que les ports 80/443 ne sont pas bloqués par un pare-feu.

Avantages et considérations

Ce type de déploiement offre de nombreux avantages :

  • Automatisation complète : Gestion et renouvellement des certificats SSL sans intervention manuelle.
  • Sécurité renforcée : Tout le trafic est chiffré par défaut, protégeant les données échangées avec Dify.
  • Centralisation : Traefik gère le routage pour tous vos services Docker, simplifiant la configuration réseau.
  • Flexibilité : Facile à étendre pour d'autres services ou applications sur le même serveur.

Cependant, soyez vigilant sur la persistance du fichier acme.json : s'il n'est pas correctement monté et sauvegardé, vous risquez de perdre vos certificats après un redémarrage ou une recréation du conteneur Traefik.

Conclusion

Déployer Dify avec Traefik et SSL automatique est une approche moderne et efficace pour sécuriser et gérer l'accès à votre plateforme d'IA. En suivant ce guide, vous mettez en place une infrastructure robuste, automatisée et évolutive, vous permettant de vous concentrer sur le développement de vos applications Dify plutôt que sur les complexités de la gestion des certificats et du routage réseau. Adoptez cette méthode pour une tranquillité d'esprit et une efficacité accrues dans vos déploiements self-hébergés.


Photo d'illustration par Daria Nepriakhina 🇺🇦 sur Unsplash

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.