Anleitung

Installation

Du brauchst einen Linux-Server (x86-64 oder ARM64) mit Docker und dem Compose-Plugin, eine Domain, die auf den Server zeigt, freie Ports 80 und 443 und etwa 2 GB RAM.

  1. Lege beim Domain-Anbieter einen DNS-Eintrag an, z. B. status.example.org mit A (und gern AAAA) auf die Adresse deines Servers.
  2. Melde dich per SSH auf dem Server an und starte die Installation:
  3. Gib die Domain ein. Das Skript lädt die aktuelle Version nach /opt/stacktra-monitor, prüft die Prüfsumme, erzeugt zufällige Schlüssel, startet alles, richtet das nächtliche Backup ein und zeigt am Ende den Einrichtungscode.
  4. Öffne https://status.example.org/setup, gib den Code ein und folge dem Assistenten: Name, Konto, zweiter Faktor (App, E-Mail oder Discord) und erste Monitore.
curl -fsSL https://stacktra.de/install.sh | sudo bash

Ohne Rückfragen, z. B. aus einem Skript: curl -fsSL https://stacktra.de/install.sh | sudo DOMAIN=status.example.org bash

Einrichtungscode nicht notiert? cd /opt/stacktra-monitor && sudo docker compose logs panel | grep "setup code"

Lieber von Hand

Unter https://stacktra.de/download/latest.json stehen Dateiname und SHA-256 der aktuellen Version. Herunterladen, mit sha256sum -c prüfen, entpacken und im entpackten Ordner sudo deploy/install.sh starten.

Monitore

Unter Admin → „Monitor hinzufügen“: Typ wählen, Ziel eintragen, Intervall und Fehlversuche festlegen. „Test ausführen“ prüft sofort, bevor du speicherst.

  • Öffentlich oder privat: Öffentliche Monitore erscheinen auf der Statusseite, private nur angemeldet.
  • Gruppen und Reihenfolge ordnest du per Drag & Drop.
  • „Hängt ab von“ verbindet Geräte: Fällt der Switch, gibt es einen Alarm statt einen pro Gerät dahinter. Die Topologie (Admin → Topologie) zeigt den Baum.
  • Umgekehrter Modus: „erreichbar = Problem“, z. B. für einen Port, der nie offen sein soll.
  • Push-Monitore: Ein Dienst meldet sich selbst, z. B. ein Backup-Skript am Ende per curl. Bleibt die Meldung aus, gilt er als gestört. Die Adresse steht im Editor.

Agent fürs Homelab

Der Agent prüft alles, was das Panel nicht direkt erreicht, zum Beispiel Geräte in deinem Heimnetz. Er läuft als kleiner Docker-Container auf einem Rechner im Homelab und verbindet sich nur nach außen zum Panel – zu Hause muss kein Port offen sein.

  1. Im Panel: Einstellungen → Prüfstandorte → „Agent hinzufügen“, Name z. B. „Homelab“.
  2. Das Panel zeigt einen Befehl mit einem Einmal-Code (30 Minuten gültig). Führe ihn auf dem Rechner im Homelab aus:
  3. Im Monitor-Editor wählst du ab jetzt bei „Geprüft von“ den Standort „Homelab“.
curl -fsSL https://status.example.org/agent/install.sh | sudo bash -s -- EINMAL-CODE

Update des Agents: denselben Befehl ohne Code noch einmal ausführen. SSH-Monitore führt der Agent nur aus, wenn du es erlaubst: --ssh anhängen.

Benachrichtigungen

Discord per Webhook

In Discord: Kanal-Einstellungen → Integrationen → Webhooks → „Neuer Webhook“ → URL kopieren. Im Panel unter Einstellungen → Benachrichtigungen einen Discord-Kanal mit dieser URL anlegen.

E-Mail

Unter Einstellungen → E-Mail den SMTP-Server eintragen und eine Testmail schicken. Danach unter Benachrichtigungen einen E-Mail-Kanal anlegen.

