{{tag>webadmin sysadmin docker Traefik todo}}
====== 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 =====
* https://community.traefik.io/t/impossible-to-get-basic-auth-for-dashboard/5075