articles/2025/push-dienst-ntfy-mit-prometheus-und-grafana-selber-hosten.md hinzugefügt
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
<!--{"title": "Push-Dienst NTFY mit Prometheus und Grafana selber hosten", "date": "2024-04-05", "slug": "push-dienst-ntfy-mit-prometheus-und-grafana-selber-hosten", "cover": "/static/img/push-dienst-ntfy-mit-prometheus-und-grafana-selber-hosten.png"}-->
|
||||
**Ihr möchtet einen zuverlässigen Push-Dienst und das ab besten selber bereitstellen?
|
||||
Ihr legt Wert darauf, einen guten Überblick über den Dienst zu haben? Dann wird euch dieser Artikel gefallen.**
|
||||
|
||||
Ich stelle euch die Software NTFY vor, mit der ihr in Zusammenarbeit mit Prometheus und Grafana einen idealen Push-Dienst für eure Anwendungen bekomme. Insbesondere mit einer Überwachungssoftware wie Uptime-Kuma macht ein Push-Dienst auf jeden Fall Sinn.
|
||||
|
||||
Aber fangen wir am Anfang an.
|
||||
|
||||
## Vorbereitung
|
||||
Wir setzen hier eine Vorkonfigurierte Docker-Umgebung voraus. Wenn Ihr eine Anleitung dafür benötigt, schaut gerne meinen Artikel [Traefik richtig im Homelab oder Unternehmen mit eigenen Zertifikaten einrichten](/post/traefik-richtig-im-homelab-oder-unternehmen-mit-eigenen-zertifikaten-einrichten) an.
|
||||
Dort ist der Vorgang ausführlich beschrieben.
|
||||
|
||||
Wir benötigen für dieses Projekt insgesamt vier Container.
|
||||
|
||||
* Traefik (als Reverseproxy für HTTPS)
|
||||
* NTFY (der Push-Dienst)
|
||||
* Prometheus (der Dienst zum Sammeln der Metriken)
|
||||
* Grafana (der Dienst zum Anzeigen und aufbereiten der Prometheus Daten)
|
||||
|
||||
Zudem werden wir einen Container namens Dockge nutzen, um unseren Stack zu Konfigurieren. Auch die Einrichtung dieses Containers finden Sie im o.g. Artikel.
|
||||
|
||||
## Vorbereitung des Dateisystems
|
||||
|
||||
Zuerst bereiten wir unser Dateisystem für den Einsatz vor.
|
||||
Wir erstellen unser Basisverzeichnis, sofern nicht bereits von Vorgängerprojekten vorhanden. Führen Sie folgendes Kommando in Ihrer Ubuntu-Konsole aus:
|
||||
|
||||
```
|
||||
mkdir /docker && mkdir /docker/push && mkdir /docker/push/ntfy && /docker/push/ntfy/cache && /docker/push/ntfy/etc && mkdir /docker/push/prometheus && mkdir /docker/push/grafana
|
||||
```
|
||||
|
||||
Wir beginnen mit der Prometheus-Konfiguration. Führen Sie folgendes Kommando in Ihrer Ubuntu-Konsole aus: ```nano /docker/push/prometheus/prometheus.yml``` und fügen folgenden Inhalt ein:
|
||||
|
||||
```
|
||||
scrape_configs:
|
||||
- job_name: "ntfy"
|
||||
static_configs:
|
||||
- targets: ["status.ihredomain.tld"]
|
||||
- job_name: 'uptime'
|
||||
scrape_interval: 30s
|
||||
scheme: https
|
||||
metrics_path: '/metrics'
|
||||
static_configs:
|
||||
- targets: ['status.ihredomain.tld']
|
||||
basic_auth: # Only needed if authentication is enabled (default)
|
||||
username: admin
|
||||
password: password
|
||||
```
|
||||
|
||||
Zu beachten ist hier, dass Sie den Wert ```targets``` auf Ihre Domain anpassen müssen.
|
||||
|
||||
Wir setzen die Vorbereitungen fort. Für Grafana und NTFY sind keine umfangreichere Vorbereitung der Dateistruktur notwendig.
|
||||
|
||||
Wir bereiten nun unsere Compose-Datei vor. Führen Sie folgendes Kommando in Ihrer Ubuntu-Konsole aus:
|
||||
|
||||
```nano /docker/push/compose.yml``` und fügen Sie folgenden Inhalt ein:
|
||||
|
||||
```
|
||||
version: "3.1"
|
||||
services:
|
||||
ntfy:
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.ntfy.rule=Host(`ntfy.ihredomain.tld`)"
|
||||
- "traefik.http.services.ntfy.loadbalancer.server.port=80"
|
||||
- "traefik.http.routers.ntfy.entrypoints=websecure"
|
||||
- "traefik.http.routers.ntfy.tls=true"
|
||||
- "traefik.http.routers.ntfy.tls.certresolver=letsencrypt"
|
||||
- "traefik.protocol=http"
|
||||
image: binwiederhier/ntfy
|
||||
container_name: ntfy
|
||||
command:
|
||||
- serve
|
||||
environment:
|
||||
- TZ=UTC+1
|
||||
volumes:
|
||||
- /docker/push/ntfy/cache:/var/cache/ntfy
|
||||
- /docker/push/ntfy/etc:/etc/ntfy
|
||||
ports:
|
||||
- '8765:80'
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- traefik-net
|
||||
prometheus:
|
||||
ports:
|
||||
- '9091:9090'
|
||||
volumes:
|
||||
- '/docker/push/prometheus:/etc/prometheus'
|
||||
image: prom/prometheus
|
||||
networks:
|
||||
- traefik-net
|
||||
grafana:
|
||||
image: grafana/grafana-enterprise
|
||||
container_name: grafana
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '3001:3000'
|
||||
volumes:
|
||||
- /docker/push/grafana:/var/lib/grafana
|
||||
networks:
|
||||
- traefik-net
|
||||
networks:
|
||||
traefik-net:
|
||||
driver: bridge
|
||||
external: true
|
||||
```
|
||||
|
||||
Den selben Inhalt legen Sie nun in Dockge als neuen Stack an. Wir erstellen über das "Plus"-Symbol ein neues Compose und vergeben einen Stack-Namen.
|
||||
|
||||
Auf der rechten Seite fügen wir den oben genannten Inhalt ein.
|
||||
|
||||
Dieser Stack setzt voraus, das Sie bereits Traefik gemäß unserer Anleitung installiert und konfiguriert haben. Sollte dies nicht der Fall sein, müssen Sie Traefik noch in den Stack mit aufnehmen.
|
||||
|
||||
Beachten Sie, das die Konfiguration von Traefik, wie auch von NTFY abhängig von der geplanten Verwendung ist. Wenn Sie Traefik gemäß unseres Artikels eingerichtet haben erwarten wir keine Probleme.
|
||||
|
||||
Möchten Sie NTFY nur innerhalb Ihres eigenen Netzwerks, ohne externe Anbindung nutzen wollen (Warum auch immer...) entfernen Sie dieser Zeile aus der Compose-Datei oben: ```- "traefik.http.routers.ntfy.tls.certresolver=letsencrypt"``` dann wird Ihr internes Zertifikat gemäß dynamischer Konfiguration verwendet. Ansonsten wird automatisch ein kostenloses Zertifikat über Let's Encrypt angefordert.
|
||||
|
||||
Wenn alle Container erfolgreich gestartet sind, müssen Sie noch das Grafana Dashboard importieren. Dieses finden Sie im Anhang (NTFY.zip) zu diesem Artikel.
|
||||
|
||||
Fügen Sie nun in Prometheus eine neue Data Source hinzu. Dies können Sie im Hauptmenü von Grafana über den Punkt "Connection" erledigen.
|
||||
|
||||
Wählen Sie dann im Menü "Data Sources" aus und klicken auf "Add new data source". Wählen Sie Prometheus aus.
|
||||
|
||||
Geben Sie im Feld "Prometheus server URL" [http://prometheus:9090](http://prometheus:9090) ein.
|
||||
|
||||
Bearbeiten Sie nun die Widgets auf dem vorhin importierten Dashboard und wählen unter "Data source" die Prometheus-Datenquelle aus.
|
||||
|
||||
Das war es mit der Basisinstallation. In einem Folgeartikel erfahren Sie mehr über die erweiterte Konfiguration von NTFY und die Administration.
|
Reference in New Issue
Block a user