docs: create betrieb/host-maintenance-notifications

This commit is contained in:
Administrator
2026-08-13 18:04:36 +00:00
committed by ThreadNet Wiki
parent 270f9cd031
commit aeaebb936b
+55
View File
@@ -0,0 +1,55 @@
---
title: Host-Wartungsbenachrichtigungen
description: Pre-Update-Mail & Matrix-Benachrichtigungen
published: true
date: 2026-08-13T18:04:30.981Z
tags:
editor: markdown
dateCreated: 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](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/src/branch/main/docs/deployment-guides/07-host-maintenance-notifications.md).
## Architektur
- Eigener systemd-Timer (`maintenance-notify.timer`, fest `05: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 via `curl` als 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](/betrieb/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`'s `passwordeval` übernimmt einen Trailing-Newline aus der Passwort-Datei wörtlich -
bricht die Auth. `printf %s "$(cat datei)" > datei` fixt das.
- Mail-Domain ≠ Matrix-Domain möglich (bei axion1337: Mail unter `.de`, Matrix unter `.chat`) -
`MAIL_FROM` muss zur tatsächlichen Mail-Domain passen.
- `MATRIX_HOMESERVER` ist oft eine eigene Subdomain (`matrix.axion1337.chat`), nicht die
Apex-Domain - vorher `.well-known/matrix/client` prü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.