# 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). ```json { "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.