Traefik : Premières Impressions et Retour d’Expérience

Par Mathéo Pawelec, Étudiant

Traefik : Retour sur mes premiers pas

Si Ansible m’a aidé à déclarer l’état souhaité de mes machines, il me fallait encore un moyen simple et automatique de router le trafic HTTP/HTTPS vers mes différents services (Docker, VMs, bare-metal). Après plusieurs recommandations, j’ai plongé dans Traefik, un reverse-proxy / ingress controller écrit en Go.

Pourquoi j’ai choisi Traefik ?

  • Configuration dynamique : Traefik interroge en continu vos providers (Docker, Kubernetes, fichiers…) et met à jour les routes à la volée — fini le nginx -s reload dès qu’un conteneur apparaît.
  • Let’s Encrypt intégré : génération + renouvellement des certificats sans script maison.
  • Tableau de bord clair : on visualise routes, middlewares et points d’entrée en temps réel.
  • Support natif de Docker/K8s : trois labels suffisent pour exposer un service.

Mes premières découvertes

  1. Installation express

    docker network create traefik
    docker compose -f traefik.yml up -d
    
  2. Statique vs dynamique Statique : ports, providers, ACME. Dynamique : règles de routage, middlewares, certificats — modifiables sans redémarrage.

  3. Labels Docker Exemple minimal :

    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.blog.rule=Host(`blog.example.com`)"
      - "traefik.http.services.blog.loadbalancer.server.port=3000"
    
  4. Let’s Encrypt en 30 s : un certresolver=le dans les labels + une adresse mail → Traefik s’occupe du reste.

  5. Middlewares : redirection HTTPS, headers de sécurité, auth basique… déclarables via YAML ou un label.


Exemple complet : Traefik + Vaultwarden en HTTPS

1. Stack Traefik (traefik.yml)

services:
  traefik:
    image: traefik:v3.0
    restart: unless-stopped
    command:
      - '--providers.docker=true'
      - '--providers.docker.exposedByDefault=false'
      - '--entrypoints.web.address=:80'
      - '--entrypoints.websecure.address=:443'
      - '[email protected]'
      - '--certificatesresolvers.le.acme.storage=/certs/acme.json'
      - '--certificatesresolvers.le.acme.tlschallenge=true'
      - '--api.dashboard=true'
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock:ro'
      - './certs:/certs'
    networks:
      - traefik

networks:
  traefik:
    external: true

Pourquoi ? Deux entrypoints (web, websecure), Let’s Encrypt stocké dans acme.json, détection automatique des conteneurs Docker.

2. Service exposé : Vaultwarden (vaultwarden.yml)

version: '3.9'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped

    environment:
      WEBSOCKET_ENABLED: "true"
      DOMAIN: "https://vault.example.com"          # replace with your domain
      SMTP_HOST: "smtp.example.net"
      SMTP_FROM: "[email protected]"
      SMTP_PORT: "587"
      SMTP_SECURITY: "starttls"
      SMTP_USERNAME: "smtp-user"
      SMTP_PASSWORD: "smtp-pass"

    volumes:
      - ./bw-data:/data
    networks:
      - traefik

    labels:
      - 'traefik.enable=true'
      - 'traefik.http.routers.vault.rule=Host(`vault.example.com`)'
      - 'traefik.http.routers.vault.entrypoints=websecure'
      - 'traefik.http.routers.vault.tls.certresolver=le'
      - 'traefik.http.services.vault.loadbalancer.server.port=80'
      # (optionnel) redirection HTTP→HTTPS
      - 'traefik.http.routers.vault.middlewares=vault-redirect'
      - 'traefik.http.middlewares.vault-redirect.redirectscheme.scheme=https'

networks:
  traefik:
    external: true

Étapes :

  1. Démarrez les stacks :

    docker compose -f traefik.yml up -d
    docker compose -f vaultwarden.yml up -d
    
  2. Traefik détecte vaultwarden, crée un router HTTPS, obtient un certificat Let’s Encrypt et applique la redirection.

  3. L’instance est accessible en HTTPS :

https://vault.example.com

Sans redémarrage, sans script externe : Traefik orchestre tout.


Ce que j’aime le plus

  • Zéro redémarrage : ajouter/modifier un service n’interrompt aucune connexion.
  • Dashboard temps réel : debug ultra-simple, on voit immédiatement les règles actives.
  • Certificats auto-gérés : adieu les cron de renouvellement Let’s Encrypt.

Ce qui m’a (un peu) déplu

FrictionDétail
Labels verbeuxUn service complexe → 10-15 labels ; ça pique les yeux.
Hiérarchie K8sEntrypoint → Router → Middleware → Service : il faut l’assimiler.
Priorités multi-providerDocker + K8s + File : attention aux conflits de règles.

Pistes à explorer

  • Plugins Traefik : middlewares custom (rate-limit avancé, OAuth…).
  • ForwardAuth + Keycloak : SSO pour l’ensemble des services.
  • Metrics Prometheus : exporter les stats pour un monitoring fin.
  • Fail-over multi-nœud : tester Traefik en swarm ou K8s haute-dispo.

Conclusion : débuts très prometteurs

En quelques jours, Traefik a remplacé mes configs Nginx artisanales ; désormais :

  • Un reverse-proxy auto-découvrant mes conteneurs,
  • Des certificats SSL qui se renouvellent tout seuls,
  • Un dashboard visuel pour comprendre vite.

Les labels restent verbeux quand on pousse la granularité, mais la flexibilité et le temps gagné compensent largement. Prochaine étape : brancher l’auth centralisée et jouer avec les plugins communautaires !

Traefik s’impose comme un compagnon incontournable dans mon stack DevOps 2025.

Plus d'article

Shoegaze et Blackgaze : Exploration d’un Mur de Sons et d’Émotions

Ces derniers mois, j’ai replongé dans des styles musicaux que j’avais trop longtemps laissés de côté. Entre nappes sonores brumeuses et cris déchirants, j’ai redécouvert le shoegaze… et découvert le blackgaze. Voici un petit topo sur ces deux genres qui se rejoignent dans une forme d’introspection bruyante.

Lire la suite

Ansible : Premières Impressions et Retour d’Expérience

En début d’année, j’ai annoncé vouloir apprendre Ansible pour automatiser mes serveurs et gagner du temps. Après quelques semaines de pratique, voici mon mini débrief sur ce que j’ai découvert jusqu’à présent, en mettant l’accent sur la configuration et un exemple concret de playbook axé sécurité Nginx.

Lire la suite

Intéressé par un de mes services ? n'attendez plus !

Simplement curieux d'en apprendre davantage ? Venez discuter !

C'est avec plaisir que j'échangerai avec vous, répondant à toutes vos questions et partageant ma passion et mon histoire !