Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Monitoring 01.06.2026 · 9 min Lesezeit

Beszel Server Monitoring mit Docker einrichten: Hub und Agent installieren (Anleitung)

Beszel ist ein ressourcenschonendes Self-Hosted-Monitoring aus Hub und Agent. Diese Anleitung zeigt, wie Sie Beszel mit Docker Compose einrichten, Server hinzufügen und Alerts für CPU, RAM und Disk konfigurieren.

Geprüft am 04.10.2026 · für Beszel 0.21.0

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Drei kleine Server mit grünen Status-LEDs und ein Netzwerk-Switch auf einem Regal im Homelab

Beszel überwacht Server im Homelab oder auf dem VPS, ohne dass das Monitoring selbst viele Ressourcen belegt. Es besteht aus einem zentralen Hub (Weboberfläche, Port 8090) und einem schlanken Agent, den Sie auf jedem zu überwachenden Server installieren. Diese Anleitung richtet Hub und Agent mit Docker Compose ein. Am Ende läuft der Hub, der erste Server ist verbunden, und Sie erhalten Benachrichtigungen, wenn Schwellenwerte überschritten werden.

Was ist Beszel und warum lohnt es sich?

Beszel ist ein quelloffenes, bewusst schlankes Monitoring-Werkzeug. Es sammelt die wichtigsten Systemmetriken (CPU, RAM, Belegung und Durchsatz der Datenträger, Netzwerk, Temperaturen, Statistiken der Docker-Container) und zeigt sie in einer übersichtlichen Weboberfläche. Die Architektur ist zweigeteilt:

  1. Hub: Dashboard, Benutzerverwaltung und Alert-Logik. Er basiert auf PocketBase und lauscht standardmäßig auf Port 8090.
  2. Agent: Ein kleiner Dienst je Server, der die Metriken an den Hub liefert. Die Verbindung sichern ein öffentlicher Schlüssel und ein Token ab.

Beszel vs. Netdata: der Ressourcenvergleich

Der wichtigste Unterschied zwischen Beszel und Netdata ist der Ressourcenbedarf. Beszel beschränkt sich auf Kernmetriken und belegt entsprechend wenig RAM und CPU. Netdata erfasst sehr viele Metriken im Sekundentakt und braucht dafür deutlich mehr Arbeitsspeicher. Für ein Homelab oder mehrere kleine VPS ist ein schlankes Monitoring wie Beszel meist die praktischere Wahl.

MerkmalBeszelNetdata
Ressourcenbedarf je Agentgeringdeutlich höher, je nach Konfiguration
ArchitekturHub + AgentAgent (optional Cloud)
DetailtiefeKernmetrikenSehr hoch
Setup-AufwandMinimalMittel

Voraussetzungen

  1. Ein Linux-Server für den Hub (VPS oder Homeserver, amd64, arm64 oder armv7), z. B. mit 2 CPU-Kernen und 4 GB RAM; Beszel belegt davon nur einen kleinen Teil. Darauf Docker mit Docker Compose. Falls Docker fehlt: Anleitung zur Docker-Installation.
  2. Mindestens einen weiteren (oder denselben) Server, den der Beszel-Agent überwachen soll.
  3. SSH-Zugriff auf beide Maschinen.
  4. Freier Port 8090 auf dem Hub und Port 45876 auf dem Agent, erreichbar vom Hub (bei Bedarf Hub hinter einem Reverse Proxy).

Schritt 1: Verzeichnis und Compose-Datei für den Hub anlegen

Legen Sie auf dem Server, der das Dashboard bereitstellt, ein Arbeitsverzeichnis an:

mkdir -p /opt/beszel
cd /opt/beszel

Erstellen Sie dort die Datei docker-compose.yml. APP_URL ist die Adresse, unter der Sie den Hub aufrufen; Beszel nutzt sie für Links in Benachrichtigungen und im Agent-Befehl. Das Verzeichnis beszel_socket brauchen Sie nur, wenn später ein Agent auf demselben Host läuft (siehe Häufige Fragen).

services:
  beszel:
    image: henrygd/beszel:0.21
    container_name: beszel
    restart: unless-stopped
    environment:
      APP_URL: http://SERVER-IP:8090
    ports:
      - "8090:8090"
    volumes:
      - ./beszel_data:/beszel_data
      - ./beszel_socket:/beszel_socket

