diff --git a/articles/2025/push-dienst-ntfy-mit-prometheus-und-grafana-selber-hosten.md b/articles/2025/push-dienst-ntfy-mit-prometheus-und-grafana-selber-hosten.md new file mode 100644 index 0000000..4d5021b --- /dev/null +++ b/articles/2025/push-dienst-ntfy-mit-prometheus-und-grafana-selber-hosten.md @@ -0,0 +1,127 @@ + +**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. \ No newline at end of file diff --git a/articles/2025/ssl-fuer-interne-docker-registrierung-abschalten.md b/articles/2025/ssl-fuer-interne-docker-registrierung-abschalten.md new file mode 100644 index 0000000..9124a24 --- /dev/null +++ b/articles/2025/ssl-fuer-interne-docker-registrierung-abschalten.md @@ -0,0 +1,19 @@ + +**So fügen Sie Ihre interne Registrierung hinzu, ohne eine SSL-Prüfung durchführen zu müssen.** + +Bearbeiten Sie die Datei ```/etc/docker/daemon.json``` mit dem folgenden Kommando: ```nano /etc/docker/daemon.json```. + +Fügen Sie folgenden Inhalt ein: + +``` +{ + "insecure-registries" : [ "hostname.meinedomain.tld:5000" ] +} +``` + +Ersetzen Sie den Inhalt durch Ihren internen Domain-Namen. +Starten Sie den Docker-Dienst mit folgendem Kommando neu: ```systemctl start docker```. +Fertig! + +Denken Sie daran, nur Registrierungen zuzulassen, welche Sie wirklich vertrauen. +Im Produktivbetrieb sollten Sie dies jedoch stets vermeiden. \ No newline at end of file diff --git a/static/img/ssl-fuer-interne-docker-registrierung-abschalten.png b/static/img/ssl-fuer-interne-docker-registrierung-abschalten.png new file mode 100644 index 0000000..be68a40 Binary files /dev/null and b/static/img/ssl-fuer-interne-docker-registrierung-abschalten.png differ