Post

👁️ Beszel surveillance serveur

👁️ 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.

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

Le hub est démarré

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)

Sur le HUB, Ajouter Système

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)

Sur le HUB, Ajouter Système

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

Configuration beszel

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:

  1. Connectez-vous à Beszel.
Cet article est sous licence CC BY 4.0 par l'auteur.