Ich wollte immer Benachrichtigungen haben – vom Server, vom Backup, vom Cron-Job. Aber jedes Mal eine E-Mail aufsetzen oder einen Messenger anbinden ist Overkill. Dann habe ich ntfy gefunden: Ein simpler Push-Dienst, den man selbst hostet, und der in zehn Minuten eingerichtet ist.
Was ist ntfy?
ntfy ist ein Open-Source-Push-Benachrichtigungsdienst. Er tut genau eine Sache: Eine Nachricht senden, die auf dem Handy oder im Browser ankommt. Kein Account, kein Passwort, kein Framework. Man publisht eine Nachricht auf einen Topic, und jeder, der den Topic abonniert hat, bekommt sie als Push.
# Nachricht senden (curl)
curl -d "Backup erfolgreich" ntfy.sh/mein-topic
# Oder auf eigenem Server
curl -d "Backup erfolgreich" https://ntfy.frischux.de/mein-topic
Das war's. Kein API-Key, kein OAuth, kein JSON. Nur eine POST-Request mit Klartext.
Warum nicht einfach E-Mail?
E-Mail funktioniert, aber:
| Aspekt | ntfy | |
|---|---|---|
| Einrichtung | SMTP-Server, DNS, DKIM | apk add ntfy |
| Latenz | Sekunden bis Minuten | <1 Sekunde |
| Push aufs Handy | Ja (aber App nötig) | Ja (ntfy-App) |
| Verlässlichkeit | Spam-Filter, Bounce | Immer ankommen |
| Code-Aufwand | 10+ Zeilen | 1 Zeile |
Für echte Benachrichtigungen ist ntfy schneller und zuverlässiger. Kein Spam-Filter, kein SMTP-Quatsch, kein "ist die Mail angekommen?".
Einrichtung
Am einfachsten per Docker:
services:
ntfy:
container_name: ntfy
image: binwiederhier/ntfy:latest
restart: unless-stopped
command: serve
ports:
- "8080:80"
volumes:
- ./cache:/var/cache/ntfy
- ./etc:/etc/ntfy
Oder, bei mir im Alpine-LXC:
apk add ntfy
rc-update add ntfy default
rc-service ntfy start
Konfiguration in /etc/ntfy/server.yml:
listen-http: ":80"
behind-proxy: true
cache-file: "/var/cache/ntfy/cache.db"
cache-duration: "24h"
Nach dem Start erreichst du das Web-UI unter https://ntfy.frischux.de. Themen werden dynamisch angelegt – niemand muss einen "Account" erstellen.
Der Alltag
Auf dem Terminal
# Backup-Status melden
restic backup /var/data && curl -d "Backup erfolgreich ($(date +%d.%m.%Y))" ntfy.sh/backups
# Error-Monitoring
tail -f /var/log/nginx/error.log | grep "500" | while read line; do
curl -d "500-Fehler: $line" ntfy.sh/errors
done
Auf dem Handy
Die ntfy-App (F-Droid, App Store) abonniert Themen per URL. Einfach https://ntfy.frischux.de/mein-topic eintragen, und schon kommen Push-Nachrichten.
Im Browser
ntfy hat ein eingebautes Web-UI, das auch als Progressive Web App (PWA) funktioniert. Einfach https://ntfy.frischux.de öffnen und als "App installieren".
Sicherheit
ntfy unterstützt Basic Auth und ACLs:
# server.yml
auth-file: "/etc/ntfy/user.db"
auth-default-access: "deny-all"
# Zugriff konfigurieren
acl:
- user: "floyd"
topic: "*"
permissions: ["read", "write", "admin"]
Ohne Auth ist jeder Topic frei lesbar und beschreibbar. Für einen öffentlichen Server ist das ein Problem, für einen privaten im Heimnetz eher egal.
Was ntfy nicht kann
- Keine Persistenz – Nachrichten verschwinden nach dem Lesen
- Kein Gruppen-Chat – es ist ein Einweg-Kanal, kein Messenger
- Keine Anhänge – nur Klartext, keine Bilder oder Dateien
- Keine Bestätigung – der Sender weiß nicht, ob die Nachricht
(Cache ausgenommen) angekommen ist
Das sind keine Schwächen, sondern Fokus. ntfy ist ein Benachrichtigungskanal, kein Messenger-Ersatz.
Fazit
ntfy ist der Benachrichtigungsdienst, den ich mir gewünscht habe: Ein Curl-Befehl, eine App, keine Abhängigkeiten. Für Backup-Status, Monitoring, Cron-Job-Ergebnisse – alles, was man als Nachricht aufs Handy will, ohne den Overhead eines Messenger-Bots.
Auf dem Server läuft es als 30-MB-Binary, im LXC als Alpine-Paket, die App ist gratis, und die Einrichtung dauert fünf Minuten. Manchmal ist das Simple das Beste.
