Cet article concerne Traefik pour Docker Containers.
Présentation de la configuration
Comment la magie opère
Traefik pour les conteneurs Docker
Si vous n'avez pas encore installé Docker, vous pouvez trouver des instructions pour Ubuntu ou Debian. Ce guide utilise docker-compose pour exécuter Traefik, il est donc nécessaire d'installer également docker-compose. Les deux guides liés vous aideront à configurer docker-compose sur votre propre hôte.
Commençons par configurer Traefik.
Tout d'abord, créez quelques fichiers et répertoires de dossiers pour nos conteneurs :
mkdir -p /opt/containers/traefik
mkdir /opt/containers/traefik/data
touch /opt/containers/traefik/data/traefik.yml
touch /opt/containers/traefik/data/acme.json
chmod 600 /opt/containers/traefik/data/acme.json
Générer un mot de passe sécurisé
Créez un fichier de configuration et configurez un mot de passe crypté pour accéder au tableau de bord traefik. Vous pouvez utiliser l'utilitaire htpasswd pour créer le mot de passe crypté. Pour utiliser l'utilitaire htpasswd, installez l'utilitaire avec la commande suivante
$ sudo apt-get install -y apache2-utils
Exécutez ensuite la commande suivante pour générer le mot de passe sécurisé
$sudo htpasswd -nb unixcop unixcop@123
unixcop:$$apr1$$zUb/YuK2$$57psQ0U71DlfdHPr0yoHe/
J'ai utilisé "unixcop @ 123" pour chiffrer. Vous pouvez avoir vos propres hypothèses. L'utilisateur est considéré comme "unixcop", vous pouvez le remplacer par votre propre nom d'utilisateur.
Copiez la sortie générée automatiquement et enregistrez-la quelque part car nous devons utiliser ce mot de passe crypté dans le fichier de configuration Traefik pour configurer l'authentification de base pour le tableau de bord Traefik
traefik.yml
Ensuite, nous ouvrons notre fichier de configuration traefik nouvellement créé avec un éditeur de votre choix.
vim /opt/containers/traefik/data/traefik.yml
api:
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
http:
acme:
email: [email protected] # CHANGE HERE
storage: acme.json
httpChallenge:
entryPoint: http
Créez un docker-compose.yml
fichier où vous définirez un reverse-proxy
service qui utilise l'image officielle Traefik :
docker-compose.yml
version: '3'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`traefik.domain.tld`)"
- "traefik.http.middlewares.traefik-auth.basicauth.users=unixcop:$$apr1$$zUb/YuK2$$57psQ0U71DlfdHPr0yoHe"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.domain.tld`)"
- "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.certresolver=http"
- "traefik.http.routers.traefik-secure.service=api@internal"
networks:
proxy:
external: true
Avec notre docker-compose.yml, nous définissons le conteneur docker Traefik avec tous les paramètres et fichiers de configuration. Pour que Traefik soit opérationnel, il vous suffit d'ajuster certains paramètres :
- remplacer les deux
traefik.domain.tld
avec votre propre nom de domaine. Ce domaine doit être un sous-domaine comme traefik.ae3.ch par exemple. Plus tard, vous pourrez accéder à Traefik Dasboard avec ce (sous-)domaine.
Créer un réseau Docker pour Traefik
C'est une bonne idée de configurer un réseau Docker séparé qui est utilisé par Traefik et tous les autres conteneurs Docker que vous souhaitez mettre à disposition par Traefik.
Pour créer ce réseau Docker, il vous suffit de coller la commande suivante dans votre CLI :
docker network create proxy
Exécuter Traefik
docker-compose up -d
Après quelques secondes, vous pouvez vérifier et accéder à votre tableau de bord Traefik sur votre domaine personnalisé que vous avez entré dans votre docker-compose.yml