Das Verzeichnis beszel_data enthält die PocketBase-Datenbank mit allen Servern, Alerts und Benutzern. Genau dieses Verzeichnis sichern Sie später.

Verifizieren: docker compose config gibt die Konfiguration ohne Fehlermeldung aus.

Schritt 2: Den Beszel-Hub starten

Starten Sie den Hub im Hintergrund:

docker compose up -d
docker compose ps
docker compose logs -f beszel

Die Log-Ansicht verlassen Sie mit Strg + C, ohne den Container zu stoppen.

Verifizieren: docker compose ps zeigt den Container beszel als Up, und die Logs melden, dass der Server auf Port 8090 lauscht.

Schritt 3: Admin-Account im Hub anlegen

Öffnen Sie den Hub im Browser. Ersetzen Sie SERVER-IP durch IP-Adresse oder Hostnamen des Hub-Servers.

http://SERVER-IP:8090
  1. Beim ersten Aufruf erscheint die Einrichtungsseite. Legen Sie E-Mail-Adresse und ein sicheres Passwort für den ersten Administrator fest.
  2. Nach dem Speichern sind Sie angemeldet und sehen das leere Dashboard.

Dieser erste Account ist der Administrator. Weitere Benutzer mit eingeschränkten Rechten legen Sie später in den Einstellungen an. Stellen Sie den Hub nicht ungeschützt per HTTP ins Internet; nutzen Sie einen Reverse Proxy mit HTTPS.

Verifizieren: Nach Abmelden und erneutem Anmelden mit den neuen Zugangsdaten erscheint das Dashboard.

Schritt 4: Ersten Server hinzufügen und Agent-Daten erzeugen

Der Hub erzeugt die Verbindungsdaten und einen fertigen Agent-Block.

  1. Klicken Sie im Dashboard oben rechts auf Add System.
  2. Vergeben Sie einen sprechenden Namen (z. B. web01), tragen Sie als Host / IP die Adresse des Zielservers ein und belassen Sie den Port bei 45876.
  3. Beszel zeigt einen öffentlichen Schlüssel (KEY), einen Token (TOKEN) und einen Docker-Compose-Block für den Agent. Kopieren Sie den Block; er enthält beide Werte. Lassen Sie den Dialog offen.

Der öffentliche Schlüssel beginnt mit ssh-ed25519, der Token ist eine zufällige Zeichenkette.

Verifizieren: Der Dialog zeigt KEY, TOKEN und den Compose-Block an.

Schritt 5: Den Beszel-Agent auf dem Zielserver installieren

Melden Sie sich per SSH auf dem Zielserver an. Der Agent läuft als Docker-Container oder als natives Programm; hier mit Docker Compose.

mkdir -p /opt/beszel-agent
cd /opt/beszel-agent

Erstellen Sie die docker-compose.yml. Am einfachsten übernehmen Sie den Block aus dem Hub; sonst ersetzen Sie die Platzhalter bei KEY, TOKEN und HUB_URL:

services:
  beszel-agent:
    image: henrygd/beszel-agent:0.21
    container_name: beszel-agent
    restart: unless-stopped
    network_mode: host
    volumes:
      - ./beszel_agent_data:/var/lib/beszel-agent
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      LISTEN: 45876
      KEY: "ssh-ed25519 AAAA...IHR_KEY_AUS_DEM_HUB"
      TOKEN: "IHR_TOKEN_AUS_DEM_HUB"
      HUB_URL: "http://SERVER-IP:8090"
docker compose up -d

KEY und TOKEN müssen exakt den Werten im Hub entsprechen; schon ein zusätzliches Leerzeichen verhindert die Verbindung. network_mode: host sorgt für korrekte Netzwerk- und Hostmetriken. Über den schreibgeschützt eingebundenen Docker-Socket liest der Agent die Statistiken der laufenden Container. Wechseln Sie danach zurück in den Hub-Dialog und klicken Sie dort auf Add System.

Verifizieren: docker compose ps zeigt beszel-agent als Up; docker logs beszel-agent enthält keine Fehlermeldungen zu Schlüssel oder Token.

Alternative: Agent als natives Binary

Ohne Docker auf dem Zielserver installiert das offizielle Skript den Agent als systemd-Dienst. Übergeben Sie Schlüssel, Token und Hub-URL als Parameter:

