UI & Management

Beszel

Monitoring serveurs léger hub+agents - CPU, RAM, réseau, stats Docker, alertes, historique, OAuth2, backup S3. Agents 6 Mo RAM, hub 23 Mo. MIT.

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

ComposantValeur
ArchitectureHub central + agents légers
Hub~23 Mo RAM (construit sur PocketBase)
Agent~6 Mo RAM par serveur
MétriquesCPU, RAM, disque, réseau, GPU, Docker/Podman, températures
AlertesCPU, mémoire, disque, bande passante, température, charge
AuthLocal + OAuth2 (Google, GitHub, Authentik, Keycloak…)
BackupDisque local ou S3
Port hub8090 (HTTP)
Port agent45876 (TCP, communication hub-agent)

Prérequis

RessourceValeur
OSLinux (hub et agents), macOS (hub)
Docker / PodmanOptionnel - pour les stats containers
RéseauAccè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

  1. Ouvrir http://localhost:8090
  2. Add system → entrer l'IP/hostname
  3. Copier les trois valeurs générées : KEY, TOKEN, HUB_URL
  4. Les passer à l'agent (via Docker env vars ou flags binaires)
  5. Le système apparaît en vert dans le dashboard

Configuration des alertes

Les alertes se configurent par système dans l'UI :

MétriqueSeuil configurable
CPU% d'utilisation
Mémoire% d'utilisation
Disque% d'utilisation
Réseau entrant/sortantMb/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/_/.

  1. Aller sur http://localhost:8090/_/SettingsAuth providers
  2. Activer le provider souhaité (Google, GitHub, GitLab, Gitea, Keycloak, Authentik, Zitadel, OIDC générique…)
  3. 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 :

  1. Aller sur http://localhost:8090/_/#/settings/backups
  2. Configurer la destination (dossier local ou bucket S3 compatible)
  3. 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

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic