Aller au contenu principal

Traefik

Reverse proxy avec TLS automatique via Let's Encrypt et DNS challenge Cloudflare.

Acces​

URLhttps://traefik.home.gabin-simond.fr (dashboard)
Hostpenny (Docker)
Imagetraefik:latest (digest pinned)
Port interne8080 (dashboard, non exposé)
AuthForwardAuth Authelia

Fonctionnement​

Schéma agrandi
100 %

Configuration​

Traefik est configuré via :

  • Labels Docker sur chaque conteneur — definissent les routes (services sur penny)
  • File provider (traefik/dynamic/) — routes vers les services hors Docker (Proxmox, LXC)
  • traefik.yml — configuration statique (entrypoints, certresolver, middlewares)
  • Variables d'env — CF_API_EMAIL et CF_DNS_API_TOKEN pour le DNS challenge

Entrypoints​

EntrypointPortUsage
web80HTTP (redirige automatiquement vers HTTPS)
websecure443HTTPS (TLS)

Labels Docker (template)​

labels:
- "traefik.enable=true"
- "traefik.http.routers.SERVICE.rule=Host(`service.home.gabin-simond.fr`)"
- "traefik.http.routers.SERVICE.entrypoints=websecure"
- "traefik.http.services.SERVICE.loadbalancer.server.port=PORT_INTERNE"
- "traefik.http.routers.SERVICE.tls=true"
- "traefik.http.routers.SERVICE.tls.certresolver=letencrypt"

File provider (services externes)​

Routes vers Proxmox et LXC dans traefik/dynamic/ :

FichierServiceBackend
proxmox.ymlgalahad / lancelothttps://192.168.1.18:8006 / https://192.168.1.19:8006
adguard.ymlAdGuard (host mode)http://192.168.1.28:3000

Les services file provider utilisent un serversTransport dedie avec insecureSkipVerify (les certs Proxmox sont auto-signes). Ce transport est scope — pas applique globalement.

Middlewares​

Global (applique sur websecure)​

  • security-headers : HSTS, X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy restrictive
Pas de CSP global

La CSP a été retirée du middleware global après des incompatibilités avec les SPA, notamment Proxmox et les anciens services Beszel et Portainer. Voir la décision technique.

Spécifiques (par route)​

MiddlewareUsageCible
autheliaForwardAuth SSOTraefik dashboard, Homepage, AdGuard
auth-rate-limit100 req/s burst SPAauth.home.gabin-simond.fr
Routes PVE sans security headers

Les routes Proxmox n'ont AUCUN security header Traefik — ExtJS et COOP sont incompatibles.

TLS hardening​

  • Certificats : Let's Encrypt via DNS challenge Cloudflare
  • CAA records DNS : letsencrypt.org uniquement + iodef mailto:
  • minVersion : TLS 1.2 (TLS 1.3 actif par defaut)
  • Cipher suites : Mozilla intermediate (ChaCha20 + AES-GCM, ECDHE only)
  • Curves : X25519, P256, P384
  • sniStrict : rejette les requêtes avec SNI non-route
  • Redirect HTTP → HTTPS : tout le trafic port 80 redirige vers 443

Pour les détails TLS et certificats, voir le guide TLS.

Réseau​

Tous les services proxifies sont sur le réseau Docker proxy (bridge). AdGuard utilise le réseau Docker host. Tailscale est installé nativement sur l’hôte. Les agents Beszel ont été retirés le 2026-11-03 ; voir la fiche archivée. AdGuard (host mode) est route via le file provider.

Fichiers​

FichierEmplacement
Config statique/mnt/ssd/config/traefik/traefik.yml
Routes dynamiques/mnt/ssd/config/traefik/dynamic/*.yml
CertificatsVolume traefik-certs → /certs/acme.json
LogsVolume traefik-data