EN
en direct

Traefik ne se configure pas — il découvre vos conteneurs et leur donne du HTTPS sans que vous leviez le petit doigt

Traefik v3.7.0, publié le 5 mai 2026, pousse le reverse proxy à son aboutissement logique : il lit les labels de vos conteneurs Docker, provisionne leurs certificats Let’s Encrypt et route le trafic sans un fichier de configuration statique. Si Nginx Proxy Manager vous a mis le pied à l’étrier, Traefik est l’étape d’après — celle où vous arrêtez de configurer votre reverse proxy pour le laisser découvrir vos services tout seul.

Traefik découvre vos conteneurs Docker et leur donne du HTTPS sans configuration — illustration ETTAYEB

Mai 2026, Traefik publie sa v3.7.0 avec 64 000 étoiles GitHub et une philosophie inchangée depuis sa création par Emile Vauge en 2015 : un reverse proxy ne devrait pas avoir besoin d’être configuré. Il devrait découvrir les services, provisionner leurs certificats et router le trafic pendant que vous, vous écrivez le docker-compose.yml du prochain conteneur. Juin 2026, les releases s’enchaînent au rythme d’une par semaine — v3.7.3, v3.7.4, v3.7.5 — et le message est clair : Traefik a gagné la bataille du reverse proxy cloud-native.

La plupart des homelabs commencent avec Nginx Proxy Manager — et c’est la bonne décision. NPM transforme la configuration d’un reverse proxy en trois champs et un clic, sans jamais toucher un fichier nginx.conf. Mais passé dix, quinze services, le modèle montre ses limites : chaque nouveau conteneur demande une visite dans l’interface d’administration, chaque changement de port une édition manuelle. Traefik prend le problème à l’envers : au lieu de déclarer les routes dans un outil central, il les lit directement sur les conteneurs qu’il doit proxyfier.

Un reverse proxy qui écoute Docker, pas un fichier de configuration

Le principe est simple et radical. Traefik se connecte au socket Docker (/var/run/docker.sock) et surveille les événements du démon : un conteneur démarre, il lit ses labels ; un conteneur s’arrête, il retire sa route. Aucun reload, aucun nginx -s reload, aucun fichier statique à maintenir. La configuration vit là où vit le service — dans le docker-compose.yml qui le définit.

Voici ce que ça donne pour exposer Whoogle derrière un sous-domaine avec certificat Let’s Encrypt automatique :

yaml
services:
  whoogle:
    image: benbusby/whoogle-search:latest
    networks: [traefik]
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoogle.rule=Host(`search.votredomaine.fr`)"
      - "traefik.http.routers.whoogle.entrypoints=websecure"
      - "traefik.http.routers.whoogle.tls.certresolver=letsencrypt"
      - "traefik.http.services.whoogle.loadbalancer.server.port=5000"

Cinq labels. Pas de fichier de configuration Nginx, pas de formulaire d’administration, pas de reload. Vous faites docker compose up -d et trente secondes plus tard, search.votredomaine.fr répond en HTTPS avec un certificat valide. Supprimez le conteneur, la route disparaît. C’est le comportement que les orchestrateurs comme Kubernetes offrent nativement, ramené au niveau d’un simple hôte Docker.

L’installation : un compose qui ne bouge plus

Le cœur de Traefik tient dans trois fichiers : une configuration statique (traefik.yml), une configuration dynamique (dynamic.yml) et un docker-compose.yml. La configuration statique définit les entrypoints (ports 80 et 443), les providers (Docker, fichier) et les certificate resolvers (Let’s Encrypt). Elle ne change jamais une fois écrite.

yaml
# traefik.yml
api:
  dashboard: true

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

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
    network: traefik
  file:
    filename: /etc/traefik/config/dynamic.yml
    watch: true

certificatesResolvers:
  letsencrypt:
    acme:
      email: "[email protected]"
      storage: /etc/traefik/acme.json
      httpChallenge:
        entryPoint: web

