Ntfy: Push-Benachrichtigungen per HTTP einfach selbst hosten

Push-Benachrichtigungen vom eigenen Server aufs Smartphone zu senden, war lange umständlich: Pushover verlangt eine einmalige Gebühr, Firebase Cloud Messaging erfordert Google-Infrastruktur, und selbst einfache Lösungen benötigten komplizierte API-Setups. Ntfy (ausgesprochen "notify") löst dieses Problem radikal einfach: Eine HTTP-Anfrage mit beliebigem Text genügt, um eine Benachrichtigung aufs Telefon zu senden.

Was ist Ntfy?

Ntfy ist ein Open-Source-Publish-Subscribe-Benachrichtigungsdienst, entwickelt von Philipp Heckel und in Go geschrieben. Das Konzept ist denkbar einfach: Topics (Themen) funktionieren wie Kanäle. Wer auf ein Topic publiziert, sendet eine Nachricht; wer ein Topic abonniert, empfängt sie. Kein Account erforderlich, keine API-Keys für den Einstieg, keine komplizierte Konfiguration.

Das Projekt ist vollständig quelloffen und auf GitHub verfügbar. Es gibt einen kostenlosen öffentlichen Server unter ntfy.sh sowie die Möglichkeit, eine vollständige eigene Instanz zu betreiben.

Nachricht senden per HTTP – so einfach geht's

Das Senden einer Benachrichtigung ist buchstäblich eine Zeile:

curl -d "Backup erfolgreich abgeschlossen" ntfy.sh/mein-server-alerts

Alternativ mit HTTP PUT:

curl -X PUT -d "Festplatte fast voll: 95%" ntfy.sh/mein-server-alerts

Das Topic mein-server-alerts ist frei wählbar. Jeder, der dieses Topic abonniert, empfängt die Nachricht. Für private Benachrichtigungen sollte man einen langen, zufälligen Topic-Namen verwenden oder besser: eine eigene Instanz betreiben.

Nachrichten mit Priorität, Tags und Icons

Ntfy unterstützt HTTP-Header für zusätzliche Metadaten. Damit lassen sich Benachrichtigungen gezielt gestalten:

curl \
  -H "Title: Kritischer Fehler" \
  -H "Priority: urgent" \
  -H "Tags: warning,server" \
  -d "Der Dienst nginx ist nicht mehr erreichbar." \
  ntfy.sh/mein-server-alerts

Verfügbare Prioritätsstufen sind min, low, default, high und urgent. Urgent-Nachrichten umgehen auf Android den "Nicht stören"-Modus. Tags entsprechen Emoji-Aliasen (z. B. warning → ⚠️) und werden in der App angezeigt.

Tipp: Ntfy unterstützt auch das Senden von Anhängen (Bilder, Dateien bis 15 MB) sowie Click-Actions – die Benachrichtigung kann beim Antippen eine URL öffnen oder einen HTTP-Request auslösen. Das ist z. B. nützlich, um direkt aus der Benachrichtigung einen Dienst neu zu starten.

Subscribe: App, Web-UI und HTTP-Streaming

Nachrichten empfangen geht auf mehrere Wege:

Self-Hosting mit Docker

Eine eigene Ntfy-Instanz ist mit Docker in einer Minute eingerichtet:

docker run -p 80:80 -v /var/lib/ntfy:/var/lib/ntfy -d binwiederhier/ntfy serve

Für den Produktivbetrieb empfiehlt sich eine Konfigurationsdatei unter /etc/ntfy/server.yml, in der Authentifizierung, HTTPS, Attachment-Speicher und Nachrichtenaufbewahrung konfiguriert werden. Mit aktivierter Authentifizierung können Topics mit Passwörtern geschützt werden, sodass nur autorisierte Clients Nachrichten senden oder empfangen dürfen.

Achtung: Ohne Authentifizierung sind alle Topics auf eurem Server öffentlich lesbar und beschreibbar. Aktiviert unbedingt die Authentifizierung in der server.yml, bevor ihr euren ntfy-Server öffentlich erreichbar macht. Legt Nutzer mit ntfy user add an und vergebt Topic-Berechtigungen.

Ntfy.sh: Kostenloser öffentlicher Server

Für schnelle Tests und nicht-sensible Benachrichtigungen ist ntfy.sh ideal. Der Server ist kostenlos, ohne Account nutzbar und speichert Nachrichten für 12 Stunden (oder bis zu 4096 Nachrichten pro Topic). Das Rate-Limit liegt bei 60 Nachrichten pro Minute pro Besucher – für Server-Alerts mehr als ausreichend.

Anwendungsfälle in der Praxis

Ntfy ist besonders wertvoll für Automatisierungen und Server-Skripte. Typische Einsatzszenarien:

Vergleich: Ntfy vs. Pushover vs. Gotify vs. Apprise

Dienst Self-Hosted Kosten API-Einfachheit Android-App iOS-App Ohne Account nutzbar
Ntfy Ja (optional) Kostenlos Sehr einfach (curl) Ja (inkl. F-Droid) Ja Ja
Pushover Nein 5 $ einmalig je Plattform Einfach (API-Key) Ja Ja Nein
Gotify Ja (erforderlich) Kostenlos Einfach (Token) Ja Nein (inoffiziell) Nein
Apprise Ja (optional) Kostenlos Mittel (CLI/Library) Nein (keine eigene App) Nein Ja (als Aggregator)

Ntfy überzeugt durch die einfachste API aller verglichenen Lösungen und die Kombination aus Self-Hosting-Option und öffentlichem Server. Gotify ist ebenfalls eine gute Self-Hosted-Wahl, hat aber keine iOS-App. Pushover punktet durch Zuverlässigkeit und polierte Apps, erfordert aber eine einmalige Zahlung.

FAQ

Wie privat sind Nachrichten auf ntfy.sh?
Topics auf ntfy.sh sind nicht verschlüsselt und für jeden lesbar, der den Topic-Namen kennt. Verwendet lange, zufällige Topic-Namen oder – für sensible Daten – eine eigene Instanz mit Authentifizierung.
Kann Ntfy Nachrichten zeitverzögert zustellen?
Ja, über den Header Delay können Nachrichten zu einem späteren Zeitpunkt zugestellt werden. Das ist z. B. nützlich für zeitgesteuerte Erinnerungen aus Skripten.
Funktioniert Ntfy auch ohne Internetverbindung im lokalen Netz?
Ja, eine eigene Instanz im Heimnetz funktioniert lokal ohne Internetverbindung. Die Android-App kann auf lokale Server umgestellt werden.
Wie viele Nachrichten kann ich pro Tag senden?
Auf ntfy.sh liegt das Limit bei 250 Nachrichten pro Tag ohne Account. Mit einer eigenen Instanz gibt es kein Limit – ihr seid nur durch eure eigene Hardware eingeschränkt.

Fazit

Ntfy ist das eleganteste Werkzeug für Push-Benachrichtigungen in Automatisierungsprojekten. Die API ist so einfach, dass sie in jedem Shell-Skript ohne zusätzliche Abhängigkeiten funktioniert. Wer Wert auf Datenschutz legt, betreibt eine eigene Instanz; für schnelle Tests reicht ntfy.sh vollkommen aus. Für Serverbetreiber, Homelab-Enthusiasten und Entwickler ist ntfy ein unverzichtbares Werkzeug im Toolkit.