👁️ Beszel surveillance serveur
Beszel est une plate-forme de surveillance de serveur légère qui comprend des statistiques Docker, des données historiques et des fonctions d’alerte. Il a une interface Web conviviale, une configuration simple, et est prêt à être utilisé hors de la boîte. Il prend en charge la sauvegarde automatique, l’authentification multi-utilisateur, OAuth et l’accès API.
Beszel
Beszel est écrit en Go pur et peut être facilement compilé si un binaire préconstruit n’est pas disponible
Caractéristiques
- Lightweight: plus petit et moins gourmand en ressources que les solutions de pointe.
- Simple : Configuration facile avec peu de configuration manuelle requise.
- Statistiques Docker: Suit l’historique d’utilisation du processeur, de la mémoire et du réseau pour chaque conteneur.
- Alerts: Alertes configurables pour CPU, mémoire, disque, bande passante, température, moyenne de charge et statut.
- Multi-utilisateur: Les utilisateurs gèrent leurs propres systèmes. Les administrateurs peuvent partager des systèmes entre les utilisateurs.
- OAuth / OIDC : Prend en charge de nombreux fournisseurs OAuth2. Password auth peut être désactivé.
- Sauvegardes automatiques: Enregistrer et restaurer à partir du disque ou du stockage compatible S3.
Architecture
Beszel se compose de deux composants principaux: le moyeu et l’agent.
- Hub : Une application web construite sur PocketBase qui fournit un tableau de bord pour visualiser et gérer les systèmes connectés.
- Agent: Fonctionne sur chaque système que vous souhaitez surveiller et communique les métriques du système au hub.
Liens
- Beszel Gihut: https://github.com/henrygd/beszel
- Beszel : une solution de supervision open source, légère et moderne pour vos serveurs
Hub cwwk
Linux script installation
Cette commande télécharge et exécute notre script install-hub.sh. Le script installe le dernier binaire et crée un service systemd pour le maintenir en cours d’exécution après le redémarrage.
-u: Désinstaller-p <port>: Spécifier un numéro de port (par défaut: 8090)-c <url>: Utilisez une URL miroir GitHub personnalisée (par exemple https://ghfast.top/)--auto-update: Activer les mises à jour quotidiennes automatiques-h: Afficher l’aide
1
curl -sL https://get.beszel.dev/hub -o /tmp/install-hub.sh && chmod +x /tmp/install-hub.sh && /tmp/install-hub.sh
Proxy nginx
Créer un proxy nginx sur le serveur debian
1
sudo nano /etc/nginx/conf.d/beszel.rnmkcy.eu.conf
Y ajouter le contenu suivant
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name beszel.rnmkcy.eu;
client_max_body_size 10M;
include /etc/nginx/conf.d/ssl-modern.inc;
location / {
proxy_read_timeout 360s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8090;
}
}
Recharger nginx
1
sudo systemctl reload nginx
Créer un utilisateur administrateur
Après avoir démarré le hub, accédez à https://beszel.rnmkcy.eu ou à l’adresse choisie.
Vous serez invité à créer un compte:
Configurer votre premier système
Cliquez sur le bouton Ajouter Système dans le coin supérieur droit pour ouvrir la boîte de dialogue de création du système. Nous ajoutons l’agent sur le hub cwwk
Remarque: À partir de 0.12.0, vous pouvez également utiliser un jeton universel (
/settings/tokens) de connecter l’agent au hub sans avoir besoin de le configurer à l’avance.
Agents
Agent sur hub
Variables requises
KEY: La clé publique affichée lors de l’ajout d’un système dans le Hub.TOKEN: Utilisé pour authentifier l’agent (voir/settings/tokens).HUB_URL: Utilisé pour la connexion WebSocket sortante (non nécessaire pour la connexion SSH).
Exécuter la commande linux copiée précédemment pour installer l’agent (elle contient la clé publique et le token)
1
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 A...k+YIt" -t "8f...8e" -url "https://beszel.rnmkcy.eu"
L’agent est démarré automatiquement après l’installation et le tableau de bord est actualisé

Agent (binaire+systemd)
La commande est à exécuter sur le distant
1
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 AAAA...It" -t "07...75" -url "https://beszel.rnmkcy.eu"
Agent (docker compose)
Distant avec docker
1
2
3
mkdir $HOME/bezel
cd $HOME/bezel
nano docker-compose.yml
Copier le texte ci-dessous
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
services:
beszel-agent:
image: henrygd/beszel-agent
container_name: beszel-agent
restart: unless-stopped
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./beszel_agent_data:/var/lib/beszel-agent
# monitor other disks / partitions by mounting a folder in /extra-filesystems
# - /mnt/disk/.beszel:/extra-filesystems/sda1:ro
environment:
LISTEN: 45876
KEY: 'ssh-ed25519 AAAA...It'
TOKEN: 8b...f5
HUB_URL: https://beszel.rnmkcy.eu
Démarrer l’agent:
1
docker compose up -d
Notifications
ntfy
ntfy: serveur privé accessible par token
Résultat du test sur le serveur ntfy

Alertes
Beszel intègre un système d’alerte simple mais efficace. Il se configure au niveau de chaque système (ou au niveau global), c’est-à-dire chaque agent, mais via l’interface du serveur.
Depuis la page d’accueil, cliquez sur la cloche en bout de ligne sur l’un des systèmes.
Un panneau latéral s’affiche. Il permet de configurer les alertes pour le système sélectionné ou pour tous les systèmes. Le système est basique mais suffisant pour être alerté en cas de problème sur le serveur supervisé.

