Diese Anleitung zeigt, wie Sie einen Monitoring-Server mit Checkmk Community auf einem dataforest Seed einrichten. Sie installieren das Checkmk-Paket, legen eine Monitoring-Site mit omd an, stellen die Site auf einen eigenen Apache-Prozess um und setzen Caddy als Reverse Proxy mit automatischem HTTPS davor. Am Ende erreichen Sie die Weboberfläche verschlüsselt über Ihre eigene Domain. Die Einrichtung dauert rund 20 Minuten.
Im zweiten Teil dieser Reihe fügen Sie den ersten Host und seine Services hinzu.
Warum ein eigener Monitoring-Server?
Ein Monitoring-Server behält Ihre Server und Dienste im Blick und meldet sich, bevor aus einem vollen Datenträger oder einem gestoppten Dienst ein Ausfall wird. Mit einem eigenen Server bleiben alle Messwerte bei Ihnen, statt an einen SaaS-Anbieter zu fließen.
Checkmk Community ist die kostenlose, quelloffene Edition von Checkmk (vormals Raw Edition), veröffentlicht unter der GPLv2. Sie erkennt Dienste automatisch, bringt eine Weboberfläche mit und eignet sich gut für kleine bis mittlere Umgebungen. Einen Überblick über die Möglichkeiten gibt unsere Monitoring-Lösung.
Voraussetzungen
- Ein Seed bei dataforest cloud. Der Arbeitsspeicher ist der wichtigste Faktor und wächst mit der Zahl der überwachten Dienste. Für den Start reicht ein kleines Modell.
- SSH-Zugriff als root auf den Seed
- Eine Domain, deren A-Record (und bei Bedarf AAAA-Record) auf die öffentliche IP des Seeds zeigt. Sie wird für das automatische HTTPS-Zertifikat von Caddy benötigt.
- Grundlegende Kenntnisse im Umgang mit dem Terminal
Ein Seed lässt sich über dataforest cloud oder per Public API erstellen. Per API genügt ein einzelner Aufruf:
curl -X POST "https://api.dataforest.net/api/v1/public/seeds" \
-H "Authorization: Bearer <API-Token>" \
-H "Content-Type: application/json" \
-d '{
"name": "monitoring",
"plan": "lines/entry/models/entry-c1-m2-s20",
"location": "fra01",
"project_id": "<Projekt-ID>",
"ssh_keys": ["<SSH-Key-ID>"],
"source": {
"type": "image",
"ref": "images/debian/versions/debian-v13"
},
"enable_ipv4": true
}'
Den API-Token erstellen Sie im Dashboard unter API. Die Projekt-ID liefert der Team-Endpunkt GET /api/v1/public/team (das Feld id im Array projects), siehe den Quick-Start der API-Doku. Die verfügbaren SSH-Key-IDs lassen sich mit GET /sshkeys abrufen.
In dieser Anleitung wird die Domain monitoring.example.com und der Site-Name monitoring verwendet. Ersetzen Sie beide durch Ihre eigenen Werte.
Checkmk Community installieren
Checkmk stellt für jede Edition, Version und Distribution ein eigenes Paket bereit. Die zur Distribution passende Datei finden Sie unter checkmk.com/download. Diese Anleitung verwendet die Version 2.5.0p5, prüfen Sie die aktuelle Patch-Version vor dem Download.
Zuerst den öffentlichen Schlüssel von Checkmk herunterladen und importieren, um die Signatur des Pakets zu prüfen:
apt install -y gpg
wget https://download.checkmk.com/checkmk/Check_MK-pubkey.gpg
gpg --import Check_MK-pubkey.gpg
Auf AlmaLinux/RockyLinux benötigt Checkmk zusätzlich die Repositories EPEL und CRB:
dnf install -y dnf-plugins-core
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf config-manager --set-enabled crb
Anschließend das Paket herunterladen und installieren. Den Dateinamen dabei an Ihre Distribution anpassen (bookworm für Debian 12, trixie für Debian 13, jammy für Ubuntu 22.04, noble für Ubuntu 24.04, el9 für AlmaLinux/RockyLinux 9):
wget https://download.checkmk.com/checkmk/2.5.0p5/check-mk-community-2.5.0p5_0.trixie_amd64.deb
apt install -y ./check-mk-community-2.5.0p5_0.trixie_amd64.deb
Auf Debian/Ubuntu zieht apt alle Abhängigkeiten automatisch nach, darunter Apache. Checkmk nutzt Apache mit mod_wsgi intern für die Weboberfläche. Diesen Apache fassen Sie nicht direkt an, der öffentliche Webserver wird später Caddy.
Die Installation prüfen:
omd version
Die Ausgabe zeigt die installierte Version und Edition an, zum Beispiel 2.5.0p5.community.
Monitoring-Site anlegen
Checkmk verwaltet jede Instanz als eigene Site über das Werkzeug omd. Eine Site mit dem Namen monitoring anlegen:
omd create monitoring
Der Befehl gibt am Ende den automatisch erzeugten Zugang aus. Diese Zeile enthält das Passwort, notieren Sie es:
The admin user for the web applications is cmkadmin with password: HmKp7xQ2
Alternativ lässt sich das Passwort direkt selbst setzen:
omd create --admin-password 'IhrSicheresPasswort' monitoring
Anschließend die Site starten:
omd start monitoring
Den Status der Site und ihrer Dienste prüfen:
omd status monitoring
Wenn alles läuft, steht in der Ausgabe OVERALL 1 RUNNING und alle Dienste (unter anderem apache, nagios, rrdcached) zeigen RUNNING.
Weboberfläche per Caddy bereitstellen
Standardmäßig wird die Site über den System-Apache auf Port 80 ausgeliefert. Für verschlüsselten Zugriff über Ihre Domain stellen Sie die Site auf einen eigenen Apache-Prozess um und setzen Caddy als Reverse Proxy davor.
Warum Caddy und nicht der System-Apache? Checkmk nutzt intern ohnehin Apache für die Oberfläche, den fassen Sie nicht an. Für den öffentlichen Zugang ist Caddy aber deutlich bequemer: Es besorgt und erneuert das HTTPS-Zertifikat von Let's Encrypt vollautomatisch und kommt mit wenigen Zeilen Konfiguration aus. Beim System-Apache müssten Sie Zertifikate, deren Erneuerung und die virtuellen Hosts von Hand einrichten und pflegen. Caddy holt und erneuert das Zertifikat dagegen ohne weiteres Zutun.
Site auf einen eigenen Apache umstellen
Die Apache-Einstellungen einer Site lassen sich nur ändern, während die Site gestoppt ist. Wechseln Sie dafür in den Benutzer der Site:
omd su monitoring
Jetzt arbeiten Sie als Site-Benutzer. Die Site stoppen, den eigenen Apache auf der lokalen Adresse aktivieren und die Site wieder starten:
omd stop
omd config set APACHE_TCP_ADDR 127.0.0.1
omd config set APACHE_TCP_PORT 5000
omd config set APACHE_MODE own
omd start
Beim Setzen von APACHE_MODE weist Checkmk darauf hin, omd update-apache-config monitoring auszuführen. Das betrifft nur den System-Apache, den wir im nächsten Schritt deaktivieren, und kann hier ignoriert werden.
Danach zurück zum root-Benutzer:
exit
Die Site lauscht nun ausschließlich lokal auf Port 5000. Das lässt sich direkt prüfen:
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:5000/monitoring/
Die Ausgabe sollte 302 sein (eine Weiterleitung zur Login-Seite). Damit ist die Site erreichbar, aber noch nicht öffentlich.
System-Apache deaktivieren
Damit Caddy die Ports 80 und 443 belegen kann, wird der öffentliche System-Apache gestoppt und deaktiviert. Der eigene Apache der Site bleibt davon unberührt:
systemctl disable --now apache2
Caddy installieren
Auf Debian/Ubuntu ist Caddy in den Paketquellen enthalten:
apt install -y caddy
Auf AlmaLinux/RockyLinux ist Caddy nicht in EPEL enthalten, hier wird das COPR-Repository genutzt:
dnf install -y 'dnf-command(copr)'
dnf copr enable -y @caddy/caddy
dnf install -y caddy
Die Paketquellen liefern eine aktuelle Caddy-2-Version mit automatischem HTTPS. Wer immer die neueste Version möchte, bindet das offizielle Caddy-Repository ein.
Caddy konfigurieren
Die Caddy-Konfiguration liegt in /etc/caddy/Caddyfile. Öffnen Sie die Datei:
nano /etc/caddy/Caddyfile
Den Inhalt durch folgende Konfiguration ersetzen. monitoring.example.com durch Ihre Domain ersetzen:
monitoring.example.com {
@root path /
redir @root /monitoring/
reverse_proxy 127.0.0.1:5000 {
header_down Location "http://127.0.0.1:5000/" "https://{host}/"
}
}
Die Regel leitet einen Aufruf der Domain-Wurzel auf /monitoring/ weiter, alle übrigen Anfragen gehen an die Site. Der Checkmk-Apache erzeugt seine Weiterleitungen mit der internen Adresse (http://127.0.0.1:5000/…); die header_down Location-Zeile schreibt diese auf Ihre öffentliche HTTPS-Adresse um, damit die Anmeldung im Browser nicht auf die interne Adresse springt. Die übrigen Weiterleitungs-Header (unter anderem X-Forwarded-Proto) setzt Caddy automatisch.
Caddy neu laden, damit die Konfiguration aktiv wird:
systemctl reload caddy
Caddy fordert beim ersten Aufruf der Domain automatisch ein Let's-Encrypt-Zertifikat an. Den Status prüfen:
systemctl status caddy
Auf AlmaLinux/RockyLinux ist SELinux aktiv. Falls die Oberfläche hinter Caddy nicht lädt, erlauben Sie lokale Netzwerkverbindungen und kennzeichnen den Port der Site:
setsebool -P httpd_can_network_connect 1
dnf install -y policycoreutils-python-utils
semanage port -a -t http_port_t -p tcp 5000
Firewall einrichten
Die Erreichbarkeit Ihres Seeds aus dem Internet steuern Sie mit der Firewall von dataforest cloud. Sie wird unabhängig vom Server verwaltet, im Dashboard und per API.
Im Dashboard links auf Netzwerk > Firewalls, dann Firewall erstellen. Vergeben Sie einen Namen wie checkmk-monitoring und legen Sie folgende Regeln an.
Eingehend:
| Name | Quellen | Protokoll | Port |
|---|---|---|---|
| SSH | Alle IPv4, Alle IPv6 | TCP | 22 |
| HTTP | Alle IPv4, Alle IPv6 | TCP | 80 |
| HTTPS | Alle IPv4, Alle IPv6 | TCP | 443 |
| Ping | Alle IPv4, Alle IPv6 | ICMP | - |
Port 80 wird für die Zertifikatsprüfung von Let's Encrypt benötigt, Port 443 für die Weboberfläche, Port 22 für SSH. Tipp: SSH lässt sich zusätzlich absichern, indem Sie als Quelle nur Ihre eigene IP-Adresse statt aller Quellen eintragen.
Ausgehend:
| Name | Ziele | Protokoll | Port |
|---|---|---|---|
| DNS | Alle IPv4, Alle IPv6 | UDP, TCP | 53 |
| NTP | Alle IPv4, Alle IPv6 | UDP | 123 |
| HTTP/HTTPS | Alle IPv4, Alle IPv6 | TCP | 80, 443 |
| Checkmk-Agent | Alle IPv4, Alle IPv6 | TCP | 6556 |
| Alle IPv4, Alle IPv6 | TCP | 587 | |
| Ping | Alle IPv4, Alle IPv6 | ICMP | - |
Ausgehend braucht der Server DNS und NTP für Namensauflösung und Zeit, HTTP und HTTPS für Paket-Updates und das Let's-Encrypt-Zertifikat, Port 6556, um später die Checkmk-Agenten auf den überwachten Hosts zu erreichen, und SMTP (Port 587) für Benachrichtigungen per E-Mail. Überwachen Sie später Dienste auf anderen Ports, ergänzen Sie die entsprechenden ausgehenden Regeln.
Unter Verbundene Ressourcen den Seed monitoring auswählen und speichern. Zuweisen lassen sich einzelne Seeds oder Tags.
Dieselbe Firewall lässt sich auch per API anlegen. Quellen und Ziele sind dabei CIDR-Blöcke (type: cidr), Seeds (type: seed) oder Tags (type: tag), und mit attachments weisen Sie die Firewall direkt einem Seed zu. <monitoring-seed-id> ist die UUID des Seeds (z.B. aus GET /seeds):
curl -X POST "https://api.dataforest.net/api/v1/public/firewalls" \
-H "Authorization: Bearer <API-Token>" \
-H "Content-Type: application/json" \
-d '{
"name": "checkmk-monitoring",
"inbound_rules": [
{ "protocol": "tcp", "port": "22", "comment": "SSH", "sources": [{ "type": "cidr", "cidr": "0.0.0.0/0" }, { "type": "cidr", "cidr": "::/0" }] },
{ "protocol": "tcp", "port": "80,443", "comment": "HTTP/HTTPS", "sources": [{ "type": "cidr", "cidr": "0.0.0.0/0" }, { "type": "cidr", "cidr": "::/0" }] },
{ "protocol": "icmp", "comment": "Ping", "sources": [{ "type": "cidr", "cidr": "0.0.0.0/0" }, { "type": "cidr", "cidr": "::/0" }] }
],
"outbound_rules": [
{ "protocol": "tcp", "port": "53,80,443,587,6556", "comment": "DNS, Updates, ACME, E-Mail, Agent", "destinations": [{ "type": "cidr", "cidr": "0.0.0.0/0" }, { "type": "cidr", "cidr": "::/0" }] },
{ "protocol": "udp", "port": "53,123", "comment": "DNS, NTP", "destinations": [{ "type": "cidr", "cidr": "0.0.0.0/0" }, { "type": "cidr", "cidr": "::/0" }] },
{ "protocol": "icmp", "comment": "Ping", "destinations": [{ "type": "cidr", "cidr": "0.0.0.0/0" }, { "type": "cidr", "cidr": "::/0" }] }
],
"attachments": [
{ "type": "seed", "seed_id": "<monitoring-seed-id>" }
]
}'
Wichtig: Die Regeln für Port 80 und 443 müssen erhalten bleiben, sonst kann Caddy das Zertifikat nicht ausstellen oder erneuern.
Im zweiten Teil der Reihe ergänzen Sie eine Regel, die dem Monitoring-Seed den Zugriff auf die überwachten Seeds über Port 6556 erlaubt. Als Quelle und Ziel lassen sich dort nicht nur IP-Adressen, sondern direkt Seeds angeben.
Anmelden
Rufen Sie https://monitoring.example.com/monitoring/ im Browser auf. Sie werden zur Login-Seite von Checkmk weitergeleitet. Melden Sie sich mit dem Benutzer cmkadmin und dem Passwort aus dem Schritt Monitoring-Site anlegen an.

