Skip to content

🚀 Déploiement de Traefik avec Docker Compose

Traefik est un reverse proxy moderne qui gère automatiquement les certificats SSL avec Let's Encrypt.


📂 Structure du projet

.
├── docker-compose.yml
├── certs
│   └── acme.json        # Stockage des certificats SSL Let's Encrypt
├── conf.d
│   └── <templates_services>  # Configuration des services Traefik
└── README.md

1️⃣ Préparation du fichier acme.json

Ce fichier va stocker les certificats SSL générés par Let's Encrypt.

touch certs/acme.json
chmod 600 certs/acme.json

Il doit être vide au départ et sécurisé.


2️⃣ Configuration du fichier docker-compose.yml

version: '3.7'

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: always
    ports:
      - "80:80"       # HTTP
      - "443:443"     # HTTPS
      - "8080:8080"   # Dashboard Traefik (interface d’administration)
    volumes:
      - ./certs/acme.json:/acme.json
      - ./conf.d:/etc/traefik/conf.d
    command:
      - "--global.sendAnonymousUsage"
      - "--log.level=INFO"
      - "--accesslog=true"
      - "--api.insecure=true"
      - "--api.dashboard=true"
      - "--providers.file.directory=/etc/traefik/conf.d/"
      - "--providers.file.watch=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.email=ukakiko@home-cody.fr"
      - "--certificatesresolvers.myresolver.acme.storage=/acme.json"
      - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"

3️⃣ Exemple de configuration pour un service (conf.d/myapp.toml)

[http.routers.myapp]
  entryPoints = ["websecure"]
  rule = "Host(`myapp.home-cody.fr`)"
  service = "myapp"
  [http.routers.myapp.tls]
    certResolver = "myresolver"

[http.routers.myapp-redirect]
  entryPoints = ["web"]
  rule = "Host(`myapp.home-cody.fr`)"
  middlewares = ["redirect-to-https"]
  service = "noop"

[http.middlewares.redirect-to-https.redirectScheme]
  scheme = "https"
  permanent = true

[http.services.myapp.loadBalancer]
  [[http.services.myapp.loadBalancer.servers]]
    url = "http://<IP>:<PORT>"

[http.services.noop.loadBalancer]
  [[http.services.noop.loadBalancer.servers]]
    url = "http://127.0.0.1"

Important : Remplacez <IP> et <PORT> par l’adresse IP et le port réels de votre service.


4️⃣ Démarrer Traefik avec Docker Compose

docker-compose up -d

Traefik démarre en arrière-plan et commence à gérer les certificats SSL.


5️⃣ Vérification

Accédez au tableau de bord Traefik (non sécurisé par défaut) :

http://<votre-serveur>:8080

Vous pouvez y vérifier que vos services sont bien configurés et que les certificats SSL sont générés.


📝 Résumé

  • Créez un fichier acme.json vide et sécurisé pour les certificats.
  • Configurez Traefik via docker-compose.yml avec la résolution automatique des certificats.
  • Ajoutez la configuration spécifique de chaque service dans le dossier conf.d/.
  • Lancez Traefik et vérifiez son état via le dashboard.