Mise en place de Beszel
Installation de Beszel sur un Mac mini avec Docker Compose pour surveiller simplement plusieurs serveurs, dont celui qui héberge ce wiki.
Qu'est-ce que Beszel
Beszel est un outil de supervision léger qui permet de surveiller plusieurs serveurs depuis une interface web centralisée
Il permet notamment de suivre :
- L'utilisation du processeur
- L'utilisation de la mémoire vive
- L'espace disque disponible
- L'activité du réseau
- Les conteneurs Docker de la machine (s'il y en a)
- L'historique des ressources
- L'état général
Dans mon cas, j'ai installé Beszel sur un Mac Mini en utilisant Docker Compose
Le Mac Mini sert de serveur central pour héberger l'interface. Les autres serveurs, comme celui qui héberge ce wiki, sont surveillés grâce à l'installation d'un agent
Principe de fonctionnement
Beszel fonctionne avec deux éléments principaux :
- Le Hub
- L'Agent
Le hub correspond à l'interface web principale, c'est elle qui est hebergée sur le Mac Mini. C'est depuis cette interface que l'on peut consulter l'état des serveurs surveillés.
L'agent lui est installé sur chaque serveur que l'on souhaite monitorer. Il récupère les informations de la machine puis les transmet au Hub
Installation de Beszel
Prérequis
Pour cette installation, il faut :
- Une machine/serveur disposant de Docker
- Docker Compose d'installé
- Un accès SSH aux serveurs à surveiller
- Un accès administrateur sur les machines concernées
- Et bien évidemment, un navigateur web pour accéder à l'interface
Beszel peut être aussi installé autrement (par exemple avec un binaire sur Linux etc.) mais ce guide se concentre sur une installation via Docker Compose
Ma configuration actuelle pour le projet est un hub Beszel installé sur un Mac Mini M1 via Docker Compose, l'interface utilise le port 8090
Installation du Hub Beszel
Sur le Mac Mini, j'ai commencé par créer un dossier dédié :
mkdir -p ~/docker/beszel
cd ~/docker/beszel
J'ai ensuite créé dans ce dossier le fichier docker-compose.yml
nano docker-compose.yml
Puis j'y ai ajouté la configuration suivante :
services:
beszel:
image: henrygd/beszel
container_name: beszel
restart: unless-stopped
environment:
- APP_URL=http://localhost:8090
ports:
- 8090:8090
volumes:
- ./beszel_data:/beszel_data
Cette configuration permet de lancer Beszel sur le port 8090
Le dossier beszel_data permet de conserver les données de Beszel même après un redémarrage ou si je recrée le conteneur
Là, j’ai mis la variable APP_URL avec localhost, car je n’utilise pas de domaine pour y accéder, mais si jamais j’utilisais un domaine, j’aurais dû changer cette valeur.
Une fois la configuration prête, j'ai démarré le conteneur :
docker compose up -d
Et j'ai vérifié qu'il était bien lancé :
docker ps
Je peux utiliser aussi l'interface de Portainer pour voir si tout va bien !
Utilisation de Beszel
Accès a l'interface web
Maintenant que le conteneur est créé et lancé, l'interface web devrait être accessible à l'adresse suivante :
http://IP_DU_MAC_MINI:8090
Lors du premier accès, on me demande de créer un compte administrateur en renseignant :
- Un nom d'utilisateur
- Une adresse mail
- Un mot de passe
Installation de l'agent Beszel sur un serveur Linux/Windows
Pour chaque serveur à surveiller (par exemple celui du wiki), je dois installer un agent.
Depuis l'interface web de Beszel, j'ai ajouté un nouveau serveur en cliquant sur "Ajouter Système" en haut à droite.
Dans la fenêtre qui s'est ouverte, j'ai renseigné le nom de la machine (c'est le nom qui s'affichera ensuite dans l'interface de Beszel) ainsi que son adresse IP, pour tout le reste, j'ai laissé par défaut.
Une fois ces informations remplies, j'ai cliqué sur "Copier la commande Linux" en bas à gauche. Beszel génère automatiquement une commande d'installation
Pour une machine Windows, j'aurais pu aller dans le menu déroulant et sélectionner l'option "Copier la commande Windows".
Voici à quoi ressemble une de ces commandes :
curl -sL https://get.beszel.dev -o /tmp/install-agent.sh && chmod +x /tmp/install-agent.sh && /tmp/install-agent.sh -p 45876 -k "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAH1QasJRwqolr23o2dAHYQeL2Z9avr2m9dVoT74zP9s" -t "1614ac7b-f00c-4221-a5f9-a5ae3fc4bb02" -url "http://localhost:8090"
Je me suis connecté en SSH sur le serveur, puis j'ai simplement exécuté la commande fournie. Celle-ci commence par télécharger le script d'installation depuis le site officiel (curl -sL https://get.beszel.dev -o /tmp/install-agent.sh), ensuite donne les droits d'exécution (chmod +x). Enfin, elle lance le script avec plusieurs paramètres : Le port utilisé par l'agent (-p 45876), la clé publique SSH permettant au hub de s’authentifier (-k), le token d’enregistrement unique (-t) qui associe l’agent au bon hub, ainsi que l’URL du hub Beszel (-url). Une fois exécutée, cette commande installe et démarre automatiquement l’agent, qui se connecte ensuite au hub pour remonter les informations du serveur.
Attention : comme j’ai utilisé localhost dans la configuration précédente, la commande générée contient également http://localhost:8090. Il faut impérativement remplacer cette adresse par l’adresse IP réelle du Mac mini (par exemple http://192.168.x.x:8090), sinon l’agent ne pourra pas se connecter au Hub.
J'ai ensuite cliqué sur "Ajouter système" pour faire en sorte que ça prennes en compte que je souhaite ajouter cette machine avec ces paramètres. Le serveur apparait alors comme actif dans l'interface Beszel, sans configuration manuelle supplémentaire
Surveillance Docker et gestion de Beszel
L’agent Beszel peut remonter les informations des conteneurs Docker via le socket monté en lecture seule :
- /var/run/docker.sock:/var/run/docker.sock:ro
Cela permet de visualiser dans l’interface les conteneurs actifs, leur consommation (CPU, mémoire, réseau) et leur état.
Exemple avec le serveur du wiki
Le serveur du wiki est surveillé pour suivre rapidement CPU, mémoire, disque, réseau et activité Docker. Cela permet de détecter facilement un comportement anormal.
Résultat
Beszel offre une vue simple et rapide de l’état des serveurs. Idéal pour un homelab, il permet de surveiller efficacement sans solution lourde, même si des outils comme Zabbix restent plus adaptés pour des besoins avancés.