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

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:
- Hub: Dashboard, Benutzerverwaltung und Alert-Logik. Er basiert auf PocketBase und lauscht standardmäßig auf Port
8090. - 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.
| Merkmal | Beszel | Netdata |
|---|---|---|
| Ressourcenbedarf je Agent | gering | deutlich höher, je nach Konfiguration |
| Architektur | Hub + Agent | Agent (optional Cloud) |
| Detailtiefe | Kernmetriken | Sehr hoch |
| Setup-Aufwand | Minimal | Mittel |
Voraussetzungen
- 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.
- Mindestens einen weiteren (oder denselben) Server, den der Beszel-Agent überwachen soll.
- SSH-Zugriff auf beide Maschinen.
- Freier Port
8090auf dem Hub und Port45876auf 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/beszelErstellen 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_socketDas 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 beszelDie 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- Beim ersten Aufruf erscheint die Einrichtungsseite. Legen Sie E-Mail-Adresse und ein sicheres Passwort für den ersten Administrator fest.
- 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.
- Klicken Sie im Dashboard oben rechts auf Add System.
- Vergeben Sie einen sprechenden Namen (z. B.
web01), tragen Sie als Host / IP die Adresse des Zielservers ein und belassen Sie den Port bei45876. - 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-agentErstellen 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 -dKEY 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).
- Aktualisieren Sie das Dashboard im Browser.
- Klicken Sie auf den Servernamen, um die Detailansicht mit CPU-, RAM-, Datenträger- und Netzwerkgraphen zu öffnen.
- Bleibt der Server rot oder pending, prüfen Sie auf dem Zielserver Logs und Port:
docker logs beszel-agent
ss -tlnp | grep 45876Die 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.
- Öffnen Sie in der Systemübersicht über das Glockensymbol beim Server die Alert-Einstellungen.
- Aktivieren Sie die gewünschten Regeln, etwa Status (Server offline), CPU Usage, Memory Usage, Disk Usage und Bandwidth.
- 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-topicAuf ö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 -dLesen 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 -dBewahren Sie das Archiv außerhalb des Servers auf. Die Agents speichern keinen relevanten Zustand.
Troubleshooting
- Server bleibt auf „pending“: Meist stimmt
KEYoderTOKENnicht. Kopieren Sie beide Werte vollständig und ohne zusätzliche Leerzeichen aus dem Hub. - Status dauerhaft rot: Port
45876ist blockiert, und der Agent erreicht auchHUB_URLnicht. Details zeigt das PocketBase-Log unterhttp://SERVER-IP:8090/_/#/logs. - Keine Container-Statistiken: Der Docker-Socket ist nicht eingebunden. Prüfen Sie die Zeile mit
/var/run/docker.sock. - Hub nicht erreichbar: Port
8090belegt oder der Reverse Proxy leitet nicht weiter (WebSocket muss erlaubt sein).docker compose logs beszelzeigt die Startmeldungen. - Zusätzliche Laufwerke fehlen: Binden Sie beim Docker-Agent einen Ordner des Laufwerks unter
/extra-filesystemsein, z. B.- /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro. Die VariableEXTRA_FILESYSTEMSgilt 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.


