Installez le Reverse Proxy Traefik : Partie 1

Installez le Reverse Proxy Traefik : Partie 1
📌
J'adore le logo ! Traefik est une application open source de routage permettant de faire du reverse proxy a la manière de "Nginx reverse proxy" mais aussi de gérer le "Load balancer", des "middlewares", d’installer et d’automatiser les certificats "Let's Encrypt" et bien d’autres choses. Il a été créé par un français du nom d’Émile Vauge et est maintenu par une société française « Traefik Labs ».

Conditions d’installation "Conteneur Lxc"

L’installation est réalisée selon les critères suivants:

Le conteneur est un processus indépendant de son hôte, il utilise son propre système de manière isolé. Le fait qu'il soit "Unprivileged" veut dire que "normalement" il n'accède a aucune ressource de son hôte, L'utilisateur par défaut est "root" , il est possible de modifier ce fait , la manipulation n'est pas si aisée. "Nesting" autorise d'installer un autre conteneur a l’intérieur du conteneur. Pour finir, il est peut gourmand en ressource et du fait qu'il soit portable, il peut être déployer très rapidement...

  • Proxmox PVE 8.3
  • Conteneur "Unprivileged"
  • Nesting: Oui
  • Utilisateur root
  • Debian 12
  • Docker
  • Docker compose
⚠️
Pas de soucis particulier pour installer Traefik. Il faut porter attention à la rédaction des fichiers "yaml" particulièrement à l’indentation. C'est quoi ce mot barbare? En fait cela veut dire que le fichier est sensible au décalage de marge et de position.
Traefik Proxy Documentation - Traefik
Traefik Proxy, an open source Edge Router, auto-discovers configurations and supports major orchestrators, like Kubernetes. Read the technical documentation.
💡
Que va faire Traefik ? Traefik va permettre d’accéder a une application web qui se trouve sur votre réseau local. Lorsqu’il recevra une demande de l’extérieur, il fera la relation entre le sous domaine sécurisé et le service demandé. L’avantage de Traefik c’est qu’il va gérer plusieurs applications sur différents ports en même temps. Il s’occupe aussi entièrement les demandes et renouvellement des certificats « Let's Encrypt » pour chaque application et sous domaine. De plus il permet d’intégrer des middlewares, par exemple un middleware d’authentification pour renforcer l’accès depuis l’extérieur.

Comme d'habitude, afin de conserver toujours la même structure, je créé le répertoire d'installation dans "/opt/ comme suit :

# mkdir -p /opt/traefik

Traefik a besoin pour fonctionner de quatre éléments principaux :

  1. Un fichier "compose.yml" En dehors de l'image du conteneur de déploiement de l'application, on inscrira dans ce fichier la partie statique de la configuration de Traefik. On peut créer un fichier statique a part mais pour l'instant je vais au plus simple.
  2. Un fichier "acme.json" qui stocke les certificats tls.
  3. Un répertoire dynamique "traefik-dynamic » : Son contenu est pris en compte en temps réel.
  4. Un fichier de configuration dynamique "config.yaml" qui sera présent dans le répertoire créé juste avant et qui contient tous les routages et services de vos applications web.

On commence:

# touch /opt/traefik/compose.yml
# touch /opt/traefik/acme.json

  • Pour des principes de sécurité on rendra accessible ce fichier uniquement à l'utilisateur en cours :
    # chmod 600 acme.json[1]

# mkdir /opt/traefik/traefik-dynamic
Enfin, un petit dernier :
# touch /opt/traefik/traefik-dynamic/config.yaml

  • On va utiliser un réseau propre à Traefik, on va le créer comme suit :

# docker network create traefik_net

On va avoir besoin afin de sécuriser l'accès à la page web de Traefik, on va utiliser un middleware comme évoqué plus haut, on va pour l'instant se tourner vers "Basicauth" un simple authentifiant http,

  • On va aussi générer un identifiant et un mot de passe pour ce dernier en utilisant le docker suivant :

#docker run --rm --name apache httpd:alpine htpasswd -nb user mdp

Bien sûr , on remplace "user" et "mdp" par ses donnéés propres.

Cela donne ce résultat
# user:$apr1$SqXU6WDI$pLfLWOhRgLBol9UYBdZHa0

Petite remarque importante : Il faut doubler tous les $!!!


  1. chmod permet de changer les permissions d'accès d'un fichier ou répertoire. ↩︎

On peut , désormais créer notre contenu du fichier "compose.yml":


 1 version: '3'
 2 services:
 3   traefik:
 4     image: traefik:v2.4.8
 5     container_name: traefik
 6     restart: unless-stopped
 7     command:
 8       - "--providers.docker=true"
 9       - "--providers.docker.exposedbydefault=false"
10       - "--providers.file.directory=/etc/traefik/dynamic-conf"
11       - "--providers.file.watch=true"
12       - "--api.dashboard=true"
13       - "--entrypoints.web.address=:80"
14       - "--entrypoints.websecure.address=:443"
15       - "--entrypoints.web.http.redirections.entrypoint.to=websecure"
16       - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
17       - "--certificatesResolvers.letsencrypt.acme.email=email@exemple.tld"
18       - "--certificatesResolvers.letsencrypt.acme.storage=acme.json"
19       - "--certificatesResolvers.letsencrypt.acme.tlsChallenge=true"
20     labels:
21       - "traefik.enable=true"
22       - "traefik.http.routers.dashboard.rule=Host(`traefik.exemple.tld`)"
23       - "traefik.http.routers.dashboard.service=api@internal"
24       - "traefik.http.routers.dashboard.entrypoints=websecure"
25       - "traefik.http.routers.dashboard.middlewares=auth-dashboard"
26       - "traefik.http.middlewares.auth-dashboard.basicauth.users=admin:
            $$xxxxxxxxx$$xxjjgfy"  
27       - "traefik.http.routers.dashboard.tls=true"
28       - "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
29     networks:
30       - traefik_net
31     ports:
32       - 80:80
33       - 443:443
34     volumes:
35       - /var/run/docker.sock:/var/run/docker.sock:ro
36       - $PWD/acme.json:/acme.json
37       - $PWD:/etc/traefik:ro
38 networks:
39   traefik_net:
40     external: true

$PWD désigne le chemin du répertoire courant en l’occurrence "/opt/traefik/".

Je vous met en pièce jointe le fichier "compose.yml" et aussi les explications ligne par ligne sur l'aute lien.

🚦
Les lignes 10, 17, 22, 26, 36, 37 sont à modifier selon vos propres éléments

La partie 2

Installez le Reverse Proxy Traefik :Partie 2
Traefik est un super outil, une fois paramétré, c’est du bonheur ! Nous avons configuré une partie infime que ce qu’il peut réalisé, le reverse…