Zum Inhalt springen

Benachrichtigungen

Envoryx läuft meistens auf einem Rechner, auf den du nicht den ganzen Tag schaust. Benachrichtigungen sorgen dafür, dass du trotzdem mitbekommst, wenn ein Projekt umfällt oder ein Backup scheitert. Du richtest sie unter Einstellungen → Benachrichtigungen ein: Kanal wählen, die Ereignisse auswählen, die dich interessieren, und einen Test schicken, ob er ankommt.

Die Einstellungen für Benachrichtigungen mit ntfy als Kanal, der Topic-URL und der Liste der EreignisseDie Einstellungen für Benachrichtigungen mit ntfy als Kanal, der Topic-URL und der Liste der Ereignisse

Envoryx erreicht dich über ntfy, einen Discord-Webhook, einen Slack-Webhook, einen Telegram-Bot, E-Mail über SMTP oder einen allgemeinen Webhook mit JSON-Body, falls du es an etwas Eigenes anbinden willst. Für E-Mail mit Anmeldung muss der Server STARTTLS oder TLS können - dein Passwort schickt Envoryx nicht im Klartext.

Der allgemeine Webhook bekommt einen POST mit Content-Type: application/json und User-Agent: Envoryx. Der Body ist flach, ein kleines Skript kann ihn also ohne Raten zerlegen:

{
"kind": "backup.failed",
"level": "error",
"title": "…",
"message": "…",
"project": "Shop",
"time": "2026-10-07T13:40:12Z"
}

kind ist ein fester Schlüssel wie backup.failed oder branch.changed, level ist info, warning oder error, und project bleibt leer bei Ereignissen, die kein einzelnes Projekt betreffen. Ein gescheiterter Offsite-Upload eines Projekt-Backups nennt sein Projekt, auch wenn das Projekt inzwischen gelöscht ist.

Die Zugangsdaten für all das liegen in /config/notify.json (Modus 0600), verschlüsselt mit dem Secret Key, und gehen nie zurück an den Browser.

Ereignis Wann
Projekt gestoppt oder kaputt ein Projekt, das laufen sollte, läuft nicht - und wieder, wenn es sich erholt
Anwendung ausgefallen der Health-Check schlägt dreimal hintereinander fehl - und wenn sie wieder antwortet
Speicher voll ein Container hat sein Speicherlimit erreicht und ein Prozess wurde beendet
Projekt anlegen fehlgeschlagen
Backup fehlgeschlagen ein manuelles, geplantes oder Offsite-Backup ist gescheitert
Cron-Job fehlgeschlagen ein Cron-Lauf ist gescheitert oder ins Timeout gelaufen
Branch-Umgebung fehlgeschlagen eine Branch-Umgebung ließ sich nicht anlegen oder ihr Deploy ist gescheitert
Branch-Umgebung geändert eine Branch-Umgebung wurde angelegt, mit ihrem Branch gelöscht oder wegen Inaktivität gestoppt
Wenig Speicherplatz /config, /projects oder /backups unter 2 GiB oder 5 % frei - und wenn es wieder passt
Verwaiste entfernt Envoryx hat übrig gebliebene Container oder Netze von selbst entfernt
Projekte fortgesetzt Envoryx hat nach seinem eigenen Neustart Projekte wieder gestartet
Let’s-Encrypt-Erneuerung fehlgeschlagen oder erfolgreich
Envoryx gestartet / fehlgeschlagen ein Start, oder ein verweigerter Start (defekte Datenbank, Netzwerk-Dateisystem, fehlgeschlagene Migration) und abgestürzte Hintergrundaufgaben

Standardmäßig ist alles an, außer Let’s Encrypt erneuert, Envoryx gestartet und Branch-Umgebung geändert - das sind gute Nachrichten oder Routine, und das nervt schnell.

Damit dein Handy nicht jede Minute summt, werden Wiederholungen gedrosselt: Ein ungesundes Projekt meldet sich alle 6 Stunden, eine fehlgeschlagene Erneuerung einmal am Tag. Die Nachricht über einen gescheiterten Start ist etwas Besonderes: Sie braucht die Datenbank von Envoryx nicht, nur den Kanal in /config/notify.json. So erreicht sie dich genau dann, wenn Envoryx seine Datenbank nicht öffnen kann. Eine Lücke gibt es: notify.json ist mit dem Secret Key versiegelt, ein Start, der an einem falschen oder fehlenden Schlüssel scheitert, kann also nichts senden. Der Container startet dann stumm in einer Schleife neu. Verlässt du dich auf Alarme, lass deine Container-Überwachung deshalb auch auf Neustart-Schleifen achten. Welche Schlüssel-ID Envoryx erwartet, steht im Log.

Bringt ein Update eine neue Art von Ereignis mit, folgt sie ihrem Standard, bis du deine Ereignisauswahl wieder speicherst. Ein neuer Alarm ist also nie still abgeschaltet, nur weil es ihn beim letzten Speichern noch nicht gab.