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:
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 '$'
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