Tous les services opérationnels Devise EUR Aucun frais de mise en service Vous êtes à La Réunion ?
‹ Serveurs VPS et Docker

Traefik : reverse proxy pour Docker, pas à pas

Traefik est un proxy inverse qui lit les étiquettes de vos conteneurs Docker : vous écrivez dans le fichier compose d'une application le nom de domaine qui doit la servir, et Traefik crée la route, obtient le certificat Let's Encrypt et redirige le HTTP vers le HTTPS. Il s'installe en un seul conteneur, à côté de vos applications. Rien ne se règle dans une interface : tout passe par les fichiers compose.

Par Jonathan Dewaele · publié le

Ce guide suit la documentation officielle de Traefik, relue le 14 octobre 2026 : Exposer des services avec Docker, sa suite avancée avec Let's Encrypt et la référence des résolveurs ACME. La dernière version publiée est la 3.7.14 ; les fichiers ci-dessous utilisent l'étiquette traefik:v3.7. Il faut Docker Engine et son extension Compose.

Ce qu'il faut avant de commencer

  • Un nom de domaine dont l'enregistrement A pointe vers l'adresse du serveur : voir Pointer un nom de domaine vers son VPS.
  • Les ports 80 et 443 joignables depuis Internet, et libres sur le serveur. Let's Encrypt valide le domaine en passant par le port 80.
  • Aucun autre proxy inverse en service. Un seul programme peut écouter sur 80 et 443 : si Nginx Proxy Manager ou Dokploy tourne déjà, il occupe la place.

Installer Traefik

  1. Créez un dossier pour Traefik et placez-vous dedans : mkdir -p ~/traefik/letsencrypt && cd ~/traefik
  2. Créez le fichier compose.yaml avec le contenu ci-dessous, en remplaçant l'adresse e-mail par la vôtre. Let's Encrypt s'en sert pour vous prévenir d'un problème de certificat.
  3. Lancez Traefik : docker compose up -d
  4. Suivez son démarrage : docker compose logs -f traefik, puis Ctrl+C pour quitter l'affichage.
services:
  traefik:
    image: traefik:v3.7
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.network=proxy"
      - "--entryPoints.web.address=:80"
      - "--entryPoints.websecure.address=:443"
      - "--entryPoints.websecure.http.tls=true"
      - "--entryPoints.web.http.redirections.entryPoint.to=websecure"
      - "--entryPoints.web.http.redirections.entryPoint.scheme=https"
      - "[email protected]"
      - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
      - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"
    networks:
      - proxy

networks:
  proxy:
    name: proxy

Ce que font les lignes importantes :

RéglageRôle
exposedbydefault=falseaucun conteneur n'est publié sans l'étiquette traefik.enable=true
network=proxyTraefik joint les applications par le réseau Docker nommé proxy
web et websecureles points d'entrée sur les ports 80 et 443
redirectionstoute visite en HTTP part vers le HTTPS
certificatesresolvers.lele résolveur Let's Encrypt, nommé le, et le fichier où il garde les certificats

Le dossier letsencrypt conserve les certificats obtenus. Gardez-le : sans lui, Traefik redemande tous les certificats à chaque recréation du conteneur.

Publier une application

Chaque application rejoint le réseau proxy et porte quatre étiquettes. L'exemple utilise traefik/whoami, la petite application de test de Traefik, en version 1.12, la dernière publiée sur Docker Hub au 14 octobre 2026, qui affiche les en-têtes de la requête reçue.

  1. Dans un autre dossier, créez le compose.yaml de l'application, en remplaçant test.votre-domaine.fr par votre sous-domaine.
  2. Lancez-la : docker compose up -d
  3. Ouvrez https://test.votre-domaine.fr dans le navigateur : la page de whoami s'affiche, en HTTPS.
services:
  whoami:
    image: traefik/whoami:v1.12
    restart: unless-stopped
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`test.votre-domaine.fr`)"
      - "traefik.http.routers.whoami.entrypoints=websecure"
      - "traefik.http.routers.whoami.tls.certresolver=le"

networks:
  proxy:
    external: true

external: true indique à Compose que le réseau proxy existe déjà, créé par le fichier de Traefik. Le mot whoami dans les étiquettes est le nom du routeur : donnez à chaque application un nom différent.

Quand le conteneur écoute sur plusieurs ports, ou que Traefik ne devine pas le bon, précisez-le par une cinquième étiquette, ici pour une application sur le port 3001 comme Uptime Kuma :

      - "traefik.http.services.monapp.loadbalancer.server.port=3001"

Points de vigilance

  • Le socket Docker. Le fichier donne à Traefik l'accès en lecture à /var/run/docker.sock, comme le fait la documentation. Ce socket permet de piloter Docker : un conteneur qui y accède a beaucoup de pouvoir sur le serveur. Gardez l'image de Traefik à jour, voir Mettre à jour un conteneur Docker.
  • Ne publiez plus les ports des applications. Une application servie par Traefik n'a pas besoin de section ports: : le trafic arrive par le réseau proxy.
  • Le tableau de bord de Traefik n'est pas activé dans ce fichier. Il ne sert qu'à lire les routes ; s'il vous manque, ne l'ouvrez jamais sans protection sur Internet. Une interface d'administration peut aussi n'être joignable que par un VPN, voir WireGuard.

Sur un VPS Hubspace

Docker et Compose sont installés à la livraison, et le compte admin les utilise sans sudo. Le pare-feu réseau placé devant le serveur ouvre déjà 80 et 443, ceux dont Traefik a besoin, et garde fermés tous les autres ports, y compris ceux que Docker publie : un port d'application oublié dans un fichier compose n'est donc pas exposé. La sauvegarde quotidienne du serveur comprend le dossier letsencrypt tant qu'il est sur le disque du serveur, et non sur un disque supplémentaire monté sur /mnt/data, qui n'est pas sauvegardé. Les serveurs VPS décrivent ce qui est livré.

Questions fréquentes

Traefik ou Nginx Proxy Manager ?

Les deux font le même travail. Nginx Proxy Manager se règle dans une interface web, Traefik dans les fichiers compose de vos applications. Si vous décrivez déjà tout en Compose, Traefik évite d'aller cliquer à chaque nouvelle application. Un seul des deux peut tourner sur le serveur.

Le certificat ne s'obtient pas, que vérifier ?

Lisez les journaux avec docker compose logs traefik. Les causes habituelles : le domaine ne pointe pas encore vers le serveur (dig +short test.votre-domaine.fr), le port 80 n'est pas joignable depuis Internet, ou l'application n'est pas sur le réseau proxy.

Faut-il un routeur par sous-domaine ?

Non. Une même règle accepte plusieurs noms reliés par ||, comme ci-dessous. Un routeur à part ne se justifie que si un sous-domaine doit mener à une autre application.

`` - "traefik.http.routers.whoami.rule=Host(a.votre-domaine.fr) || Host(b.votre-domaine.fr)" ``

Articles liés