Outils pour utilisateurs

Outils du site


sysadmin:docker:traefik:dashboard

Traefik: le dashboard

Accès sans authentification

Pour accéder facilement au tableau de bord sur un réseau sécurisé, on peut créer le conteneur Traefik avec l'option --api=insecure. Le dashboard sera disponible sur le port 8080:

Sécuriser l'accès au tableau de bord

Dans le fichier ci-dessous le dashboard ne sera accessible qu'en HTTPS après authentification (grâce à l'utilisation du middleware basicauth):

version: '3'

services:
  traefik:
    # On utilise l'image Docker officielle Traefik v2
    image: traefik:v2.4
    container_name: traefik
    restart: always
    ports:
      # Le port HTTP (point entrant unique des requêtes web)
      - "80:80"
      - "443:443"
    volumes:
      # Montage en lecture le fichier de configuration statique
      - ./traefik/conf/traefik.toml:/etc/traefik/traefik.toml:ro
      # Montage en lecture du dossier des configurations dynamiques
      - ./traefik/conf/dynamic/:/etc/traefik/dynamic/:ro
      # Montage en lecture le dossier de stockage des certificats
      - ./certs/:/etc/certs/:ro
      # Traefik écoute l'orchestrateur local Docker via le mapping suivant
      - /var/run/docker.sock:/var/run/docker.sock:ro

    labels:
      # Dashboard
      - traefik.enable=true
      - traefik.docker.network=labinfo
      - traefik.http.routers.dashboard.entrypoints=HTTPS
      - traefik.http.routers.dashboard.tls=true
      - traefik.http.routers.dashboard.rule=Host(`traefik.labinfo.mairie.local`)
      - traefik.http.routers.dashboard.service=api@internal
      - traefik.http.middlewares.auth.basicauth.users=`admin:$apr1$QbRRQO7i$h9Qzt3ox47ZB233g8PeIa1`
      - traefik.http.routers.dashboard.middlewares=auth

    networks:
      - labinfo
 

networks:
  labinfo:
    external: true

A vérifier échappement des caractères '$'

Le label traefik.http.middlewares.auth.basicauth.users contient les couples utilisateur/mot de passe nécessaires pour s'authentifier. Les caractères '$' doivent être doublés pour ne pas être interprétés comme des noms de variables à remplacer.

Pour vérifier que la chaine est bien complète:

$ grep -i basicauth.users docker-compose.yml

On crée un conteneur éphémère pour générer un couple utilisateur mot de passe pour le middleware basicauth:

docker container run -it --rm --name password_gen debian:stretch-slim /bin/bash
 
apt-get update && apt-get install -y apache2-utils
 
# saisir et confirmer un mot de passe pour l'utilisateur admin
# la sortie sera affichée dans la console
htpasswd -n admin

Référence

sysadmin/docker/traefik/dashboard.txt · Dernière modification : 2022/01/17 23:13 de yoann