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.png

Site officiel Dépôt GitHub

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 :

image.png

image.png

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 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

mermaid-diagram.png

Installation de Beszel

Prérequis

Pour cette installation, il faut :

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 !

image.png

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 :

image.png

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.

5d5image.png

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.

image.png

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.