2.8 KiB
title, description, published, date, tags, editor, dateCreated
| title | description | published | date | tags | editor | dateCreated |
|---|---|---|---|---|---|---|
| Host-Wartungsbenachrichtigungen | Pre-Update-Mail & Matrix-Benachrichtigungen | true | 2026-08-13T18:04:30.981Z | markdown | 2026-08-13T18:04:30.981Z |
Status: ✅ Deployed + live getestet (2026-07-29/30, Closes Issue #24)
Konfiguration: host-config/maintenance-notify/ (nicht via Flux/GitOps deployt - läuft
auf dem nackten Host, kein Kubernetes-Pod)
Überblick
unattended-upgrades lief bereits aktiv auf dem Host (nur nie dokumentiert). Neu: eine
Benachrichtigung vor dem täglichen Update-Lauf (apt-daily-upgrade.timer,
06:00-07:00-Fenster), per E-Mail und Matrix, damit man weiß "gleich läuft ein Update" und im
Störungsfall danach sofort den Zusammenhang sieht.
Bewusst generisch gehalten (host-config/maintenance-notify/ im Repo) - instanzspezifische
Werte (Domain, Raum, Mail-Adressen) stecken in /etc/maintenance-notify/config, nicht im
Skript. Volle Anleitung inkl. Stolpersteinen:
docs/deployment-guides/07-host-maintenance-notifications.md.
Architektur
- Eigener systemd-Timer (
maintenance-notify.timer, fest05:00, kein Randomize) läuft vor dem echten Update-Fenster. - Skript prüft via
unattended-upgrade --dry-run -v, ob überhaupt Pakete anstehen - wenn nicht, keine Benachrichtigung (kein täglicher Alarm-Spam). - Zustellung nur bei anstehenden Updates: Mail via
msmtp, Matrix viacurlals Reply in einem bestehenden Thread (m.relates_to: m.thread). - Bot-Account (
mas-cli register-user+issue-compatibility-token, identisches Muster wie Draupnir, siehe Moderation-Content-Scanning) muss dem Zielraum aktiv beitreten, nicht nur eingeladen sein.
Stolpersteine (live gefunden)
- Port 465 kann ausgehend blockiert sein, 587 aber nicht - bei axion1337.chat sowohl zu IONOS als auch testweise zu Gmail (stiller Timeout statt Reject, typisch für eine Cloud-Provider-Firewallregel). Vor Auth-Debugging erst TCP-Erreichbarkeit prüfen.
msmtp'spasswordevalübernimmt einen Trailing-Newline aus der Passwort-Datei wörtlich - bricht die Auth.printf %s "$(cat datei)" > dateifixt das.- Mail-Domain ≠ Matrix-Domain möglich (bei axion1337: Mail unter
.de, Matrix unter.chat) -MAIL_FROMmuss zur tatsächlichen Mail-Domain passen. MATRIX_HOMESERVERist oft eine eigene Subdomain (matrix.axion1337.chat), nicht die Apex-Domain - vorher.well-known/matrix/clientprüfen.
Beispiel: axion1337.chat
Homeserver matrix.axion1337.chat, Raum "wartung" im Space "operating", Reply in
vorhandenem Thread. Mail: wartung@axion1337.de über IONOS SMTP (smtp.ionos.de:587,
STARTTLS) an die private Hauptadresse des Betreibers.