docs: create betrieb/host-maintenance-notifications
This commit is contained in:
committed by
ThreadNet Wiki
parent
270f9cd031
commit
aeaebb936b
@@ -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.
|
||||
Reference in New Issue
Block a user