curl -sL https://get.beszel.dev -o /tmp/install-agent.sh
chmod +x /tmp/install-agent.sh
sudo /tmp/install-agent.sh -k "ssh-ed25519 AAAA...IHR_KEY" -t "IHR_TOKEN" -url "http://SERVER-IP:8090"

Das Skript legt den Benutzer beszel an und richtet einen Dienst ein, der beim Booten startet; optional aktiviert es tägliche automatische Updates. Ohne Parameter fragt es die Werte ab.

Schritt 6: Verbindung herstellen und ersten Test durchführen

Im Hub wechselt der neue Server nach wenigen Sekunden auf up (grüner Status).

  1. Aktualisieren Sie das Dashboard im Browser.
  2. Klicken Sie auf den Servernamen, um die Detailansicht mit CPU-, RAM-, Datenträger- und Netzwerkgraphen zu öffnen.
  3. Bleibt der Server rot oder pending, prüfen Sie auf dem Zielserver Logs und Port:
docker logs beszel-agent
ss -tlnp | grep 45876

Die Verbindung funktioniert, wenn eine der beiden Richtungen offen ist: Der Hub baut eine Verbindung zum Agent auf Port 45876 auf, oder der Agent verbindet sich per WebSocket mit HUB_URL. Öffnen Sie dafür bei Bedarf die Firewall.

Verifizieren: Der Server steht im Dashboard auf grün, die Graphen zeigen aktuelle Werte, und bei laufenden Containern erscheinen deren Statistiken.

Schritt 7: Alerts für CPU, RAM, Disk und Netzwerk einrichten

Beszel warnt, sobald ein System ausfällt oder Schwellenwerte überschreitet.

  1. Öffnen Sie in der Systemübersicht über das Glockensymbol beim Server die Alert-Einstellungen.
  2. Aktivieren Sie die gewünschten Regeln, etwa Status (Server offline), CPU Usage, Memory Usage, Disk Usage und Bandwidth.
  3. Legen Sie je Regel einen Schwellenwert (z. B. 85 % CPU) und eine Mindestdauer (z. B. 10 Minuten) fest, damit kurze Spitzen keinen Alarm auslösen.

Hinterlegen Sie unter Settings → Notifications einen Kanal. Beszel nutzt Shoutrrr-URLs und unterstützt u. a. E-Mail (SMTP), Telegram, Discord, Gotify und ntfy. Eine ntfy-URL mit Zugriffstoken sieht so aus:

ntfy://:ZUGRIFFSTOKEN@ntfy.sh/mein-beszel-topic

Auf öffentlichen ntfy-Servern kann jeder mitlesen, der den Topic-Namen kennt; wählen Sie einen schwer zu erratenden Namen oder einen geschützten Topic.

Verifizieren: Test URL neben der eingetragenen URL meldet „Test notification sent“, und die Nachricht kommt auf dem gewählten Kanal an.

Updates & Wartung

Hub und Agents aktualisieren Sie unabhängig voneinander. Passen Sie bei einem neuen Release den Image-Tag in der Compose-Datei an (z. B. 0.21 auf die neue Version) und ziehen Sie dann das Image:

# Auf dem Hub-Server
cd /opt/beszel
docker compose pull
docker compose up -d

# Auf jedem Agent-Server
cd /opt/beszel-agent
docker compose pull
docker compose up -d

Lesen Sie vorher die Release Notes. Während des Hub-Updates erfasst Beszel kurz keine Metriken.

Hinweis zu 0.21: Für den Sprung von 0.20 auf 0.21 nennen die Release Notes keine Breaking Changes; Hub und Agents lassen sich wie oben gezeigt nacheinander aktualisieren. Neu sind unter anderem eine Liste ausstehender Paket-Updates je System, TLS-Zertifikatsprüfungen in HTTPS-Netzwerkmonitoren, systemd-Logs in den Dienstdetails sowie die Hub-Variable DISABLE_SSH, mit der der Hub keine SSH-Verbindungen zu Agents mehr aufbaut und nur noch den WebSocket-Weg nutzt. Wer von einer Version vor 0.19 kommt, beachtet zusätzlich: Seit 0.19 prüfen Agents das HTTPS-Zertifikat des Hubs; bei selbst signierten Zertifikaten braucht der Agent die Variable CA_CERT_FILE.

