Guide Traefik Docker 2026 : Le Reverse Proxy Ultime
Configurez Traefik avec Docker pour le SSL automatique, la découverte de services et la répartition de charge. Guide complet pour les déploiements modernes en conteneurs.
Guide Traefik Docker : Reverse Proxy Automatique
Traefik est le reverse proxy cloud-native. Il découvre vos conteneurs Docker et route automatiquement le trafic vers eux — avec des certificats SSL gratuits.
Qu’est-ce que Traefik ?
Traefik se place devant vos services :
Internet → Traefik → Container A (app.domain.com)
→ Container B (api.domain.com)
→ Container C (admin.domain.com)
Fonctionnalités clés :
- Découverte automatique — Détecte les nouveaux conteneurs
- SSL automatique — Intégration Let’s Encrypt
- Répartition de charge — Plusieurs conteneurs par service
- Middleware — Authentification, limitation de débit, en-têtes
- Tableau de bord — Vue d’ensemble visuelle des services
Pourquoi Traefik plutôt que Nginx ?
| Fonctionnalité | Traefik | Nginx |
|---|---|---|
| Intégration Docker | Native | Configuration manuelle |
| SSL automatique | Intégré | Certbot nécessaire |
| Découverte de services | Automatique | Manuelle |
| Rechargement config | À chaud | Nécessite un redémarrage |
| Courbe d’apprentissage | Modérée | Plus faible |
| Performances | Excellentes | Excellentes |
Traefik l’emporte pour les environnements Docker. Nginx pour les configurations statiques (voir notre guide du reverse proxy Nginx).
Prérequis VPS
Traefik est léger :
- 1 vCPU
- 512 Mo de RAM (pour Traefik lui-même)
- Ports 80, 443
Les spécifications de votre VPS dépendent de vos services, pas de Traefik. Consultez notre guide meilleur VPS pour Docker pour les recommandations de dimensionnement.
Configuration de base
Étape 1 : Créer le réseau
docker network create traefik-public
Étape 2 : Créer le répertoire de configuration Traefik
mkdir -p /opt/traefik
cd /opt/traefik
Étape 3 : Créer le Docker Compose
# docker-compose.yml
version: '3.8'
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/traefik.yml:ro
- ./acme.json:/acme.json
- ./config:/config:ro
networks:
- traefik-public
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`traefik.yourdomain.com`)"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.middlewares=auth"
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$xxxxx"
networks:
traefik-public:
external: true
Étape 4 : Créer la configuration Traefik
# traefik.yml
api:
dashboard: true
insecure: false
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: traefik-public
file:
directory: /config
watch: true
certificatesResolvers:
letsencrypt:
acme:
email: you@yourdomain.com
storage: /acme.json
httpChallenge:
entryPoint: web
Étape 5 : Créer le stockage des certificats
touch acme.json
chmod 600 acme.json
mkdir config
Étape 6 : Générer le mot de passe du tableau de bord
htpasswd -nb admin your-secure-password
# Output: admin:$apr1$...
# Use this in docker-compose.yml, doubling the $ signs
Étape 7 : Lancer Traefik
docker compose up -d
Accédez au tableau de bord : https://traefik.yourdomain.com
Ajouter des services
Exemple : Nginx
# In a separate docker-compose.yml
version: '3.8'
services:
nginx:
image: nginx:alpine
container_name: nginx
restart: unless-stopped
networks:
- traefik-public
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx.rule=Host(`www.yourdomain.com`)"
- "traefik.http.routers.nginx.entrypoints=websecure"
- "traefik.http.routers.nginx.tls.certresolver=letsencrypt"
networks:
traefik-public:
external: true
C’est tout ! Traefik découvre le conteneur et :
- Route
www.yourdomain.comvers celui-ci - Obtient le certificat SSL automatiquement
- Gère la terminaison HTTPS
Exemple : Application Node.js
services:
api:
build: .
container_name: api
networks:
- traefik-public
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=Host(`api.yourdomain.com`)"
- "traefik.http.routers.api.entrypoints=websecure"
- "traefik.http.routers.api.tls.certresolver=letsencrypt"
- "traefik.http.services.api.loadbalancer.server.port=3000"
networks:
traefik-public:
external: true
Note : loadbalancer.server.port spécifie le port du conteneur.
Middleware
Authentification basique
labels:
- "traefik.http.middlewares.auth.basicauth.users=user:$$hashed$$password"
- "traefik.http.routers.admin.middlewares=auth"
Limitation de débit
labels:
- "traefik.http.middlewares.ratelimit.ratelimit.average=100"
- "traefik.http.middlewares.ratelimit.ratelimit.burst=50"
- "traefik.http.routers.api.middlewares=ratelimit"
Liste blanche IP
labels:
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=192.168.1.0/24,10.0.0.0/8"
- "traefik.http.routers.admin.middlewares=ipwhitelist"
En-têtes
labels:
- "traefik.http.middlewares.security.headers.stsSeconds=31536000"
- "traefik.http.middlewares.security.headers.stsIncludeSubdomains=true"
- "traefik.http.middlewares.security.headers.contentTypeNosniff=true"
- "traefik.http.middlewares.security.headers.frameDeny=true"
Redirection
labels:
- "traefik.http.middlewares.redirect.redirectregex.regex=^https://old.domain.com/(.*)"
- "traefik.http.middlewares.redirect.redirectregex.replacement=https://new.domain.com/$${1}"
Compression
labels:
- "traefik.http.middlewares.compress.compress=true"
- "traefik.http.routers.web.middlewares=compress"
Domaines multiples
Même conteneur
labels:
- "traefik.http.routers.web.rule=Host(`domain1.com`) || Host(`domain2.com`)"
Avec redirection
labels:
- "traefik.http.routers.www.rule=Host(`www.domain.com`)"
- "traefik.http.routers.www.middlewares=redirect-to-apex"
- "traefik.http.middlewares.redirect-to-apex.redirectregex.regex=^https://www\\.(.+)"
- "traefik.http.middlewares.redirect-to-apex.redirectregex.replacement=https://$${1}"
Répartition de charge
Conteneurs multiples
services:
api:
image: myapi
deploy:
replicas: 3
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=Host(`api.domain.com`)"
Traefik répartit automatiquement la charge entre les réplicas.
Sessions persistantes
labels:
- "traefik.http.services.api.loadbalancer.sticky.cookie=true"
- "traefik.http.services.api.loadbalancer.sticky.cookie.name=server_id"
Vérifications de santé
labels:
- "traefik.http.services.api.loadbalancer.healthcheck.path=/health"
- "traefik.http.services.api.loadbalancer.healthcheck.interval=10s"
Routage basé sur le chemin
labels:
- "traefik.http.routers.api.rule=Host(`domain.com`) && PathPrefix(`/api`)"
- "traefik.http.routers.web.rule=Host(`domain.com`) && PathPrefix(`/`)"
Supprimer le préfixe de chemin
labels:
- "traefik.http.middlewares.strip-api.stripprefix.prefixes=/api"
- "traefik.http.routers.api.middlewares=strip-api"
/api/users devient /users pour le backend.
Certificats wildcard
Pour *.domain.com :
# traefik.yml
certificatesResolvers:
letsencrypt:
acme:
email: you@domain.com
storage: /acme.json
dnsChallenge:
provider: cloudflare
# docker-compose.yml
environment:
- CF_API_EMAIL=you@domain.com
- CF_API_KEY=your-api-key
Ensuite utilisez :
labels:
- "traefik.http.routers.web.tls.certresolver=letsencrypt"
- "traefik.http.routers.web.tls.domains[0].main=domain.com"
- "traefik.http.routers.web.tls.domains[0].sans=*.domain.com"
Configuration basée sur fichier
Pour les services non-Docker, utilisez le fournisseur de fichiers :
# /opt/traefik/config/external.yml
http:
routers:
external-service:
rule: "Host(`external.domain.com`)"
service: external-service
tls:
certResolver: letsencrypt
services:
external-service:
loadBalancer:
servers:
- url: "http://192.168.1.100:8080"
Traefik surveille le répertoire de configuration et recharge automatiquement.
Métriques et surveillance
Activer les métriques
# traefik.yml
metrics:
prometheus:
entryPoint: metrics
buckets:
- 0.1
- 0.3
- 1.2
- 5.0
entryPoints:
metrics:
address: ":8082"
Tableau de bord Grafana
Utilisez l’ID de tableau de bord 11462 pour les métriques Traefik. Pour une configuration complète de surveillance Grafana, consultez notre guide dédié.
Journaux d’accès
# traefik.yml
accessLog:
filePath: "/var/log/traefik/access.log"
format: json
filters:
statusCodes:
- "400-599"
bufferingSize: 100
Montez le répertoire de journaux :
volumes:
- ./logs:/var/log/traefik
Dépannage
Conteneur non découvert
- Vérifiez le réseau :
docker network inspect traefik-public
- Vérifiez les labels :
docker inspect container_name | grep -A 50 Labels
- Vérifiez que
traefik.enable=trueest présent
SSL ne fonctionne pas
- Vérifiez le journal ACME :
docker logs traefik 2>&1 | grep -i acme
-
Vérifiez les permissions de acme.json (600)
-
Assurez-vous que le port 80 est ouvert pour le challenge HTTP
502 Bad Gateway
- Vérifiez que le conteneur est en cours d’exécution
- Vérifiez que le port est correct dans les labels
- Consultez les journaux du conteneur
Voir la configuration active
Le tableau de bord affiche tous les routeurs, services et middlewares. Ou bien :
curl http://localhost:8080/api/http/routers
Checklist de production
- Tableau de bord protégé par authentification
- acme.json avec permissions 600
- Journaux d’accès activés
- Métriques pour la surveillance
- Vérifications de santé configurées
- Limitation de débit sur les API publiques
- Middleware d’en-têtes de sécurité
- Isolation réseau appropriée
Meilleur VPS pour Traefik
Traefik en lui-même est minuscule. Dimensionnez en fonction de vos services :
| Fournisseur | Offre | Prix | Idéal pour |
|---|---|---|---|
| Hetzner | CX21 | 5,39 € | 5-10 services |
| Hostinger | KVM1 | 4,99 $ | Configuration économique |
| Vultr | VC2 | 12 $ | Portée mondiale |
FAQ
Traefik vs Nginx Proxy Manager ?
Traefik pour les configurations natives Docker. NPM pour une configuration plus simple via interface graphique.
Combien de services Traefik peut-il gérer ?
Des centaines facilement. Il est conçu pour les microservices à grande échelle.
Traefik est-il sécurisé ?
Oui. N’exposez pas l’API sans authentification. Maintenez-le à jour.
Puis-je migrer depuis Nginx ?
Oui. Une migration progressive est possible — exécutez les deux temporairement.
Traefik supporte-t-il HTTP/3 ?
Oui, depuis la v3.0. Activez-le dans la configuration des points d’entrée.
Résumé
Traefik automatise ce que vous configureriez manuellement dans Nginx :
| Tâche | Nginx | Traefik |
|---|---|---|
| Ajouter un service | Modifier la config, recharger | Ajouter des labels |
| Obtenir le SSL | Exécuter certbot | Automatique |
| Répartir la charge | Configurer l’upstream | Automatique |
| Supprimer un service | Modifier la config, recharger | Arrêter le conteneur |
Pour les déploiements Docker, Traefik est le choix moderne. Configurez-le une fois, ajoutez des services avec des labels pour toujours. Pour un workflow de déploiement complet, associez-le avec Docker Compose.
Ready to get started?
Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.
Get Hostinger VPS — $4.99/mo// up to 75% off + free domain included
// related topics
// related guides
$1 VPS Hosting 2026: Cheapest VPS Servers Starting at $1/Month
Looking for $1 VPS hosting? Compare the cheapest VPS providers starting from $1-3/month. Real specs, no hidden fees, honest reviews of budget VPS options.
tutorialCaddy Reverse Proxy Guide 2026: Automatic HTTPS Made Easy
Set up Caddy as a reverse proxy with automatic HTTPS, zero-config SSL, and simple Caddyfile syntax. Complete VPS deployment guide.
tutorialCloudflare Tunnel VPS Guide 2026: Expose Services Without Opening Ports
Set up Cloudflare Tunnel on your VPS to expose web apps securely without opening ports or revealing your server IP. Complete guide with Docker and DNS config.
tutorialCoolify VPS Setup Guide 2026: Self-Hosted Vercel Alternative
Deploy Coolify on your VPS for a self-hosted Vercel/Netlify experience. Complete setup guide with Docker, SSL, and app deployments.
Andrius Putna
I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.
// last updated: February 8, 2026. Disclosure: This article may contain affiliate links.