Nie wieder wichtige Homelab-Meldungen verpassen | Gotify
Übersicht
Viele Dienste im Homelab können uns bereits über Probleme, Ausfälle oder wichtige Ereignisse informieren. Die Frage ist nur: Wie kommen diese Benachrichtigungen zuverlässig auf unser Smartphone?
Genau dafür schauen wir uns heute Gotify an. Mit Gotify betreiben wir unseren eigenen Push-Notification-Dienst und erhalten Meldungen von Anwendungen wie Uptime Kuma direkt auf Android oder iPhone, ganz ohne externe Cloud-Dienste und mit voller Kontrolle über die eigenen Daten.
Link zum Video: https://youtu.be/xrlbOYrvxzY
Installation
Docker
Da wir Gotify mit Docker betreiben möchten, installieren wir als Erstes natürlich erstmal Docker selbst, falls noch nicht geschehen. Das können wir ganz einfach mit dem offiziellen Convenience Script von Docker machen.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Verzeichnis
Bevor wir fortfahren, müssen wir uns ein geeignetes Verzeichnis erstellen, wo wir Gotify später laufen lassen wollen. Ich habe meine Docker-Compose-Stacks immer gerne unter /opt, darunter erstelle ich einen neuen Ordner für Gotify mit:
sudo mkdir /opt/gotify
cd /opt/gotify
Docker Compose
Als Docker Compose für Gotify nehmen wir das Beispiel aus der Dokumentation. Falls weitere Anpassungen nötig oder gewünscht sind, gibt es in der Dokumentation unter Configuration noch weitere Environment-Variablen, die wir setzen können.
Die Beispiel-Compose habe ich entsprechend angepasst, um Gotify selbst über eine Caddy-Instanz, die auf demselben Server läuft, erreichbar zu machen. Mehr Informationen dazu findet ihr in dem Beitrag zu Caddy.
services:
gotify:
image: gotify/server
container_name: gotify
#ports: -> nicht benötigt da Caddy
# - 8080:80
environment:
GOTIFY_DEFAULTUSER_PASS: 'admin'
volumes:
- './gotify_data:/app/data'
networks:
- caddy_net
networks:
caddy_net
external: true
Reverse Proxy
Wie erwähnt, nutze ich in diesem Setup Caddy auf demselben Server als Reverse Proxy. Da es sich hier um einen VPS handelt, der public erreichbar ist, ist Caddy sehr simpel einzusetzen.
Der Eintrag im Caddyfile sieht dafür wie folgt aus.
gotify.juseclab.de {
reverse_proxy gotify:80
}
Selbstverständlich könnt ihr auch jeden anderen beliebigen Reverse Proxy verwenden.
Start
Nun starten wir Gotify und ggf. Caddy.
cd /opt/gotify
sudo docker compose up -d
Erste Schritte
Nachdem alles gestartet ist, erreichen wir die Gotify-Weboberfläche über unsere gewünschte Domain. Dort angekommen, können wir uns mit dem Benutzernamen admin und dem in der Compose vergebenen initialen Passwort anmelden.

Passwort anpassen
Als Erstes sollten wir das Passwort auf ein neues, nicht in der Compose stehendes Passwort ändern. Das machen wir rechts im Menü, wenn wir auf admin klicken. Alternativ können wir auch auf Users gehen und den Benutzer komplett anpassen, inklusive eines anderen Namens. Außerdem können hier weitere Benutzer angelegt werden.

Applikation hinzufügen
Gotify ist dazu da, um uns Benachrichtigungen zu senden. Entsprechend müssen wir natürlich unsere Applikationen hinzufügen. Um das einmal beispielhaft zu zeigen, fügen wir gemeinsam eine Uptime-Kuma-Instanz zu Gotify hinzu und generieren darüber einige Benachrichtigungen.
Neue Applikationen können wir oben rechts unter dem Punkt Apps hinzufügen.

Dort angekommen, klicken wir auf Create Application.

Wir vergeben einen Namen und können noch eine Default-Priorität der Benachrichtigungen angeben.

Zu guter Letzt haben wir jetzt noch die Möglichkeit, ein Icon für die App hochzuladen. Das empfehle ich euch sehr, denn das macht es möglich, am Ende Benachrichtigungen von bspw. Uptime-Kuma zu erhalten mit dem richtigen Icon in der Ansicht!

