Beszel est un système de monitoring de serveurs léger architecturé en hub et agents. L'agent (~6 Mo RAM) tourne sur chaque serveur à surveiller et remonte les métriques CPU, mémoire, disque, réseau et stats des containers Docker ou Podman au hub central. Le hub, construit sur PocketBase, expose un dashboard web avec historique, alertes configurables (CPU, mémoire, disque, bande passante, température, charge), support OAuth2/OIDC, sauvegarde automatique sur disque ou S3 et gestion multi-utilisateurs. Beszel est une alternative frugale à Netdata ou Prometheus+Grafana pour les setups sans Kubernetes.
Informations essentielles
Origine : Communauté (henrygd) · Licence : MIT · Architectures : x86_64, ARM64
Liens : Site officiel · GitHub · Releases
Support : Projet communautaire actif.
Stack par défaut
| Composant | Valeur |
|---|---|
| Architecture | Hub central + agents légers |
| Hub | ~23 Mo RAM (construit sur PocketBase) |
| Agent | ~6 Mo RAM par serveur |
| Métriques | CPU, RAM, disque, réseau, GPU, Docker/Podman, températures |
| Alertes | CPU, mémoire, disque, bande passante, température, charge |
| Auth | Local + OAuth2 (Google, GitHub, Authentik, Keycloak…) |
| Backup | Disque local ou S3 |
| Port hub | 8090 (HTTP) |
| Port agent | 45876 (TCP, communication hub-agent) |
Prérequis
| Ressource | Valeur |
|---|---|
| OS | Linux (hub et agents), macOS (hub) |
| Docker / Podman | Optionnel - pour les stats containers |
| Réseau | Accès TCP entre hub (port 8090) et agents (port 45876) |
Installation
Hub (Docker Compose, recommandé)
# docker-compose.yml
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
environment:
APP_URL: http://localhost:8090 # Adapter à votre URL publique
ports:
- 8090:8090
volumes:
- ./beszel_data:/beszel_data
docker compose up -d
# Accéder au dashboard
# http://localhost:8090
# Créer le compte admin au premier démarrage
Hub (binaire)
curl -Lo beszel.tar.gz \
https://github.com/henrygd/beszel/releases/latest/download/beszel_linux_amd64.tar.gz
tar -xzf beszel.tar.gz
# Lancer
./beszel serve --http "0.0.0.0:8090"
Agent sur les serveurs à surveiller
L'agent nécessite trois variables générées depuis le hub lors de l'ajout d'un système : KEY, TOKEN et HUB_URL.
# Docker (recommandé - mode host pour accès aux métriques réseau)
docker run -d \
--name beszel-agent \
--network host \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e KEY="<clé-publique-depuis-le-hub>" \
-e TOKEN="<token-depuis-le-hub>" \
-e HUB_URL="<url-du-hub>" \
henrygd/beszel-agent:latest
# Script d'installation (Linux, FreeBSD)
curl -sL https://get.beszel.dev -o /tmp/install-agent.sh
chmod +x /tmp/install-agent.sh && /tmp/install-agent.sh
Ajout d'un système dans le hub
- Ouvrir http://localhost:8090
- Add system → entrer l'IP/hostname
- Copier les trois valeurs générées :
KEY,TOKEN,HUB_URL - Les passer à l'agent (via Docker env vars ou flags binaires)
- Le système apparaît en vert dans le dashboard
Configuration des alertes
Les alertes se configurent par système dans l'UI :
| Métrique | Seuil configurable |
|---|---|
| CPU | % d'utilisation |
| Mémoire | % d'utilisation |
| Disque | % d'utilisation |
| Réseau entrant/sortant | Mb/s |
| Température CPU | °C |
| Charge (load) | Valeur load average |
Les notifications peuvent être envoyées via webhook (Discord, Slack, ntfy, Telegram, email SMTP…) en configurant le fournisseur de notifications dans Settings → Notifications.
Authentification OAuth2
OAuth2/OIDC se configure via l'interface d'administration PocketBase intégrée au hub, accessible à http://localhost:8090/_/.
- Aller sur
http://localhost:8090/_/→ Settings → Auth providers - Activer le provider souhaité (Google, GitHub, GitLab, Gitea, Keycloak, Authentik, Zitadel, OIDC générique…)
- Renseigner le Client ID et Client Secret
Variables d'environnement disponibles pour le hub :
# Désactiver l'authentification par mot de passe (forcer OAuth uniquement)
DISABLE_PASSWORD_AUTH=true
# Permettre la création automatique de compte à la première connexion OAuth
USER_CREATION=true
# Header d'authentification proxy (ex. Authelia, Traefik forward auth)
TRUSTED_AUTH_HEADER=Remote-User
Sauvegarde
La sauvegarde (disque ou S3) se configure via l'interface d'administration PocketBase intégrée :
- Aller sur
http://localhost:8090/_/#/settings/backups - Configurer la destination (dossier local ou bucket S3 compatible)
- Activer la sauvegarde automatique avec la fréquence souhaitée
Pour une sauvegarde manuelle rapide :
# Copier le répertoire de données
cp -r ./beszel_data ./beszel_data-backup-$(date +%Y%m%d)
Mise à jour
# Docker
docker compose pull && docker compose up -d
# Binaire - retélécharger depuis les releases
Troubleshooting
# Logs du hub
docker logs beszel --tail 50
# Logs de l'agent
docker logs beszel-agent --tail 50
# Si l'agent n'apparaît pas dans le hub
# 1. Vérifier que le port 45876 est accessible depuis le hub
nc -zv <ip-agent> 45876
# 2. Vérifier que la KEY est correcte (copier depuis l'UI Hub)
docker logs beszel-agent | grep "key"
# 3. Vérifier le firewall sur l'hôte agent
ufw status | grep 45876
Commandes utiles
# Démarrer le hub
docker compose up -d
# Voir les logs
docker logs beszel -f
# Arrêter
docker compose down
# Sauvegarder les données manuellement
cp -r ./beszel_data ./beszel_data-backup-$(date +%Y%m%d)
# Interface d'admin PocketBase (OAuth2, backups, utilisateurs)
# http://localhost:8090/_/
Ressources
- Site officiel : https://beszel.dev
- GitHub : https://github.com/henrygd/beszel
- Releases : https://github.com/henrygd/beszel/releases
- Documentation : https://beszel.dev/guide/getting-started