Ntfy – Self-Hosted Push-Benachrichtigungen einrichten | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

Ntfy Push Notifications Self Hosted

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

Ntfy – Self-Hosted Push-Benachrichtigungen einrichten

Was ist Ntfy?

Ntfy (gesprochen "notify") ist ein einfacher, HTTP-basierter Pub/Sub Notification Service. Mit Ntfy können Sie Benachrichtigungen über HTTP-Anfragen senden und über Browser, Mobile Apps oder webhooks empfangen.

Ntfy ist perfekt für:

  • Server-Alerts: CPU/Memory/Disk-Warnungen automatisch senden
  • Monitoring: Backup-Status, Deployment-Ergebnisse benachrichtigen
  • Automation: Cron-Jobs, Scripts, Workflow-Benachrichtigungen
  • IoT-Geräte: Status-Updates von Sensoren und Geräten
  • Development: Build/Deploy/Test-Benachrichtigungen

Installation mit Docker

Docker Installation (Schnellstart)

docker run -d \
  -p 80:80 \
  -v /var/cache/ntfy:/var/cache/ntfy \
  -e TZ=Europe/Berlin \
  --name ntfy \
  --restart unless-stopped \
  binwiederhier/ntfy serve

Die Ntfy Service ist jetzt unter http://localhost erreichbar.

Docker Compose (empfohlen)

version: '3.8'

services:
  ntfy:
    image: binwiederhier/ntfy:latest
    container_name: ntfy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/cache/ntfy:/var/cache/ntfy
      - /etc/ntfy/server.yml:/etc/ntfy/server.yml
      - /etc/letsencrypt:/etc/letsencrypt
    environment:
      - TZ=Europe/Berlin
    restart: unless-stopped
    networks:
      - bridge

networks:
  bridge:
    driver: bridge

Starten mit:

docker-compose up -d
💡 Tipp: Verwenden Sie Docker Compose für einfache Verwaltung und einfaches Update. Alle Konfigurationen bleiben erhalten.

Binary Installation auf Ubuntu/Debian

Alternativ können Sie Ntfy direkt als Binary installieren:

# Releases herunterladen
cd /tmp
wget https://github.com/binwiederhier/ntfy/releases/download/v2.10.0/ntfy_2.10.0_linux_amd64.tar.gz
tar xzf ntfy_2.10.0_linux_amd64.tar.gz

# Binary installieren
sudo mv ntfy /usr/local/bin/
chmod +x /usr/local/bin/ntfy

# Verzeichnisse erstellen
sudo mkdir -p /var/cache/ntfy /etc/ntfy

# Systemd Service erstellen
sudo tee /etc/systemd/system/ntfy.service > /dev/null <

Konfiguration der Ntfy Server

Server-Konfigurationsdatei erstellen

Erstellen Sie /etc/ntfy/server.yml für erweiterte Konfiguration:

base-url: https://ntfy.example.com
listen-http: 0.0.0.0:80
listen-https: ""
cache-file: /var/cache/ntfy/ntfy.db
cache-default-expiry: 24h
attachment-cache-dir: /var/cache/ntfy/attachments
attachment-cache-expiry: 3d
attachment-total-size-limit: 5G
auth-file: /etc/ntfy/users.txt
auth-default-access: public
behind-proxy: true
log-level: info
stripe-key: ""

HTTPS mit Let's Encrypt (via Nginx Reverse Proxy)

Die beste Methode ist ein Reverse Proxy mit Nginx und Let's Encrypt:

# /etc/nginx/sites-available/ntfy
server {
    listen 80;
    server_name ntfy.example.com;

    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen 443 ssl http2;
    server_name ntfy.example.com;

    ssl_certificate /etc/letsencrypt/live/ntfy.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ntfy.example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://localhost:80;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Nginx aktivieren und SSL zertifikat erzeugen:

ln -s /etc/nginx/sites-available/ntfy /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

# Let's Encrypt Zertifikat ausstellen
certbot certonly --nginx -d ntfy.example.com
⚠️ Wichtig: Setzen Sie behind-proxy: true in der Ntfy Konfiguration, wenn Sie einen Reverse Proxy verwenden. Andernfalls sieht Ntfy alle IPs als Proxy-IP.

Benachrichtigungen senden

Einfache Benachrichtigung mit curl

# Public Notification an selbst-gehostete Instanz
curl -d "Server CPU is at 90% usage!" http://ntfy.example.com/server-alerts

# Oder zu öffentlichem ntfy.sh Service
curl -d "My first notification" https://ntfy.sh/my-unique-topic

Mit Title und Priority

curl -H "Title: System Alert" \
     -H "Priority: high" \
     -H "Tags: warning" \
     -d "CPU temperature: 85°C" \
     http://ntfy.example.com/system-alerts

Prioritäts-Levels

Priority Beispiel Verwendung
1 (min) Informationen, Debug-Meldungen
2 (low) Allgemeine Status-Updates
3 (default) Standard-Benachrichtigungen
4 (high) Warnungen, Fehlerzustände
5 (max) Kritische Fehler, sofortige Aktion erforderlich

Im Browser abonnieren

  1. Öffnen Sie http://ntfy.example.com
  2. Geben Sie einen Topic-Namen ein (z.B. my-alerts)
  3. Klicken Sie Subscribe
  4. Sie erhalten sofort Browser-Benachrichtigungen

Browser Push Benachrichtigungen aktivieren:

  • Erlauben Sie Benachrichtigungen im Browser-Dialog
  • Ntfy funktioniert auch, wenn der Browser nicht aktiv ist
  • Notifications funktionieren auf Desktop und Mobile

Mobile Apps (Android und iOS)

Android App

  • App: "Ntfy" im Google Play Store
  • Öffnen Sie die App und klicken Sie +
  • Geben Sie Ihre Server URL und Topic-Name ein
  • Abonnieren und Benachrichtigungen erhalten

iOS App

  • App: "Ntfy" im Apple App Store
  • Gleiche Funktionalität wie Android
  • Benachrichtigungen auch bei gesperrtem Bildschirm

Ntfy CLI verwenden

Installieren Sie die Ntfy CLI für komfortable Steuerung:

# CLI installieren
curl -sSL https://ntfy.sh/install.sh | sh

# Benachrichtigung senden
ntfy publish my-topic "Message content"

# Mit Optionen
ntfy publish -title "Alert" -priority high my-topic "Critical event"

# Subscriben und Benachrichtigungen empfangen
ntfy subscribe my-topic

Benutzerverwaltung und Zugriffskontrolle

Benutzer und Token hinzufügen

Erstellen Sie eine Benutzer-Datei /etc/ntfy/users.txt:

# Format: username:password:permissions
admin:hashed_password:readwrite
viewer:hashed_password:read

# Passwort hashen:
# htpasswd -B -c /tmp/passwd admin
# Dann den Hash in users.txt kopieren

Nur privaten Topics sichern

curl -u "user:password" \
     -d "Private alert message" \
     http://ntfy.example.com/private-topic

Access Control Matrix

Funktion Public Authenticated Möglicher Use-Case
Subscribe (Read) Ja Nur autorisierte Benutzer Allgemeine Status oder Team-Alerts
Publish (Write) Ja Nur autorisierte Benutzer API-Keys für sicheres Publishing

Anhänge versenden

Ntfy unterstützt Datei-Anhänge (Bilder, Logs, etc.):

curl -F "file=@/var/log/syslog" \
     -H "Title: Server Logs" \
     http://ntfy.example.com/system-logs

Anhang-Limits:

  • Maximale Dateigröße: 4096 MB (konfigurierbar)
  • Cache-Expiry: 3 Tage (konfigurierbar)

Integration mit Grafana

Grafana Notification Channel konfigurieren

  1. Gehen Sie in Grafana zu Administration → Notification Channels
  2. Klicken Sie Add Channel
  3. Wählen Sie Webhook
  4. Konfigurieren Sie:
    • Name: Ntfy Alerts
    • URL: http://ntfy.example.com/grafana-alerts
    • HTTP Method: POST

Alert-Regel mit Ntfy

# Grafana Dashboard → Alert Rules → New Rule
# Bedingung konfigurieren (z.B. CPU > 80%)
# Konfigurieren Sie als Notification Channel: Ntfy Alerts
# Beim Alarm wird eine Benachrichtigung an ntfy.example.com/grafana-alerts gesendet

Integration mit Alertmanager (Prometheus)

# /etc/alertmanager/config.yml
global:
  resolve_timeout: 5m

route:
  receiver: 'ntfy'

receivers:
  - name: 'ntfy'
    webhook_configs:
      - url: 'http://ntfy.example.com/alertmanager'
        send_resolved: true

Praktische Beispiele

Beispiel 1: Disk-Space Alert Script

#!/bin/bash
# /usr/local/bin/disk-alert.sh

THRESHOLD=80
HOSTNAME=$(hostname)
TOPIC="server-alerts"
NTFY_URL="http://ntfy.example.com"

df_usage=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')

if [ "$df_usage" -gt "$THRESHOLD" ]; then
    curl -H "Priority: high" \
         -H "Title: Disk Alert" \
         -d "Server $HOSTNAME: Disk usage is ${df_usage}%" \
         "$NTFY_URL/$TOPIC"
fi

In Crontab einbinden:

# /etc/cron.d/disk-alert
*/30 * * * * /usr/local/bin/disk-alert.sh

Beispiel 2: Backup Completion Notification

#!/bin/bash
# /usr/local/bin/backup-notify.sh

BACKUP_DIR="/mnt/backups"
NTFY_URL="http://ntfy.example.com"

# Backup durchführen
restic backup /home /etc --repo $BACKUP_DIR

if [ $? -eq 0 ]; then
    curl -H "Priority: 2" \
         -H "Title: Backup Complete" \
         -d "Backup of $(hostname) completed successfully" \
         "$NTFY_URL/backup-status"
else
    curl -H "Priority: 4" \
         -H "Title: Backup Failed" \
         -d "Backup of $(hostname) FAILED" \
         "$NTFY_URL/backup-status"
fi

Beispiel 3: Docker Container Restart Alert

#!/bin/bash
# Überwacht Docker Container und sendet Alert wenn neustartiert

CONTAINER="my-app"
NTFY_URL="http://ntfy.example.com"

# Aktuelle Container ID speichern
LAST_ID=$(docker ps -q -f name=$CONTAINER)

while true; do
    sleep 30
    CURRENT_ID=$(docker ps -q -f name=$CONTAINER)

    if [ "$LAST_ID" != "$CURRENT_ID" ]; then
        curl -H "Priority: high" \
             -H "Title: Container Restart" \
             -d "Container $CONTAINER was restarted" \
             "$NTFY_URL/docker-alerts"
        LAST_ID=$CURRENT_ID
    fi
done
✅ Gut zu wissen: Kombinieren Sie mehrere Benachrichtigungs-Quellen mit Ntfy: Grafana, Prometheus Alertmanager, Custom Scripts, Docker Events. Ein Topic für alle Alerts!

Performance und Limits

Eigenschaft Standard Beschreibung
Cache Expiry 24 Stunden Dauer der Speicherung von Nachrichten im Cache
Max Message Size 4096 Bytes Maximale Größe einer Benachrichtigung
Attachment Size Limit 5 GB total Maximale Größe aller Anhänge combined
Rate Limiting 200 pro Topic/min Nachrichten pro Minute pro Topic

Troubleshooting

Benachrichtigungen werden nicht empfangen

Prüfen Sie:

  • Browser Benachrichtigungen-Berechtigung gewährt?
  • Topic-Name korrekt geschrieben?
  • Firewall blockiert Verbindungen?
  • Service läuft noch: systemctl status ntfy

HTTPS Probleme

# Zertifikat überprüfen
openssl s_client -connect ntfy.example.com:443

# Nginx Fehler anschauen
tail -f /var/log/nginx/error.log

Verwandte Artikel

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120