Backup-Hinweis

Der gesamte Zustand des Hubs liegt in beszel_data. Sichern Sie das Verzeichnis bei gestopptem Container, damit die SQLite-Datenbank konsistent ist:

cd /opt/beszel
docker compose down
tar czf beszel_data_$(date +%F).tar.gz beszel_data
docker compose up -d

Bewahren Sie das Archiv außerhalb des Servers auf. Die Agents speichern keinen relevanten Zustand.

Troubleshooting

  1. Server bleibt auf „pending“: Meist stimmt KEY oder TOKEN nicht. Kopieren Sie beide Werte vollständig und ohne zusätzliche Leerzeichen aus dem Hub.
  2. Status dauerhaft rot: Port 45876 ist blockiert, und der Agent erreicht auch HUB_URL nicht. Details zeigt das PocketBase-Log unter http://SERVER-IP:8090/_/#/logs.
  3. Keine Container-Statistiken: Der Docker-Socket ist nicht eingebunden. Prüfen Sie die Zeile mit /var/run/docker.sock.
  4. Hub nicht erreichbar: Port 8090 belegt oder der Reverse Proxy leitet nicht weiter (WebSocket muss erlaubt sein). docker compose logs beszel zeigt die Startmeldungen.
  5. Zusätzliche Laufwerke fehlen: Binden Sie beim Docker-Agent einen Ordner des Laufwerks unter /extra-filesystems ein, z. B. - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro. Die Variable EXTRA_FILESYSTEMS gilt nur für den Binary-Agent.

Häufige Fragen

Wie viel RAM benötigt ein Beszel-Agent?

Sehr wenig; der Agent ist ein kleines Go-Programm ohne eigene Datenbank. Den tatsächlichen Wert Ihres Systems zeigt docker stats beszel-agent.

Beszel vs. Netdata: Was ist besser?

Netdata bietet sehr detaillierte Echtzeitmetriken und braucht dafür mehr Ressourcen. Beszel ist schlank, schnell eingerichtet und liefert die wichtigsten Kernmetriken. Für einfaches Monitoring mehrerer Server ist Beszel meist ausreichend.

Kann ein Server gleichzeitig Hub und Agent sein?

Ja. localhost funktioniert dabei nicht, weil die Container in getrennten Netzen laufen. Binden Sie in beiden Containern ./beszel_socket:/beszel_socket ein, setzen Sie beim Agent LISTEN: /beszel_socket/beszel.sock und tragen Sie im Hub als Host / IP /beszel_socket/beszel.sock ein.

Ist die Verbindung zwischen Hub und Agent abgesichert?

Ja. Baut der Hub die Verbindung per SSH auf, akzeptiert der Agent nur den Schlüssel des Hubs und erlaubt keine Befehlsausführung. Baut der Agent die Verbindung per WebSocket auf, prüfen sich beide über Token, Signatur und Fingerabdruck gegenseitig. Über das öffentliche Internet empfiehlt das Projekt den WebSocket-Weg mit HTTPS-Hub-URL.

Wie überwache ich mehrere Server mit Beszel?

Sie installieren den Hub einmal und je Server einen Agent. Jeden Server fügen Sie über Add System hinzu; dabei entstehen eigene Verbindungsdaten.

Fazit

Mit Beszel betreiben Sie ein selbst gehostetes, ressourcenschonendes Monitoring: Der Hub bündelt die Metriken, die Agents belasten die Systeme kaum, und Alerts melden Engpässe rechtzeitig. Wer mehr Detailtiefe braucht, ergänzt Beszel um spezialisierte Werkzeuge.

Weiterführende Anleitungen

Fehlt Docker noch, beginnen Sie mit der Anleitung zur Docker-Installation. Die Erreichbarkeit Ihrer Dienste von außen prüft Uptime Kuma mit Docker und Nginx Proxy Manager als Ergänzung zu Beszel. Weitere Anleitungen finden Sie in der Kategorie Docker.

Quellen

Offizielle Dokumentation und Projektquellen: Beszel Projektseite und Dokumentation (Hub- und Agent-Installation, Security, Common Issues, Additional Disks, Notifications) sowie das Beszel GitHub-Repository.