Par exemple, si le serveur est injoignable pendant 3 minutes, vous pouvez recevoir une alerte. Autre exemple : recevoir une alerte si la mémoire dépasse 80% pendant 8 minutes. À vous de configurer les différents seuils, selon vos besoins.

Annexe
Téléchargement et démarrage manuel
Télécharger le binaire
Téléchargez le dernier binaire à partir de versions qui correspondent à l’OS / architecture de votre serveur.
1
curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_$(uname -s)_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/armv6l/arm/' -e 's/armv7l/arm/' -e 's/aarch64/arm64/').tar.gz" | tar -xz beszel-agent
Démarrer l’agent
Utilisation -hpour voir toutes les options disponibles.
1
./beszel-agent -key "<public key>" -token "<token>" -url "<hub url>"
Mettre à jour l’agent
1
./beszel-agent update
Créer un service (facultatif)
Si votre système est symposé, vous pouvez créer un service pour maintenir l’agent en cours d’exécution après le redémarrage.
1-Créer un fichier de service dans /etc/systemd/system/beszel-agent.service. Remplacer les valeurs de l’espace réservé (p. ex., <path-to-binary>, <public key>) avec votre configuration réelle. Vous pouvez également utiliser KEY_FILEet TOKEN_FILEpour charger des secrets à partir de fichiers protégés (voir le numéro 1627).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[Unit]
Description=Beszel Agent Service
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=<path-to-binary>/beszel-agent
Environment="LISTEN=45876"
Environment="KEY=<public key>"
Environment="TOKEN=<token>"
Environment="HUB_URL=<hub url>"
# Environment="EXTRA_FILESYSTEMS=sdb"
Restart=on-failure
RestartSec=5
StateDirectory=beszel-agent
# Security/sandboxing settings
KeyringMode=private
LockPersonality=yes
NoNewPrivileges=yes
ProtectClock=yes
ProtectHome=read-only
ProtectHostname=yes
ProtectKernelLogs=yes
ProtectSystem=strict
RemoveIPC=yes
RestrictSUIDSGID=true
[Install]
WantedBy=multi-user.target
2-Activez et démarrez le service.
1
2
3
sudo systemctl daemon-reload
sudo systemctl enable beszel-agent.service
sudo systemctl start beszel-agent.service
Compiler beszel (go)
Le hub et l’agent sont tous deux écrits en Go, de sorte que vous pouvez facilement les construire vous-même, ou compiler en croix pour différentes plates-formes. Veuillez d’abord installer Go si vous ne l’avez pas déjà fait.
Cloner le dépôt
1
2
3
4
# Clone the repository
git clone --branch v0.18.7 --depth 1 https://github.com/henrygd/beszel.git
# Navigate to the repository
cd beszel
Utilisation de Makefile
Exécuter make. Cela crée un répertoire build contenant les binaires.
1
2
3
4
5
6
# Builds both the agent and hub
make
# Builds the agent only
make build-agent
# Builds the hub only (requires Node or Bun)
make build-hub
Vous pouvez également construire pour différentes plateformes:
1
make OS=freebsd ARCH=arm64
Voir une liste des options valides en exécutant
1
go tool dist list
Beszel double authentification (OPTION)
Authelia
La configuration YAML suivante est un exemple de configuration client Authelia pour une utilisation avec Beszel
Générer le client_secret
1
authelia crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random
Fichier configuration.yml rubrique
1
2
3
identity_providers:
oidc:
clients:
Ajouter client beszel dans la
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
identity_providers:
oidc:
## The other portions of the mandatory OpenID Connect 1.0 configuration go here.
## See: https://www.authelia.com/c/oidc
clients:
- client_id: 'beszel'
client_name: 'Beszel'
client_secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'.
public: false
authorization_policy: 'two_factor'
require_pkce: true
pkce_challenge_method: 'S256'
redirect_uris:
- 'https://beszel.rnmkcy.eu/api/oauth2-redirect'
scopes:
- 'openid'
- 'email'
- 'profile'
response_types:
- 'code'
grant_types:
- 'authorization_code'
access_token_signed_response_alg: 'none'
userinfo_signed_response_alg: 'none'
token_endpoint_auth_method: 'client_secret_basic'
Vérifier la configuration en mode su
1
sudo authelia validate-config --config /etc/authelia/configuration.yml
Beszel Web GUI
Pour configurer Beszel pour utiliser Authelia en tant que fournisseur OpenID Connect 1.0, utilisez les instructions suivantes:
- Connectez-vous à Beszel.
- Accédez au tableau de bord des paramètres en allant vers https://beszel.rnmkcy.eu/_/#/settings.
- Désactiver le
Hide collection create and edit controls. - Modifier la collection
usersen cliquant sur le rouage et en sélectionnantOptions. - Développer OAuth2.
- Toggle Activez la position
Enable. - Cliquez sur Add Provider.
- Sélectionner
OpenID Connect. - Configurez les options suivantes:
* ID du client:
beszel* Secret du client:insecure_secret* Nom de l’affichage:Authelia* Auth URL: https://auth.rnmkcy.eu/api/oidc/authorization * URL du jeton: https://auth.rnmkcy.eu/api/oidc/token * Fetch user info à partir de:User info URL* Informations utilisateur URL: https://auth.rnmkcy.eu/api/oidc/userinfo * PresseSaveau fond.











