Traefik Reverse Proxy
Traefik est un reverse proxy et load balancer qui surveille le socket Docker et construit sa table de routage à partir des labels posés sur chaque conteneur, plutôt que depuis un fichier de config à maintenir à la main. Ajoutez quelques labels au docker-compose.yml d’un conteneur, et Traefik le repère, demande un certificat HTTPS et route le trafic automatiquement, sans clic dans un dashboard ni proxy host à créer. Chaque conteneur labellisé qui apparaît ensuite est pris en charge tout seul, à l’opposé du formulaire « un hôte à la fois » de Nginx Proxy Manager.
Licence : MIT License, confirmée dans le fichier LICENSE.md du dépôt GitHub traefik/traefik (Copyright (c) 2016-2020 Containous SAS ; 2020-2025 Traefik Labs). Libre pour tout usage, commercial inclus ; Traefik Labs vend à part du support et une couche Traefik Hub/Enterprise, non requise pour s’auto-héberger le proxy.
En bref : site officiel traefik.io · code source github.com/traefik/traefik (63 000+ étoiles) · image Docker officielle traefik sur Docker Hub · version stable v3.7 · multi-architecture (amd64, arm64, et plus) · dashboard sur le port 8080 par défaut · nom prononcé « traffic ».
Pourquoi Traefik plutôt qu’un reverse proxy configuré à la main ?
Nginx Proxy Manager et Caddy fonctionnent à partir de quelque chose qu’on édite soi-même : un proxy host dans un formulaire, ou quelques lignes dans un Caddyfile. Traefik part de quelque chose que Docker connaît déjà, les labels attachés à chaque conteneur. Ajoutez traefik.enable=true et une règle de routage, et Traefik la récupère dès que le conteneur démarre, sans dashboard. Ça fait gagner du temps sur une douzaine de conteneurs ou plus ; pour trois ou quatre services, c’est plus de travail que le formulaire de Nginx Proxy Manager, ce qui explique pourquoi NPM reste le premier reverse proxy de la plupart des gens. Traefik a aussi une réputation méritée de dérouter les débutants, au point que r/Traefik carbure aux fils « existe-t-il un guide simple ».
Installer Traefik avec Docker
Cette configuration statique allégée suit le guide d’installation Docker officiel de Traefik : entrypoints HTTP et HTTPS, provider Docker activé, et redirection du trafic HTTP vers HTTPS par défaut.
services:
traefik:
image: traefik:v3.7
container_name: traefik
restart: unless-stopped
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
- Installez Docker si nécessaire, enregistrez le fichier ci-dessus sous docker-compose.yml, puis lancez docker compose up -d.
- Montez le socket Docker en lecture seule ; exposedbydefault=false ne prend en charge que les conteneurs explicitement labellisés, le réglage le plus prudent sur un hôte partagé.
- Redirigez les ports 80 et 443 de votre routeur vers cette machine ; rien d’autre n’a besoin d’être ouvert pour l’instant.
- Ajoutez des labels à n’importe quel autre conteneur pour le faire passer sous le routage de Traefik, expliqué juste après.
docker compose up -d
docker compose logs -f traefik
Router un conteneur avec des labels Docker
Ça remplace le formulaire Add Proxy Host de Nginx Proxy Manager : la règle de routage vit sur le conteneur concerné, pas dans un dashboard. Ajoutez des labels comme ceux-ci à Jellyfin, ou à n’importe quel autre conteneur sur le même réseau Docker que Traefik, et il devient joignable au prochain démarrage de la stack.
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.yourdomain.com`)"
- "traefik.http.routers.jellyfin.entrypoints=websecure"
- "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt"
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
Astuce : la ligne loadbalancer.server.port n’est utile que si un conteneur expose plus d’un port, ou que le bon port n’est pas évident. Pour un conteneur à port unique, Traefik le devine en général sans elle.
Activer Let’s Encrypt
Traefik demande et renouvelle les certificats lui-même une fois qu’un resolver est configuré, le même rôle que l’onglet SSL de Nginx Proxy Manager. Ajoutez ceci au bloc command du fichier compose :
- "--certificatesresolvers.letsencrypt.acme.email=you@yourdomain.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
acme.json doit exister avec les permissions 600 avant le premier lancement, sinon le stockage échoue et Traefik le note dans ses logs sans planter :
touch letsencrypt/acme.json
chmod 600 letsencrypt/acme.json
docker compose up -d
Notes de sécurité : le dashboard Traefik écoute sur le port 8080 par défaut, et certains exemples rapides activent api.insecure, qui désactive l’authentification. Ne redirigez jamais ce port vers internet, ni ne laissez insecure actif hors tests locaux. Placez le dashboard derrière basicauth ou forwardauth, comme le port d’admin 81 de Nginx Proxy Manager. Le socket Docker donne aussi un accès root effectif sur l’hôte : figez l’image sur une version précise plutôt que :latest.
Traefik vs Nginx Proxy Manager vs Caddy
Les trois terminent le HTTPS et redirigent le trafic vers le bon conteneur. La différence se joue sur la façon dont chacun découvre où envoyer ce trafic.
| Traefik | Nginx Proxy Manager | Caddy | |
|---|---|---|---|
| Configuration | Labels Docker automatiques | Dashboard web manuel | Caddyfile, quelques lignes |
| Découverte | Docker, Kubernetes, Swarm | Aucune, ajout manuel | Aucune, édition manuelle |
| HTTPS | Resolver Let’s Encrypt | Onglet SSL du dashboard | Automatique par défaut |
| Difficulté | La plus élevée des trois | La plus simple, interface graphique | Simple, config texte |
| Idéal pour | Hôtes Docker chargés | Premier reverse proxy, préférence UI | Petites installations |
| Licence | MIT | MIT | Apache 2.0 |
- Découvre automatiquement les nouveaux conteneurs via les labels Docker, aucune étape dashboard par service
- Support natif de Kubernetes, Docker Swarm et Consul au-delà du simple Docker
- Let’s Encrypt automatique avec support des certificats wildcard via challenge DNS
- Sous licence MIT et activement maintenu (63 000+ étoiles GitHub), aucune fonctionnalité verrouillée derrière un paywall
- Pas d’interface web pour ajouter des routes ; tout vit dans les labels ou les fichiers de config
- Courbe d’apprentissage plus raide que le dashboard formulaire de NPM pour un premier reverse proxy
- Des labels mal configurés échouent plus souvent silencieusement qu’un dashboard ne le signalerait
Matériel : Traefik est un unique binaire Go compilé de façon statique, assez léger pour un Raspberry Pi ou toute petite machine allumée en permanence ; notre guide d’installation homelab pour débutants couvre le choix de cette première machine. Le vrai prérequis : l’accès au socket Docker et, comme pour tout reverse proxy, les ports 80 et 443 joignables depuis l’extérieur.
Atteindre un service auto-hébergé comme Jellyfin depuis l’extérieur de la maison est l’une des raisons les plus courantes qui poussent les homelabbeurs vers Traefik. Notre guide d’accès distant à Jellyfin détaille cette configuration de bout en bout, et la compare à Tailscale et WireGuard, qui exposent un réseau privé complet plutôt que de router un sous-domaine HTTPS à la fois.
FAQ
Traefik est-il gratuit et open source ?
Oui, sous licence MIT, libre y compris en usage commercial. Traefik Labs vend à part une couche Hub/Enterprise, au-dessus du proxy open source, pas à sa place.
Traefik est-il plus difficile à apprendre que Nginx Proxy Manager ?
Pour un premier reverse proxy, oui : le dashboard de NPM se prend en main plus vite que le modèle entrypoints-routers-services de Traefik. Ça se rentabilise dès que l’ajout manuel de chaque conteneur devient trop lent.
Traefik fonctionne-t-il avec Kubernetes, ou seulement Docker ?
Les deux, plus Docker Swarm, Consul et Nomad. Docker reste le cas homelab le plus courant, la même découverte automatique s’appliquant à l’Ingress Kubernetes.
Le dashboard Traefik est-il sûr à exposer sur internet ?
Pas sans authentification devant. api.insecure est réservé aux tests locaux ; en production, placez le dashboard derrière basicauth ou forwardauth, comme le port d’admin de Nginx Proxy Manager.
Traefik peut-il remplacer complètement Nginx Proxy Manager ?
Fonctionnellement oui : les deux terminent le HTTPS et routent vers les conteneurs. Le compromis, c’est le style : dashboard et formulaire pour NPM, labels et flags pour Traefik. Beaucoup migrent de l’un à l’autre avec le temps.
Pour une poignée de conteneurs, le dashboard de Nginx Proxy Manager reste le chemin le plus rapide vers une adresse HTTPS fonctionnelle. Une fois que les labels et la découverte automatique font gagner plus de temps qu’ils n’en coûtent à apprendre, Traefik justifie la mise en place plus raide que ce guide vient de détailler.