Discord-Bot (optional)

  1. Auf discord.com/developers eine neue Application anlegen. Unter „Bot“: „Reset Token“, den Token kopieren und „Public Bot“ ausschalten.
  2. Unter OAuth2 → URL Generator: Scopes „bot“ und „applications.commands“, Rechte „Nachrichten senden“, „Links einbetten“, „Nachrichtenverlauf lesen“. Die URL öffnen und deinen Server wählen.
  3. Im Panel unter Einstellungen → Discord-Bot den Token eintragen, den Alarm-Kanal wählen (oder in Discord /setup channel) und die Rolle, die Buttons und Befehle nutzen darf.

Alarm-Regeln unter Einstellungen → Benachrichtigungen: Eskalationsstufen, Ruhezeiten, Erinnerungen, Bündeln und Flatterschutz.

Statusseite, Vorfälle, Wartungen

Die Statusseite unter deiner Domain zeigt nur öffentliche Monitore. Angemeldet siehst du unter /monitoring alle mit Details.

  • Vorfälle entstehen bei Ausfällen automatisch. Updates schreibst du im Panel oder per Button im Discord; Besucher sehen sie auf der Statusseite.
  • Wartungen (Admin → Wartungen) unterdrücken Alarme und zählen nicht gegen die Verfügbarkeit. „Was wäre wenn?“ in der Topologie plant eine Wartung für ein Gerät und alles dahinter.
  • Status-Abos: Besucher abonnieren Ausfälle per E-Mail (Einstellungen → Benachrichtigungen → Status-Abos).
  • Badges und ein Widget für andere Websites gibt es unter Einstellungen → Einbetten.
  • Impressum und Datenschutz: Einstellungen → Impressum & Datenschutz.

API

Unter Einstellungen → API legst du Schlüssel an: „Nur lesen“ oder „Lesen + schreiben“. Ein Schlüssel darf nie mehr als die Person, die ihn erstellt hat. Alle Befehle und Beispiele stehen dort im Panel.

curl -H "Authorization: Bearer stk_…" https://status.example.org/api/v1/summary

Wartung aus einem Skript, z. B. während eines Updates:

curl -X POST -H "Authorization: Bearer stk_…" -H "Content-Type: application/json" \
  -d '{"title": "Proxmox-Update", "groupIds": ["3"], "minutes": 30}' \
  https://status.example.org/api/v1/maintenances

Updates und Backups

Das Panel zeigt neue Versionen unter Einstellungen → System und schickt eine Nachricht. Ein Update:

sudo /opt/stacktra-monitor/deploy/deploy.sh

Das holt die neue Version, prüft sie, macht ein Backup, baut neu, startet und prüft, ob alles läuft. Die vorige Version bleibt bis zum nächsten Update in /opt/stacktra-monitor.old.

Backups: jede Nacht um 03:15 nach /var/backups/stacktra (die letzten 14). Im Panel unter Einstellungen → Backup gibt es zusätzlich verschlüsselte Backups zum Herunterladen und Wiederherstellen.

Sichere /opt/stacktra-monitor/deploy/.env an einem anderen Ort. Ohne den SECRET_KEY darin sind gespeicherte Passwörter in Monitoren nicht mehr lesbar.

Server-Schutz (Ubuntu)

Optional für Ubuntu-Server: Sperrlisten bekannter Angreifer (Spamhaus, blocklist.de u. a., alle 4 Stunden neu), Limits gegen Floods, eine Port-Scan-Falle, fail2ban für SSH und Web, SSH nur mit Schlüssel und eine Discord-Nachricht, wenn der Server dich braucht (z. B. Neustart nach Updates).

sudo bash /opt/stacktra-monitor/deploy/guard/install.sh

Lege vorher einen SSH-Schlüssel für root an – danach geht SSH nur noch damit. Ohne deine Bestätigung stellt das Skript nach 5 Minuten alles zurück. Öffnest du später weitere Ports, trage sie auch in /etc/stacktra-guard/ports.nft ein.

Fehlersuche

  • Läuft alles? cd /opt/stacktra-monitor && sudo docker compose ps
  • Was sagt das Panel? sudo docker compose logs -f panel
  • Kein HTTPS-Zertifikat: Zeigt die Domain auf den Server (dig +short status.example.org)? Sind Port 80 und 443 offen?
  • Im Panel unter Einstellungen → System: Zustand von Datenbank, Speicherplatz, Uhrzeit, Zertifikat und Agents.