Beszel : supervisez vos serveurs Docker
Un Homelab, ça se surveille. Beszel affiche en deux conteneurs le CPU, la RAM et les disques de tous mes serveurs, avec le détail conteneur par conteneur.
Après avoir monté toute cette infra, il reste une question bête : est-ce que ça va bien ? Beszel y répond en deux conteneurs, et surtout il découpe la consommation conteneur par conteneur.
On ne sait jamais vraiment ce qui tourne
Un Homelab, ça finit toujours pareil. Tu empiles les applis, tu ajoutes une machine, tu testes un truc que tu oublies d’arrêter, et six mois plus tard tu ne sais plus ce qui tourne ni ce que ça coûte.
Et il y a les vraies questions, celles qui arrivent un soir sans prévenir. Pourquoi la machine rame ? Est-ce que j’ai encore assez de RAM pour ajouter un service ? Est-ce que le disque va tenir jusqu’à la fin du mois ? Et la meilleure de toutes : est-ce que quelqu’un m’a posé un cryptomineur sur le serveur ? Parce que ça m’est arrivé, et je peux vous dire qu’on aime bien avoir une courbe sous les yeux ce jour-là.
Bien sûr, vous pouvez toujours vous connecter en SSH et lancer htop, ou docker stats. Ça marche très bien. Mais c’est un instantané : aucun historique, aucune vue d’ensemble sur plusieurs machines, et rien qui vous prévienne pendant que vous dormez. Rien ne vaut un outil graphique.
Je vous présente Beszel. Un outil de supervision vraiment complet, très visuel, et qui ne consomme quasiment rien lui-même. Ce qui, pour un outil censé surveiller la consommation, est plutôt la moindre des politesses.
Deux conteneurs qui se parlent
Le découpage est ce qui rend l’outil aussi simple. Il y a deux morceaux, tous les deux en conteneur :
- le hub, c’est l’interface. Une seule instance, quelque part chez vous. C’est elle que vous ouvrez dans le navigateur ;
- l’agent, qu’on pose sur chaque serveur qu’on veut observer. Il mesure, il envoie, il ne fait rien d’autre.
Conséquence directe : ajouter une machine à la supervision, c’est poser un conteneur dessus. Pas d’installation système, pas de paquet à maintenir, rien à compiler.
La liste, d’abord
Vous installez, vous ajoutez vos serveurs, et hop, tout est là.

Le point vert, le CPU, la mémoire, le disque, le réseau, la température, l’uptime. C’est déjà 80 % de ce qu’on regarde au quotidien, et c’est sur un seul écran.
Le détail, et surtout le détail par conteneur
Ensuite vous cliquez sur un serveur, et là ça devient intéressant.

L’état des disques, la RAM, le processeur, et les entrées/sorties disque, ce qui est hyper important et qu’on oublie tout le temps de regarder. Une machine qui rame sans que le CPU bouge, neuf fois sur dix c’est le disque qui sature.
Mais le vrai truc, c’est la colonne de droite. Chaque courbe est séparée par conteneur. Vous ne voyez pas seulement que la RAM est à 4 Go, vous voyez lequel de vos conteneurs les prend. Et quand une bande rouge grimpe toute seule à deux heures du matin, vous savez immédiatement de qui il s’agit.
C’est parfait pour notre stack, vu que chez nous tout s’installe dans Docker, et que Docker chez nous c’est Portainer. Une bande dans le graphe, une stack dans Portainer, c’est le même objet.
Installer le hub
Comme toujours, un compose. Soit à la main, soit directement en stack dans Portainer, ce qui est ma méthode.
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
environment:
APP_URL: http://mon-serveur:8090
ports:
- 8090:8090
volumes:
- ./beszel_data:/beszel_data
- ./beszel_socket:/beszel_socket
Vous lancez, vous ouvrez le port 8090, vous créez votre compte administrateur. Et là vous avez l’interface. Mais elle est vide : aucun serveur n’est branché dessus.
Brancher un serveur
Pour ça, direction l’interface, bouton Ajouter Système.

Vous donnez un nom, une adresse et un port. Si vous voulez surveiller la machine du hub elle-même, l’adresse c’est 127.0.0.1, tout simplement. Le port par défaut est le 45876.
Ensuite vous cliquez sur Copier docker compose, puis sur Ajouter Système. Vous créez une nouvelle stack sur la machine à observer, vous y collez ce que vous venez de copier, vous lancez, et hop, elle apparaît dans l’interface de Beszel. C’est tout.
Le compose en question ressemble à ça, avec la clé et le token déjà remplis pour vous :
services:
beszel-agent:
image: henrygd/beszel-agent:latest
container_name: beszel-agent
restart: unless-stopped
network_mode: host
volumes:
- ./beszel_agent_data:/var/lib/beszel-agent
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
LISTEN: 45876
KEY: "ssh-ed25519 AAAA..."
TOKEN: "le-token-donne-par-le-hub"
HUB_URL: "http://mon-serveur:8090"
Les deux lignes à comprendre : network_mode: host, indispensable pour que l’agent voie les statistiques réseau de la machine et pas seulement celles de son propre conteneur, et la socket Docker montée en lecture seule, qui est exactement ce qui lui permet de découper par conteneur.
Y accéder de l’extérieur
Vous pouvez aussi lui monter un nom de domaine, avec Duck DNS par exemple, et le brancher derrière Nginx Proxy Manager. Là vous ouvrez votre supervision depuis le téléphone, en HTTPS, sans retenir un port.
Et surtout, ça vous permet d’ajouter des serveurs qui ne sont pas sur votre réseau. Un VPS, la machine d’un copain, un Raspberry chez vos parents : tout ça remonte dans la même interface. C’est sécurisé par clés et chiffré, l’agent n’accepte que le hub qui détient la bonne clé, donc aucun souci de ce côté.
Les alertes, parce qu’on ne regarde pas l’écran toute la journée
Un outil de supervision qu’il faut penser à ouvrir ne sert pas à grand-chose. Beszel sait donc envoyer des notifications, par mail si vous voulez, et il embarque toute la panoplie classique :
- un serveur qui ne répond plus ;
- un processeur en surcharge trop longtemps, ce qui évite d’être réveillé par le moindre pic de deux secondes ;
- un disque qui se remplit ;
- la mémoire, la température, la bande passante.
C’est le genre de réglage qu’on fait une fois et qu’on oublie, jusqu’au jour où le mail arrive et vous évite une vraie panne.
Ce que j’en retiens
Beszel est vraiment un super outil de supervision. Il y a sûrement plus complet ailleurs, du côté de Prometheus et Grafana notamment, mais c’est aussi beaucoup plus lourd à monter et à maintenir. Lui, il est hyper adapté à Docker et à Portainer, il s’installe en dix minutes et il ne coûte rien à faire tourner.
Autrement dit, il est parfait dans notre Homelab. Et depuis que je l’ai posé, je ne me demande plus ce qui consomme : je le vois.
Image d’en-tête générée par IA.
SmeagolWorms4
Commentaires