Viele Leser kennen sicher Telegram, Discord, Matrix, Pushover, Ntfy, die Nachrichten von wichtigen Ereignissen an ein Smartphone senden. Man kann sicher E-Mail benutzen, nur ist das nicht mehr State of the Art im Jahr 2023 und ist sicher nur in bestimmten Anwendungsfällen sinnvoll anwendbar.
Wie wäre es, einen eigenen Benachrichtigungsserver ( Notification Server ), der OpenSource ist, mit Docker zu betreiben?
Es gibt eine Lösung und die nennt sich „Gotify“ als OpenSource Projekt.
- Weboberfläche zum Administration
- Weboberfläche zum senden und empfangen von Nachrichten
- Eine CLI für Command Line Eingaben
- Eine Android App zum empfangen und senden von Nachrichten
- Erweiterungen per Plugins möglich
- Docker Image vorhanden
- REST-API / Swagger
gotify/server-arm7
für Raspberry Pigotify/server-arm64
für ARM64 Prozessoren
Installation mit Docker
Starten wir die Installation mit Docker und erstellen eine Datei : docker-compose.yml
version: "3" services: gotify: image: gotify/server ports: - 8080:80 environment: - GOTIFY_DEFAULTUSER_PASS=custom volumes: - "./gotify_data:/app/data" # Jetzt starten für den Docker Container docker-compose up -d # Bei Einsatz mit einem Raspberry Pi bitte folgendes Image benutzen: image: gotify/server-arm7 # Bei Einsatz mit einem Raspberry Pi 4 bitte folgendes Image benutzen: image: gotify/server-arm64
Starte den Webbrowser mit „http://<Docker-IP>:8080“ es sollte nun folgende Webseite angezeigt werden:
Es sollte diese Login-Seite anzeigen, wenn alles richtig installiert ist.
Die Anmeldung erfolgt mit Username : admin und Password: admin
Rufe nun das Menü „Apps“ auf und klicke auf „Create Application“. Dort einen Namen vergeben, wie z.B. „Benachrichtigung“. Zu dem Namen wird ein Zufallstoken erstellt. Dieser wird für die weitere Vorgehensweise mit „curl“ und „NodeRED“ benötigt.
Das folgende Beispiel zeigt, wie man eine Nachricht an Gotify mit „curl“ sendet:
curl "http://<Docker-IP>/message?token=AfrXgZ78lPM" -F "title=Serverstatus" -F "message=Server down" -F "priority=1" curl "http://<Docker-IP>/message?token=AfrXgZ78lPM" -F "title=Serverstatus" -F "message=Server up" -F "priority=1" curl "http://<Docker-IP>/message?token=AfrXgZ78lPM" -F "title=SmartHome" -F "message=Das Fenster wurde geoeffnet" -F "priority=1" Der Anwendungbereich für einen "curl" Aufruf ist vielseitig und kann in allen möglichen Fällen angewendet werden.
Der Einsatz von NodeRED im SmartHome Umfeld ist ebenfalls sehr attraktiv. Ereignisse werden als Nachrichten übermittelt wie zum Beispiel: „Die Terrassentüre wurde geöffnet“ oder „Die Waschmaschine ist fertig“ wenn sie von Sensoren erkannt werden. Das hat den Vorteil, dass sehr private Nachrichten gesendet werden können, ohne dass das Internet oder ein Provider die Daten mitliest, wenn diese im lokalen Netzwerk versendet werden.
Einrichtung mit NodeRED
Für die Einrichtung mit NodeRED wird das Plugin „nr-gotify“ benötigt. Dieses bitte über die NodeRED Weboberfläche hinzufügen und installieren: https://flows.nodered.org/node/nr-gotify
Ist dieses erfolgt kann der Beispiel Flow in NodeRED importiert werden:
https://git.unixweb.net/joachim/gotify-nodered
Nach erfolgreichen Import sollte dieser Flow sichtbar sein. Im grünen Flow „Date/Time“ muss der vorher erstellte Token hinzugefügt werden. Die URL für Gotify muss ebenfalls entsprechend hinzugefügt werden, wie z.B. http://<Docker-IP>:8080/ ACHTUNG: Wichtig ist dass am Ende der URL ein Slash „/“ stehen muss, sonst funktioniert die Übergabe der Message von NodeRED an Gotify nicht!
Sende nun Nachrichten an Gotify, wenn der Flow erfolgreich importiert und konfiguriert wurde.
Für Android gibt es hier eine App die im Google Play Store zum herunterladen gibt:
https://play.google.com/store/apps/details?id=com.github.gotify&hl=de&gl=US
Für Android Clones z.B. Huawei ohne Google gibt es hier den Download:
https://f-droid.org/de/packages/com.github.gotify/
https://github.com/gotify/android/releases/tag/v2.4.0
Bei Fragen, wie immer die Kommentarfunktion bitte nutzen.
Wow. Das ist ja mal eine coole Idee. Mich hat es bis jetzt immer abgeschreckt, wichtige Daten per Mail zu versenden. Aber das wird mein Projekt für die nächste Woche.
Vielen Dank!