Deux précautions critiques dans ce fichier. exposedByDefault: false empêche Traefik de router automatiquement tout conteneur sur le réseau — seuls ceux qui portent le label traefik.enable=true sont exposés. network: traefik restreint la découverte aux conteneurs explicitement attachés au réseau traefik : un conteneur isolé sur un autre réseau Docker est invisible pour le reverse proxy, ce qui limite la surface d’attaque.

Le docker-compose.yml de Traefik lui-même est minimal :

yaml
services:
  traefik:
    image: traefik:v3.7
    container_name: traefik
    networks: [traefik]
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/etc/traefik/traefik.yml:ro
      - ./config:/etc/traefik/config:ro
      - ./acme.json:/etc/traefik/acme.json
    restart: unless-stopped

networks:
  traefik:
    external: true

Une fois ce compose déployé, vous n’y touchez plus. Toute la configuration opérationnelle — les routes, les middlewares, les certificats — est pilotée par les labels des conteneurs applicatifs ou par le fichier dynamique.

Les middlewares : la chaîne de traitement qui remplace le nginx.conf

Là où Nginx Proxy Manager propose des cases à cocher (SSL, force SSL, block common exploits), Traefik expose un système de middlewares déclaratifs. Un middleware est une transformation appliquée à une requête avant qu’elle n’atteigne le service cible — et vous les chaînez comme des blocs Lego.

Voici les plus utiles pour un homelab :

  • Rate limiting : traefik.http.middlewares.ratelimit.ratelimit.average=100 limite chaque IP à 100 requêtes par seconde. Essentiel devant une API exposée.
  • Basic Auth : traefik.http.middlewares.auth.basicauth.users=admin:$2y$… protège le dashboard ou un service sans authentification native.
  • Headers : traefik.http.middlewares.secureheaders.headers.sslredirect=true ajoute les en-têtes de sécurité manquants (HSTS, X-Frame-Options, Content-Security-Policy).
  • Redirect regex : redirige /old-path vers /new-path, redirige www vers le domaine nu, ou force une URL canonique.
  • IP whitelist : traefik.http.middlewares.internalip.ipwhitelist.sourcerange=192.168.0.0/16 restreint un service au réseau local.
  • Compression : active la compression gzip ou Brotli à la volée sur les réponses textuelles.

Chaque middleware se définit dans le fichier dynamic.yml ou directement en label Docker, puis s’attache à un routeur par son nom. La syntaxe est verbeuse — c’est le prix du mode déclaratif — mais elle est auto-documentée : six mois plus tard, vous relisez le label et vous savez exactement ce qu’il fait.

Traefik contre Nginx Proxy Manager : le bon outil au bon moment

Le tableau ci-dessous résume une comparaison qu’il faut lire comme une progression, pas comme un match.

CritèreNginx Proxy ManagerTraefikPhilosophieGUI, clic pour ajouter un hôteDécouverte automatique par labelsDocker auto-discoveryNon (ajout manuel dans l’UI)Oui, en temps réelLet’s EncryptOui, via l’interfaceOui, automatique par labelConfigurationStockée en base SQLiteLabels Docker + fichiers YAMLMiddlewareCases à cocher (SSL, exploits)Chaîne déclarative complèteDashboardGestion des hôtes et certificatsVue d’ensemble du routageHTTP/3LimitéOui, natifMétriquesAucunePrometheus, OpenTelemetryRessources (idle, 10 routes)~60-80 Mo RAM~40-60 Mo RAMCourbe d’apprentissageTrès faibleModérée

Nginx Proxy Manager est le point d’entrée idéal. Traefik est l’étape suivante, celle où le nombre de services rend la gestion manuelle contre-productive. Le seuil se situe autour de dix conteneurs exposés : en dessous, NPM fait le travail sans friction ; au-dessus, Traefik transforme chaque nouveau service en trois labels au lieu d’une session de configuration.

La bonne nouvelle, c’est que les deux cohabitent parfaitement sur des entrypoints distincts. Vous pouvez migrer service par service, sans tout casser d’un coup.

Dashboard, métriques et observabilité

