Aller au contenu principal
Traefik Docker Swarm Reverse Proxy - Knowledges
⭐ Vedette

Traefik sur Docker Swarm - Reverse Proxy Moderne

3min
Temps de lecture
100
Lectures
10
Commentaires
OwlSystems

OwlSystems

Date de publication

TL;DR

Guide complet pour installer et configurer Traefik comme reverse proxy avec Docker Swarm, gestion SSL automatique et dashboard

Traefik sur Docker Swarm - Reverse Proxy Moderne

Aucune installation système requise - Cette méthode utilise l'image Docker officielle de Traefik, évitant toute installation de paquets système ou dépendances complexes sur l'hôte. Traefik s'exécute entièrement en conteneur, garantissant isolation et facilité de mise à jour.

Installation avec Docker Swarm

Structure du projet

mkdir -p /cephfs/services/traefik
cd /cephfs/services/traefik

Fichier docker-compose.yml

version: '3.8'

services:
  proxy:
    image: "traefik:latest"

    command:
      - "--log.level=INFO"
      - "--accesslog=true"
      - "--api.insecure=true"
      - "--api.dashboard=true"
      - "--providers.docker=true"
      - "--providers.swarm.endpoint=unix:///var/run/docker.sock"
      - "--providers.docker.exposedbydefault=false"
      - "--entryPoints.web.address=:80"
      - "--entryPoints.websecure.address=:443"
      - "--entrypoints.web.http.redirections.entrypoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--certificatesResolvers.letsencrypt.acme.httpChallenge=true"
      - "--certificatesResolvers.letsencrypt.acme.httpChallenge.entryPoint=web"
      - "--certificatesResolvers.letsencrypt.acme.email=*********"
      - "--certificatesResolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
    #   - "--certificatesResolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"

    ports:
      - "80:80"
      - "443:443"

    deploy:
      replicas: 1
      update_config:
        parallelism: 1
        delay: 10s
        order: start-first
      restart_policy:
        condition: on-failure
      labels:
        - "traefik.enable=true"
        - "traefik.http.middlewares.auth.basicAuth.users=admin:PASSWORD"
        - "traefik.http.services.traefik.loadbalancer.server.port=8080"

        # Dashboard Traefik
        - "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.domain.tld`)"
        - "traefik.http.routers.traefik-dashboard.entrypoints=websecure"
        - "traefik.http.routers.traefik-dashboard.middlewares=auth"
        - "traefik.http.routers.traefik-dashboard.tls=true"
        - "traefik.http.routers.traefik-dashboard.tls.certresolver=letsencrypt"
        - "traefik.http.routers.traefik-dashboard.service=api@internal"

    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"

    networks:
      - traefik-network

networks:
  traefik-network:
    external: true

Déploiement

1. Créer le réseau Docker

docker network create -d overlay traefik-network

2. Créer le dossier des certificats

mkdir letsencrypt
chmod 600 letsencrypt

3. Déployer le stack

docker stack deploy -c docker-compose.yml traefik

4. Vérifier le déploiement

docker service ls
docker service logs traefik_proxy

Configuration Détaillée

Commandes Traefik Expliquées

Providers Docker

- "--providers.docker=true"
- "--providers.swarm.endpoint=unix:///var/run/docker.sock"
- "--providers.docker.exposedbydefault=false"
  • Pourquoi : Traefik découvre automatiquement les services Docker
  • Swarm : Spécifique pour l'orchestration Docker Swarm
  • exposedbydefault=false : Sécurité - seuls les services avec labels Traefik sont exposés

EntryPoints et Redirections

- "--entryPoints.web.address=:80"
- "--entryPoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
  • web : Port 80 pour HTTP et challenges Let's Encrypt
  • websecure : Port 443 pour HTTPS
  • Redirections : Redirige automatiquement HTTP vers HTTPS

Let's Encrypt SSL Automatique

- "--certificatesResolvers.letsencrypt.acme.httpChallenge=true"
- "--certificatesResolvers.letsencrypt.acme.httpChallenge.entryPoint=web"
- "--certificatesResolvers.letsencrypt.acme.email=admin@owlsys.fr"
- "--certificatesResolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
  • httpChallenge : Validation via HTTP pour les certificats SSL
  • email : Pour les notifications d'expiration
  • storage : Fichier de stockage des certificats

Sécurité Dashboard

- "traefik.http.middlewares.auth.basicAuth.users=admin:PASSWORD"
  • Basic Auth : Protection par mot de passe du dashboard
  • Générer un password : htpasswd -nB admin

Utilisation avec les Services

Exemple : Service WordPress

services:
  wordpress:
    image: wordpress:latest
    deploy:
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.wordpress.rule=Host(`mon-site.domain.tld`)"
        - "traefik.http.routers.wordpress.entrypoints=websecure"
        - "traefik.http.routers.wordpress.tls=true"
        - "traefik.http.routers.wordpress.tls.certresolver=letsencrypt"
        - "traefik.http.services.wordpress.loadbalancer.server.port=80"
    networks:
      - traefik-network

Dépannage

Vérifier l'état des services

docker service ps traefik_proxy
docker service logs traefik_proxy --tail 50

Vérifier les certificats Let's Encrypt

docker exec $(docker ps -q --filter "name=traefik") cat /letsencrypt/acme.json

Accéder au Dashboard

  • URL : https://traefik.domain.tld
  • Authentification : Basic Auth avec les identifiants configurés

Mode Staging (Test)

Pour tester sans risquer les limites Let's Encrypt :

- "--certificatesResolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"

Avantages de cette Configuration

  • SSL Automatique avec Let's Encrypt
  • Redirection HTTP→HTTPS transparente
  • Découverte automatique des services
  • Dashboard de monitoring
  • Haute disponibilité avec Docker Swarm
  • Sécurisé : Basic Auth et exposition selective

Cette configuration fournit un reverse proxy production-ready avec gestion automatique des certificats SSL.

OwlSystems

OwlSystems

Parcours méthodologique
10 rue de la mare boutillier
Grisy-Suisnes, 77166
(prix d'un appel local / WhatsApp)
Contactez-nous
Nos bureaux

Présents à Paris et dans toute l'Île-de-France pour vous accompagner

Actualités

Restez informé des dernières actualités cybersécurité

Follow Us