Das war auch schon alles, was wir in Gotify machen müssen. Wir haben jetzt einen Token, den wir auf der Gegenseite verwenden müssen, um quasi die Verknüpfung zu schaffen.
Uptime-Kuma
In Uptime-Kuma gehen wir unter Einstellungen auf Benachrichtigung einrichten.

Dort angekommen, können wir in der Auswahl Gotify wählen.

Hier geben wir jetzt unseren Token von Gotify für die Uptime-Kuma-Applikation an und die Domain von unserer Gotify-Instanz.

Ein Klick auf Test verrät, ob es wie gewollt funktioniert und Benachrichtigungen bei Gotify ankommen.

Soweit funktionieren nun die Benachrichtigungen für Uptime-Kuma.
Smartphone
Unser Ziel ist es, von überall immer topaktuelle Infos und Benachrichtigungen aus unserem Homelab zu erhalten. Also benötigen wir natürlich noch die passende Gotify-App, die uns die Benachrichtigungen direkt auf dem Smartphone anzeigt.
Android
Alle, die ein Android-Smartphone besitzen, für die ist das keine weitere Herausforderung. Es gibt eine offizielle Gotify-App direkt im Google Playstore, die heruntergeladen und mit eurer Instanz verknüpft werden kann, und schon erhaltet ihr eure Benachrichtigungen, egal wo ihr seid.

Apple
Bei Apple gestaltet sich das Ganze etwas aufwändiger. Zusammengefasst ist es etwas komplizierter, Push-Notifications auf Apple-Geräte zu erhalten, da Apple seine eigenen Relays hat, zu denen man kommunizieren muss.
Aber auch dafür gibt es natürlich eine Lösung. Ein deutscher Entwickler hat eine App namens iGotify herausgebracht. Diese dient quasi als "Notification Assistant" und kommuniziert über Apples APNS via SecNtfy. Git-Repo hier.
Zu der App gibt es eine Docker-Anwendung, die wir mit auf unserem Gotify-Server deployen, womit die App dann kommuniziert.
In der GitHub-Repo befindet sich eine docker-compose.yml. Da wir bereits Gotify am Laufen haben und den Service dazu bauen, benötigen wir nicht alles daraus, sondern nur den iGotify-Service. Um es übersichtlicher zu halten, deploye ich das auf dem Server als extra Compose-Projekt. Auch hier wieder angepasst, um das Ganze ebenfalls via Caddy erreichbar zu machen.
services:
igotify:
container_name: igotify
hostname: igotify
image: ghcr.io/androidseb25/igotify-notification-assist:latest
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- caddy_net
#ports:
# - "8681:8080"
volumes:
- ./api-data:/app/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/Version"]
interval: 5s
timeout: 3s
retries: 5
start_period: 10s
networks:
caddy_net:
external: true
Diese docker-compose.yml habe ich in das neue Verzeichnis /opt/igotify abgelegt.
Außerdem fügen wir jetzt dem Caddyfile noch eine weitere Domain hinzu.
igotify.juseclab.de {
reverse_proxy igotify:8080
}
Nach dem Anpassen des Caddyfiles restarten wir einmal Caddy, damit die Änderungen greifen.
sudo docker restart caddy
Anschließend können wir den iGotify-Container starten.
cd /opt/igotify
sudo docker compose up -d
iGotify App einrichten
Nachdem alles läuft, können wir jetzt die iGotify-App entsprechend einrichten.

Anschließend wird noch nach dem Gotify-Benutzernamen und Passwort gefragt, und dann erhalten wir auch schon unsere Benachrichtigungen direkt auf unser Apple-Gerät.

Und natürlich ebenfalls als Push-Notification.

Fazit
Gotify ist eine einfache und leistungsstarke Möglichkeit, Benachrichtigungen aus dem Homelab zentral zu sammeln und auf das Smartphone zu bringen. Die Installation ist schnell erledigt, viele Anwendungen unterstützen Gotify bereits direkt und auch für iPhone-Nutzer gibt es dank iGotify eine funktionierende Lösung.
Wer wichtige Ereignisse aus seinem Homelab jederzeit im Blick behalten möchte, erhält mit Gotify eine zuverlässige, selbst gehostete Alternative zu kommerziellen Push-Diensten.