Nach der ersten Anmeldung empfiehlt es sich, unter Benutzer > cmkadmin ein eigenes Passwort zu setzen.
Updates und Wartung
Halten Sie das Betriebssystem mit den üblichen Paketmanager-Befehlen aktuell. Checkmk aktualisiert sich nicht von selbst, und omd update lädt keine neuen Versionen herunter. Für ein Checkmk-Update laden Sie zuerst das neue Paket herunter und installieren es wie bei der Erstinstallation. Mehrere Versionen können parallel installiert sein:
wget https://download.checkmk.com/checkmk/<neue-version>/check-mk-community-<neue-version>_0.trixie_amd64.deb
apt install -y ./check-mk-community-<neue-version>_0.trixie_amd64.deb
Danach die Site auf die neu installierte Version umstellen:
omd stop monitoring
omd update monitoring
omd start monitoring
Für die Monitoring-Konfiguration empfiehlt sich ein regelmäßiges Backup. Optionale automatische Offsite-Backups gibt es bei dataforest cloud als zubuchbare Zusatzoption.
Zusammenfassung
Der Monitoring-Server ist eingerichtet: Checkmk Community läuft als eigene Site, die Weboberfläche ist über Ihre Domain verschlüsselt erreichbar, und Caddy kümmert sich um das Zertifikat. Bisher überwacht Checkmk allerdings noch nichts.
Im nächsten Teil, Erste Hosts und Services hinzufügen, installieren Sie den Checkmk-Agenten auf dem ersten Server, lassen die Dienste automatisch erkennen und aktivieren die Änderungen. Weitere Möglichkeiten zeigt unsere Monitoring-Lösung.
