Vous en avez assez de perdre du temps à fouiller dans des logs Docker ; vous voulez un outil de supervision simple et efficace de votre vLab ; vous ne vous rappelez jamais de la cli base64 ou comment créer une paire de clefs rsa ? Dozzle, Uptime Kuma et IT-Tools sont là pour vous. Perso je les utilisent tout le temps ou presque … alors, prêt à déployer tous ces conteneurs sécruisés via HTTPS avec Traefik et Let’s Encrypt tout en utilisant OVH pour la validation DNS … un peu de ligne de commande pour vous dégourdir les doigts !
Les 3 outils en un coup d’œil :
| Conteneur/Projet | Utilité principale | Point fort | Lien GitHub |
|---|---|---|---|
| Dozzle | Monitoring des logs en temps réel | Interface ultra-simple et colorée | dozzle/dozzle |
| Uptime Kuma | Outil simple de supervision | Super simple d’emploi, très ergonomique. Léger et suffisant pour un homeLab | louislam/uptime-kuma |
| IT-Tools | Boîte à outils pour réseaux et sysadmin | Tout-en-un, prêt à l’emploi | CorentinTh/it-tools |
Pour déployer tout ça il vous faut :
- Un nom de domaine (ex:
myvlab.ovh pour moi) et un accès à son DNS (chez OVH). - Docker installé pour pouvoir jouer de docker-compose.
- Un home directory ou un répertoire d’installation de base évidemment.
Préparez d’abord l’utilisation de l’API d’OVH pour pouvoir autoriser Traefik a faire valider les FQDN de votre domaine via vérification Let’s Encrypt. Pour éviter d’exposer vos clés OVH dans le docker-compose.yml, créez un fichier .env dans le même dossier.
D’abord on créez un nouveau token d’acces à l’API OVHcloud en allant sur https://www.ovh.com/auth/api/createToken :
|
1 2 3 4 5 6 7 8 |
# OVH API OVH_ENDPOINT=ovh-eu OVH_APPLICATION_KEY=xxxxxxxxxxxxx OVH_APPLICATION_SECRET=xxxxxxxxxxxxx OVH_CONSUMER_KEY=xxxxxxxxxxxxx # Email pour Let's Encrypt EMAIL=cedric@vblog.io |
Pensez-y : Ajoutez .env à votre .gitignore si vous utilisez Git pour qu’il ne sois pas synchronisé avec votre rep github/gitlab/gitea
N’oubliez pas au préalable de créer le réseau interne docker qui sera utilisé dans le docker-compose, à savoir « traefik-net » dans notre cas. Donc un petit docker network create traefik-net --internal et ce sera parfait.
Voici le fichier docker-compose.yml avec traefik et les 3 conteneurs :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
services: # Traefik - avec Let's Encrypt traefik: image: traefik:v3 container_name: traefik restart: unless-stopped command: - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.ovh-resolver.acme.dnschallenge=true" - "--certificatesresolvers.ovh-resolver.acme.dnschallenge.provider=ovh" - "--certificatesresolvers.ovh-resolver.acme.email=${EMAIL}" - "--certificatesresolvers.ovh-resolver.acme.storage=/certs/acme.json" ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - "./certs:/certs" env_file: - .env networks: - traefik-net # Dozzle dozzle: image: amir20/dozzle:latest container_name: dozzle restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.dozzle.rule=Host(`dozzle.myvlab.ovh`)" - "traefik.http.routers.dozzle.entrypoints=websecure" - "traefik.http.routers.dozzle.tls.certresolver=ovh-resolver" - "traefik.http.services.dozzle.loadbalancer.server.port=8080" volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DOZZLE_REMOTE_AGENT=hostXXXXX:7007, hostYYYYY:7007 - TZ=Europe/Paris networks: - traefik-net # Uptime Kuma uptime-kuma: image: louislam/uptime-kuma:latest container_name: uptime-kuma restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.uptime-kuma.rule=Host(`uptime.myvlab.ovh`)" - "traefik.http.routers.uptime-kuma.entrypoints=websecure" - "traefik.http.routers.uptime-kuma.tls.certresolver=ovh-resolver" - "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001" volumes: - ./uptime-kuma:/app/data networks: - traefik-net # IT-Tools it-tools: image: corentinth/it-tools:latest container_name: it-tools restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.it-tools.rule=Host(`it-tools.myvlab.ovh`)" - "traefik.http.routers.it-tools.entrypoints=websecure" - "traefik.http.routers.it-tools.tls.certresolver=ovh-resolver" - "traefik.http.services.it-tools.loadbalancer.server.port=80" networks: traefik-net: external: false |
En substance : Traefik agit comme porte d’entrée sécurisée pour les services. Il écoute sur les ports 80 et 443. Il gère automatiquement les certificats SSL via Let’s Encrypt. Les certificats sont stockés dans ./certs/acme.json et les variables sensibles sont chargées depuis le fichier .env. Ce setup garantit que tous les services seront accessibles en HTTPS, sans configuration manuelle fastidieuse. Traefik est connecté à Docker pour découvrir automatiquement les services à exposer, mais uniquement ceux explicitement activés. Le réseau traefik-net est précisément là pour n’être accessible que des conteneurs connectés (d’où l’utilisation de --internal lors de sa création).
Enfin, il suffit de démarrer la création des conteneurs via un docker compose up -d et zou, voici les trois outils fonctionnels, sécurisés et relativement bien isolés de votre réseau (pensez tout de même à faire tourner les conteneurs sur un compte non privilégié dans la mesure du possible). Pour le coup il faudra s’occuper de la gestion des droits d’accès au socket docker.sock pour autoriser l’utilisateur en question à lire les infos système du stack docker).
À première vue anodin, ce setup forme pourtant une base solide pour une infrastructure sécurisée, facile à gérer et à maintenir. Grâce à des outils open source et en particulier à Traefik — le reverse proxy/load balancer plébiscité pour sa sécurité et sa simplicité d’utilisation (même au cœur de Kubernetes en ingress controler), vous disposez d’une solution robuste, scalable et prête pour la production, potentiellement.
Références :
Traefik Proxy : https://traefik.io/
Dozzle : https://dozzle.dev/
Uptime Kuma : https://github.com/louislam/uptime-kuma
IT Tools : https://it-tools.tech/
Let’s Encrypt : https://letsencrypt.org/fr/