Das Werkzeug, das den Server überwacht, auf dem meine Websites und Apps laufen: Jede Minute prüft es Websites, Zertifikate, DNS, Container und Dienste, Backups, Speicher und Deployments, und wenn etwas ausfällt, schreibt es mir per Telegram – einmal und noch einmal, wenn alles wieder läuft. Es liest nur, ohne Rechte. Das Dashboard lässt sich mit einem erfundenen Server ausprobieren.
Auf meinem Server laufen rund zwanzig Websites und Apps: Kundenseiten, Demoseiten und meine eigenen Apps. **Sentinella** (italienisch für „Wache“) überwacht sie, und ich nutze es wirklich: Es ist keine Demo für ein erfundenes Unternehmen, auch wenn man es von hier aus mit einem erfundenen Server ausprobiert.
**Was es tut**
- **Websites**, jede Minute: Statuscode, Antwortzeit und Inhalt ihrer Prüfseite, und über dieselbe Verbindung das Zertifikat, mit Erinnerungen nach 30, 14 und 7 Tagen. - **DNS**, direkt bei den Servern des Anbieters: Jeder Name muss zum Server führen, ohne überzählige IPv6-Adresse – ein Fehler, den ich schon einmal hatte. - Die Docker-**Container**, in denen die Apps laufen, und die **Dienste und Timer** des Servers: was steht, was ständig neu startet oder keinen Speicher mehr hat, und die nächtlichen Datenbank-Backups: erfolgreich, verspätet, und welche Apps gar keins haben. - **Speicher, Swap, Festplatten und Last** sowie der Speicher jedes Containers, aus dem System gelesen, ohne etwas zu installieren. - **Deployments** der GitHub Actions, die als Markierungen im Antwortzeit-Diagramm jeder Website erscheinen.
Wenn etwas ausfällt, schreibt es mir einmal per Telegram und noch einmal, wenn alles wieder läuft, mit der Dauer. Ausfälle, die gleichzeitig beginnen, werden zu einer einzigen Nachricht; nachts kommen die Nachrichten lautlos, und während eines Updates lassen sie sich pausieren.
**Das Schwierigste: die Sicherheit.** Ein Werkzeug, das den ganzen Server sieht, darf keine Landkarte für Angreifer werden. Sentinella **liest nur**: Es läuft in einem Container ohne Rechte, nur lesend, und kann nichts neu starten; Docker sieht es über einen Proxy, der die Containerliste und ihre Ereignisse durchlässt, nie aber die Inspektion, die die Passwörter der anderen Apps verraten würde. Das Dashboard ist durch Passwort und den Code einer Authenticator-App geschützt. Die **öffentliche Statusseite** hat eine feste Liste von Feldern: Sie zeigt nur, ob jede Website läuft, und ihre Verfügbarkeit über 30 Tage; ein automatischer Test schlägt fehl, wenn ein Port oder Pfad hineingerät. Und weil ein Monitor auf demselben Server dessen Ausfall nicht melden kann, sendet es jede Minute ein Signal an Healthchecks.io, das mich von außen warnt.
Den Speicher des Servers teilen sich rund zwanzig Apps: Sentinella hat eine Obergrenze von 160 MB und speichert die Prüfungen in einer Zeile pro Website und Stunde.
Die Demo läuft im Browser, auf einem erfundenen Server mit neun Websites: Nach anderthalb Minuten antwortet eine davon nicht mehr, und man sieht den Vorfall und die Telegram-Nachricht, die gekommen wäre.
Vue 3 und TypeScript mit Nuxt UI, Fastify und PostgreSQL, in Docker-Containern unter Debian. Jede Änderung durchläuft 402 automatische Tests; ein Release baut das Image auf dem Server, sichert vorher die Datenbank und kehrt von selbst zur vorherigen Version zurück, wenn die neue nicht antwortet.
Konzeption, Full-Stack-Entwicklung und Inbetriebnahme · 2026
Vue.js, Fastify, PostgreSQL, Docker