Traefik embarque un dashboard web qui affiche en temps réel l’état des routeurs, services et middlewares. Il n’est pas fait pour configurer — c’est un outil de diagnostic visuel. Activez-le en local, protégez-le par Basic Auth ou IP whitelist, et gardez-le pour les sessions de débogage.

Pour ceux qui poussent l’observabilité plus loin, Traefik expose nativement :

  • Un endpoint Prometheus (/metrics) qui publie le nombre de requêtes, les codes HTTP, les durées de réponse par service et par routeur.
  • Des traces OpenTelemetry pour suivre une requête de bout en bout à travers la chaîne de middlewares et les services backend.
  • Des logs d’accès au format Apache combiné, pilotables en volume et en rotation.

Ces trois briques transforment Traefik en point central d’observation du trafic. Dans un homelab où cinq à vingt services se partagent les ports 80 et 443, savoir lequel génère des erreurs 502 en cascade ou sature le rate limiter devient précieux.

Les pièges à connaître avant de migrer

Le socket Docker est une surface d’attaque. Monter /var/run/docker.sock dans un conteneur donne à ce conteneur un accès root au démon Docker. En production, préférez le mode docker swarm ou un proxy de socket (docker-socket-proxy) qui filtre les appels API autorisés. Pour un homelab monoposte, le risque est acceptable tant que le conteneur Traefik est le seul à monter le socket et que le dashboard n’est pas exposé sur Internet sans authentification.

La syntaxe des labels est verbeuse. traefik.http.routers.monservice.middlewares=auth,ratelimit,secureheaders@file n’est pas aussi lisible qu’un fichier Caddyfile. Le contrepoint : cette verbosité est prévisible et scriptable. Une fois que vous avez écrit trois services avec Traefik, le quatrième est un copier-coller de labels dont vous changez le nom et le port.

Le TLS-ALPN-01 exige le port 443 accessible. Si votre FAI bloque le port 443 ou si vous êtes derrière un CGNAT, basculez sur le challenge DNS-01Traefik supporte une quarantaine de providers DNS (Cloudflare, OVH, Route 53) pour provisionner des certificats wildcard sans exposer le port 443.

Verdict

Prenez Nginx Proxy Manager si vous avez moins de dix services exposés et que vous voulez un reverse proxy qui se configure en trois clics. Prenez Traefik si vous dépassez régulièrement les dix conteneurs, si vous voulez que vos services s’enregistrent automatiquement auprès du reverse proxy, ou si vous avez besoin d’une chaîne de middlewares que vous versionnez dans un dépôt Git.

Traefik n’est pas plus compliqué que NPM — il est différent. Là où NPM centralise la configuration dans une interface, Traefik la distribue sur chaque conteneur. Le résultat est un reverse proxy que vous n’administrez plus : vous décrivez le service, il fait le reste. C’est la définition même du cloud-native, et ça marche aussi bien sur un Raspberry Pi que sur un cluster Kubernetes à cinquante nœuds.

Références

Le brief cyber, chaque mardi

Les failles qui comptent, les correctifs à appliquer, en dix minutes de lecture.

Pas de spam. Désinscription en un clic.
à lire ensuite

Sur le même sujet

Immich remplace Google Photos dès qu’on a un NAS et une sauvegarde hors site

Immich publie sa version 3.0 le 2 juillet 2026, neuf mois après sa première version stable et un mois après le bilan de ses deux ans sous l’aile de FUTO. Il remplace Google Photos à condition d’investir dans un mini PC et d’organiser une vraie sauvegarde hors site : sans cette discipline, la bascule est un pari perdant.

Coolify met un Vercel gratuit sur votre serveur en une commande

Coolify publie sa version 4.2.0 le 21 juillet 2026, trois jours avant cet article. Ce PaaS open-source déploie vos apps, vos bases de données et 280 services en un clic sur n’importe quel serveur Linux — sans facture au Go ni limite de bande passante.

← Retour au fil

Tapez au moins deux caractères.

naviguer ouvrir esc fermer