Traefik, Nginx ou Caddy : lequel choisir ?
À quoi ça sert
Un reverse proxy est le point d'entrée unique de ton serveur : il reçoit tout le trafic HTTP/HTTPS et le route vers le bon service selon le nom de domaine demandé. C'est aussi lui qui gère les certificats TLS — un seul endroit pour le HTTPS, au lieu d'un par service.
Les trois candidats
Traefik est pensé pour les conteneurs. Il lit les labels de tes services Docker et crée les routes tout seul : tu ajoutes un conteneur avec 3 labels, il est en ligne avec HTTPS automatique (Let's Encrypt). Zéro reload, zéro fichier de conf par service. La contrepartie : la configuration initiale (fichier statique + labels dynamiques) demande un petit temps d'apprentissage, et le débogage peut être opaque au début.
Nginx est la référence historique : ultra-performant, présent partout, documenté à l'infini — la moindre erreur a déjà sa réponse sur Stack Overflow. Mais tout est manuel : un bloc server par service, un reload à chaque changement, et le HTTPS passe par certbot (un outil séparé, avec son cron de renouvellement). Ça marche très bien, mais ça ne s'automatise pas tout seul.
Caddy est le champion de la simplicité : HTTPS automatique par défaut (littéralement zéro config pour les certificats) et un Caddyfile de 3 lignes pour proxifier un service. Son écosystème est plus petit, et la découverte Docker native n'existe pas dans le binaire officiel (il faut un plugin tiers comme caddy-docker-proxy).
Tableau de synthèse
| Critère | Traefik | Nginx | Caddy |
|---|---|---|---|
| HTTPS auto | ✅ intégré (Let's Encrypt) | ❌ via certbot | ✅ intégré, zéro config |
| Découverte Docker | ✅ native (labels) | ❌ config manuelle | ⚠️ plugin tiers |
| Config | Moyenne (labels + statique) | Verbeuse, un fichier par service | Minimale (Caddyfile) |
| Écosystème | Grand, orienté conteneurs | Immense, ubiquitaire | Plus petit, en croissance |
Notre choix pour le parcours
Traefik. Le parcours jiha.tech est centré sur Docker, et c'est exactement là que Traefik brille : chaque service que tu déploieras (Vaultwarden, Immich, monitoring…) s'expose avec quelques labels dans son docker-compose.yml, sans jamais toucher à la config du proxy. Tu apprends une fois, tu réutilises partout — et c'est le pattern que tu retrouveras en entreprise sur les stacks conteneurisées.
# Exposer un service avec Traefik = 3 labels / Exposing a service with Traefik = 3 labels
services:
app:
image: myapp:latest
labels:
- "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`app.mondomaine.fr`)"
- "traefik.http.routers.app.tls.certresolver=letsencrypt"Quand choisir autre chose
- Caddy si tu n'utilises pas (ou peu) Docker, ou si tu veux le HTTPS le plus simple du marché pour 2-3 services statiques. Pour un premier serveur sans conteneurs, c'est imbattable.
- Nginx si tu vises la performance brute (très fort trafic, cache fin, tuning), si ton hébergeur/ta boîte l'impose, ou si tu veux apprendre l'outil que tu croiseras dans 80 % des infras existantes.
- Et si tu as déjà un proxy qui marche : garde-le. Migrer un reverse proxy fonctionnel juste pour la hype est rarement un bon investissement.