server-up/docs/meldingen.md
Ramon 87fb9d19d1
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 1m22s
v0.7.50-beta - meldingen, schijfruimte, backups controleren en extern wegzetten
Het onbewaakte deel was de zwakke plek: geplande taken draaiden 's nachts en
een storing kwam alleen in het auditlog terecht.

Meldingen (core/notify.py):
- ntfy, webhook (Discord/Slack/Gotify) en e-mail, alle drie met de
  standaardbibliotheek.
- Gebeurtenissen: mislukte backup, onleesbaar archief, vastgelopen taak,
  weinig schijfruimte, beschikbare update, gestopte container.
- Eén bericht per ronde; bij schijfruimte en gestopte containers alleen bij
  de overgang, zodat je niet elk uur hetzelfde krijgt.
- Testknop die eerst opslaat, zodat je test wat je net hebt ingevuld.
- send() gooit nooit: het kanaal mag de taak die de melding veroorzaakte niet
  alsnog laten omvallen.

Schijfruimte (core/diskspace.py):
- Controle vóór elke backup; past het niet, dan weigeren in plaats van
  halverwege afbreken.
- DISK_MIN_FREE_GB blijft gereserveerd, DISK_WARN_PCT kleurt de balk rood.
- Per filesystem één regel in de backuplijst.

Backups controleren:
- Elk nieuw archief wordt helemaal uitgelezen (tar-structuur plus
  gzip-checksum, die aan het eind staat).
- Diepe variant pakt echt uit naar een tijdelijke map, met dezelfde
  beperkingen als een echt herstel.
- Resultaat staat in de metadata en als schildje in de lijst.

Backups de deur uit:
- Downloadknop.
- BACKUP_OFFSITE_DIR kopieert elke nieuwe backup naar een gemounte schijf,
  NFS- of SMB-share, via .part zodat een afgebroken kopie herkenbaar onaf is.
- Ruimtecontrole op de bestemming, want een weggevallen mount laat vaak een
  lege map op de systeemschijf achter.

NOTIFY_TOKEN en NOTIFY_EMAIL_PASSWORD zijn write-only.

Nieuw: docs/meldingen.md; docs/backups.md uitgebreid. Getest tegen een
draaiende server met een echte ontvanger. 1064 tests groen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb
2026-07-28 19:41:35 +02:00

4.2 KiB

Meldingen

Geplande backups, de updatecheck en de bewaking van je containers draaien in de achtergrond, meestal 's nachts. Zonder meldingen komt een storing alleen in het auditlog terecht — en dat lees je pas als je al een probleem hebt. Een backup die drie weken stilletjes faalt, ontdek je op het slechtst denkbare moment.

Instellen doe je onder Instellingen → Meldingen.


Kanalen

Alle drie werken met wat er al in Server Up zit; er komt geen extra software of account aan te pas.

ntfy

Het eenvoudigst als je iets op je telefoon wil. Installeer de ntfy-app, verzin een topicnaam die niet te raden is, en vul de URL in:

https://ntfy.sh/serverup-a7f3k9x2

Iedereen die de topicnaam kent kan meelezen én zelf berichten sturen, dus kies iets willekeurigs. Draai je een eigen ntfy-server met toegangscontrole, vul dan ook het token in; dat gaat mee als Authorization: Bearer ….

Webhook

Een POST met een JSON-body. Dezelfde instelling werkt voor Discord, Slack, Gotify en zelfgebouwde ontvangers: de body bevat naast title en message ook content (wat Discord leest) en text (wat Slack leest).

{
  "title":   "1 backup(s) mislukt",
  "message": "De geplande backup is niet gelukt voor:\n\n• vaultwarden: …",
  "content": "**1 backup(s) mislukt**\n…",
  "text":    "*1 backup(s) mislukt*\n…",
  "priority": "hoog",
  "source":  "server-up"
}

Voor Discord gebruik je de webhook-URL uit Kanaalinstellingen → Integraties.

E-mail

SMTP met STARTTLS (standaard), SSL/TLS of onversleuteld. Vul server, poort, gebruikersnaam, wachtwoord, afzender en ontvanger in.

Gebruik je Gmail of Microsoft 365, dan heb je een app-wachtwoord nodig; je gewone wachtwoord wordt geweigerd.


Waarover je bericht krijgt

Gebeurtenis Wanneer
backup_failed Een geplande backup is voor een of meer stacks mislukt
backup_verify Een archief bleek niet leesbaar bij de controle
job_failed Een geplande taak liep vast
disk_low Een schijf zakte onder de ingestelde drempel
update_available Er staat een nieuwe versie klaar
stack_down Een container die zou moeten draaien, draait niet meer

Standaard staan alleen de storingen aan. "Update beschikbaar" is nuttig maar geen probleem, dus die vink je zelf aan.

Er komt één bericht per ronde, niet één per stack: bij een volle schijf faalt alles tegelijk en dan wil je geen twintig meldingen. Voor disk_low en stack_down wordt alleen de overgang gemeld — anders krijg je elk uur hetzelfde bericht tot je het oplost.


Testen

Met Test versturen stuurt Server Up meteen een bericht via het ingestelde kanaal. De instellingen worden eerst opgeslagen, zodat je test wat je net hebt ingevuld en niet de vorige waarden.

Komt het niet aan, dan staat de foutmelding erbij: een HTTP-code bij ntfy en webhooks, de SMTP-fout bij e-mail. Elke poging komt ook in het auditlog onder bron notify, dus je kunt teruglezen of er gemeld is — en of dat lukte.


Wat er níét gebeurt

Een storing in het meldingskanaal mag nooit de taak omvergooien die de melding veroorzaakte. Mislukt het versturen, dan gaat de backup gewoon door en vind je het terug in het auditlog. Een onbereikbare ntfy-server maakt dus geen kapotte backup.


Instellingen

Sleutel Standaard Betekenis
NOTIFY_CHANNEL leeg ntfy, webhook, email, of leeg voor uit
NOTIFY_URL leeg Topic- of webhook-URL
NOTIFY_TOKEN leeg Bearer-token; wordt nooit teruggegeven door de API
NOTIFY_EVENTS storingen Lijst met gebeurtenissen hierboven
NOTIFY_EMAIL_HOST leeg SMTP-server
NOTIFY_EMAIL_PORT 587 SMTP-poort
NOTIFY_EMAIL_SECURITY starttls starttls, ssl of geen
NOTIFY_EMAIL_USER leeg Gebruikersnaam
NOTIFY_EMAIL_PASSWORD leeg Wachtwoord; wordt nooit teruggegeven
NOTIFY_EMAIL_FROM leeg Afzender
NOTIFY_EMAIL_TO leeg Ontvanger
STACK_DOWN_CHECK true Containers bewaken die zouden moeten draaien

Het token en het SMTP-wachtwoord zijn write-only: je kunt ze instellen, maar de API geeft ze nooit terug — alleen of ze gevuld zijn. Een leeg veld betekent bij het opslaan "niet wijzigen", net als bij de git-tokens.