Monitoring

Checkmk Monitoring-Server einrichten

Schritt-für-Schritt-Anleitung, um Checkmk Community auf einem dataforest Seed zu installieren, eine Monitoring-Site anzulegen und die Weboberfläche per Caddy mit automatischem HTTPS bereitzustellen.

AutorMarc Hülsbeck
Veröffentlicht am12. Juni 2026
Min. Lesezeit~12 min
Wörter2.000
Schwierigkeit Fortgeschritten
StackCheckmk · Monitoring · Caddy · Observability

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:

bash
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:

bash
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:

bash
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):

bash
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:

bash
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:

bash
omd create monitoring

Der Befehl gibt am Ende den automatisch erzeugten Zugang aus. Diese Zeile enthält das Passwort, notieren Sie es:

text
The admin user for the web applications is cmkadmin with password: HmKp7xQ2

Alternativ lässt sich das Passwort direkt selbst setzen:

bash
omd create --admin-password 'IhrSicheresPasswort' monitoring

Anschließend die Site starten:

bash
omd start monitoring

Den Status der Site und ihrer Dienste prüfen:

bash
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:

bash
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:

bash
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:

bash
exit

Die Site lauscht nun ausschließlich lokal auf Port 5000. Das lässt sich direkt prüfen:

bash
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:

bash
systemctl disable --now apache2

Caddy installieren

Auf Debian/Ubuntu ist Caddy in den Paketquellen enthalten:

bash
apt install -y caddy

Auf AlmaLinux/RockyLinux ist Caddy nicht in EPEL enthalten, hier wird das COPR-Repository genutzt:

bash
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:

bash
nano /etc/caddy/Caddyfile

Den Inhalt durch folgende Konfiguration ersetzen. monitoring.example.com durch Ihre Domain ersetzen:

caddy
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:

bash
systemctl reload caddy

Caddy fordert beim ersten Aufruf der Domain automatisch ein Let's-Encrypt-Zertifikat an. Den Status prüfen:

bash
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:

bash
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:

NameQuellenProtokollPort
SSHAlle IPv4, Alle IPv6TCP22
HTTPAlle IPv4, Alle IPv6TCP80
HTTPSAlle IPv4, Alle IPv6TCP443
PingAlle IPv4, Alle IPv6ICMP-

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:

NameZieleProtokollPort
DNSAlle IPv4, Alle IPv6UDP, TCP53
NTPAlle IPv4, Alle IPv6UDP123
HTTP/HTTPSAlle IPv4, Alle IPv6TCP80, 443
Checkmk-AgentAlle IPv4, Alle IPv6TCP6556
E-MailAlle IPv4, Alle IPv6TCP587
PingAlle IPv4, Alle IPv6ICMP-

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):

bash
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.

Checkmk-Dashboard nach der Anmeldung
Checkmk-Dashboard nach der Anmeldung

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:

bash
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:

bash
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.

Bereit loszulegen?

Erstellen Sie Ihren ersten Seed und starten Sie in wenigen Minuten.