ntfy – Darmowe powiadomienia push z serwera na telefon

grafika przedstawiająca schemat działania ntfy
Alerty ze serwera lub ze skryptów na smartfon bez żadnych kosztów i konfiguracji. Genialny patent.

ntfy – Darmowe powiadomienia push z serwera na telefon

Chcesz dostawać alerty z Zabbix prosto na telefon? Masz dość sprawdzania maili z monitoringu? ntfy.sh to darmowy serwis powiadomień push, który wysyła alerty z serwera Linux bezpośrednio na smartfon – bez rejestracji, bez konfiguracji SMTP, bez opłat za SMS.

Powiadomienia push z serwera na telefon – zarówno przez integrację z Zabbix, jak i w własnych skryptach bash.

Czym jest ntfy i jak działa?

ntfy (czytaj: „notify”) to darmowy serwis powiadomień push oparty o prosty protokół HTTP. Zamiast konfigurować serwer SMTP czy płacić za bramkę SMS, wysyłasz jedno żądanie curl:

curl -d "Backup zakończony" ntfy.sh/moj-serwer-xyz123

Jedna komenda = powiadomienie push na telefonie. Bez konta, bez tokena, bez konfiguracji serwera.

Bajecznie proste do zastosowania praktycznie we wszytkim.

Dlaczego ntfy zamiast powiadomień email czy SMS?

MetodaOpóźnienieKosztKonfiguracja
Email1-15 minutDarmowyWymaga SMTP
SMS (smsapi, twilio)Sekundy~0.07 PLN/smsAPI + konto
ntfySekundyDarmowyTylko curl

Dla administratora serwera Linux czy VPS to game changer – alerty ze serwera na smartfon bez żadnych kosztów i konfiguracji.

Konfiguracja aplikacji mobilnej

  1. Pobierz aplikację ntfy:
  1. Kliknij + i wpisz nazwę tematu (np. serwer-prod-x7k9m2)
  2. Gotowe – każdy POST na ntfy.sh/serwer-prod-x7k9m2 ląduje na telefonie

Ważne: Używaj losowych nazw tematów! Tematy są publiczne – kto zna nazwę, może subskrybować.

Integracja ntfy z Zabbix – powiadomienia push zamiast email

Standardowe powiadomienia Zabbix przez email są wolne i często ignorowane. SMS-y kosztują. ntfy daje natychmiastowe alerty na telefon za darmo.

Krok 1: Skrypt alertów dla Zabbix

Sprawdź katalog alertscripts:

grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
# Domyślnie: /usr/lib/zabbix/alertscripts

Utwórz plik /usr/lib/zabbix/alertscripts/ntfy.sh:

#!/bin/bash

# ========== KONFIGURACJA ==========
# Wpisz własną, unikalną nazwę tematu!
NTFY_TOPIC="zabbix-TWOJ-UNIKALNY-STRING"
# ==================================

TO="$1"
SUBJECT="$2"
MESSAGE="$3"

# Mapowanie severity Zabbix na priorytety ntfy
case "$SUBJECT" in
    *Disaster*|*DISASTER*)
        PRIORITY="urgent"
        TAGS="rotating_light,disaster"
        ;;
    *High*|*HIGH*)
        PRIORITY="high"
        TAGS="warning,high"
        ;;
    *Average*|*AVERAGE*)
        PRIORITY="default"
        TAGS="orange_circle,average"
        ;;
    *Warning*|*WARNING*)
        PRIORITY="low"
        TAGS="yellow_circle,warning"
        ;;
    *OK*|*Resolved*)
        PRIORITY="low"
        TAGS="white_check_mark,resolved"
        ;;
    *)
        PRIORITY="default"
        TAGS="bell"
        ;;
esac

# Wysłanie powiadomienia push
curl -s \
    -H "Title: ${SUBJECT}" \
    -H "Priority: ${PRIORITY}" \
    -H "Tags: ${TAGS}" \
    -d "${MESSAGE}" \
    "https://ntfy.sh/${NTFY_TOPIC}"

exit 0

Nadaj uprawnienia:

chmod +x /usr/lib/zabbix/alertscripts/ntfy.sh
chown zabbix:zabbix /usr/lib/zabbix/alertscripts/ntfy.sh

Test (jako user zabbix):

sudo -u zabbix /usr/lib/zabbix/alertscripts/ntfy.sh "" "[HIGH] Test alert" "Testowe powiadomienie z Zabbix"

Krok 2: Media Type w Zabbix

Alerts → Media types → Create media type

ParametrWartość
Namentfy
TypeScript
Script namentfy.sh
Script parameters{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

Krok 3: Trigger Action

Alerts → Actions → Trigger actions → Create action

Zakładka Action:

  • Name: Powiadomienia push ntfy
  • Conditions: Trigger severity >= Warning

Zakładka Operations:

Default subject:

[{TRIGGER.SEVERITY}] {HOST.NAME}: {TRIGGER.NAME}

Default message:

Host: {HOST.NAME}
Problem: {TRIGGER.NAME}
Severity: {TRIGGER.SEVERITY}
Czas: {EVENT.DATE} {EVENT.TIME}

W sekcji Operations → Add:

  • Send to users: wybierz użytkowników
  • Send only to: ntfy

Zakładka Recovery operations – analogicznie dla powiadomień o rozwiązaniu problemu.

Krok 4: Media dla użytkownika

Users → [Twój user] → Media → Add

PoleWartość
Typentfy
Send todefault
Enabled

Gotowe! Zabbix wykrywa problem → push notification leci na telefon.

Powiadomienia push w skryptach Bash

ntfy idealnie nadaje się do alertów ze skryptów – backup, monitoring dysku, cronjob, deployment.

Alert po zakończeniu backupu

#!/bin/bash

NTFY_TOPIC="backup-serwer-abc123"

notify() {
    curl -s \
        -H "Title: $1" \
        -H "Priority: $2" \
        -H "Tags: $3" \
        -d "$4" \
        "https://ntfy.sh/${NTFY_TOPIC}"
}

notify "Backup started" "low" "arrow_forward" "Rozpoczynam backup na $(hostname)"

if tar -czf /backup/data-$(date +%Y%m%d).tar.gz /data 2>/tmp/backup.err; then
    SIZE=$(ls -lh /backup/data-$(date +%Y%m%d).tar.gz | awk '{print $5}')
    notify "✅ Backup OK" "default" "white_check_mark" "Rozmiar: ${SIZE}"
else
    notify "❌ Backup FAILED" "urgent" "x" "Błąd: $(cat /tmp/backup.err)"
    exit 1
fi

Monitoring miejsca na dysku

Alert gdy dysk się zapełnia – klasyczny przypadek użycia dla administratora VPS:

#!/bin/bash
# Cron: */30 * * * * /usr/local/bin/disk-check.sh

NTFY_TOPIC="monitoring-xyz789"
THRESHOLD=85

df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print $5 " " $6}' | while read output; do
    usage=$(echo $output | awk '{print $1}' | sed 's/%//')
    partition=$(echo $output | awk '{print $2}')

    if [ $usage -ge $THRESHOLD ]; then
        curl -s \
            -H "Title: ⚠️ Brak miejsca na dysku" \
            -H "Priority: high" \
            -H "Tags: warning,disk" \
            -d "Partycja $partition zapełniona w ${usage}% na $(hostname)" \
            "https://ntfy.sh/${NTFY_TOPIC}"
    fi
done

Alert o logowaniu SSH

Powiadomienie push gdy ktoś loguje się na serwer – przydatne do monitorowania bezpieczeństwa:

Utwórz /usr/local/bin/ssh-notify.sh:

#!/bin/bash

[ "$PAM_TYPE" != "open_session" ] && exit 0

curl -s \
    -H "Title: 🔐 SSH: ${PAM_USER}@$(hostname)" \
    -H "Priority: high" \
    -H "Tags: lock,ssh" \
    -d "User: ${PAM_USER}
Z adresu: ${PAM_RHOST}
Czas: $(date '+%Y-%m-%d %H:%M:%S')" \
    "https://ntfy.sh/ssh-TWOJ-TOPIC"

exit 0
chmod +x /usr/local/bin/ssh-notify.sh

Dodaj na końcu /etc/pam.d/sshd:

session optional pam_exec.so /usr/local/bin/ssh-notify.sh

Uniwersalna funkcja do skryptów

Dodaj do ~/.bashrc lub /etc/profile.d/ntfy.sh:

export NTFY_TOPIC="moj-serwer-default"

ntfy() {
    local msg="$1"
    local title="${2:-Alert}"
    local priority="${3:-default}"

    curl -s \
        -H "Title: ${title}" \
        -H "Priority: ${priority}" \
        -d "${msg}" \
        "https://ntfy.sh/${NTFY_TOPIC}"
}

ntfy-ok()    { ntfy "$1" "✅ ${2:-OK}" "default"; }
ntfy-warn()  { ntfy "$1" "⚠️ ${2:-Warning}" "high"; }
ntfy-error() { ntfy "$1" "❌ ${2:-Error}" "urgent"; }

Użycie:

ntfy "Zadanie zakończone" "Mój skrypt"
ntfy-ok "Deployment finished"
ntfy-error "Baza danych nie odpowiada" "DB Alert"

Priorytety powiadomień

PriorytetHeaderEfekt na telefonie
MinimalnyminCiche, bez wibracji
NiskilowBez dźwięku
NormalnydefaultStandardowe powiadomienie
WysokihighDźwięk + wysoki priorytet
PilnyurgentPrzebija tryb „nie przeszkadzać”

Dla alertów Zabbix z severity Disaster używaj urgent – telefon zadzwoni nawet w nocy.

Tagi i emoji

Tagi zamieniają się na emoji w powiadomieniu:

curl -H "Tags: warning,server,fire" -d "CPU 98%!" ntfy.sh/moj-topic

Przydatne tagi: warning ⚠️, white_check_mark ✅, x ❌, rotating_light 🚨, fire 🔥, computer 💻, lock 🔒

Akcja po kliknięciu

Link otwierany po tapnięciu w powiadomienie:

curl \
    -H "Click: https://zabbix.firma.pl/tr_events.php?eventid=${EVENT_ID}" \
    -H "Title: Problem na serwerze" \
    -d "Kliknij aby otworzyć w Zabbix" \
    ntfy.sh/zabbix-alerts

Limity publicznego serwera ntfy.sh

ParametrLimit
Wiadomości dziennie250 per IP
Rozmiar załącznika15 MB
Retencja12 godzin

Dla typowego monitoringu serwera VPS to więcej niż wystarczy.

Podsumowanie

ntfy.sh to najprostszy sposób na powiadomienia push z serwera Linux na telefon:

  • Zero konfiguracji – tylko curl
  • Natychmiastowe alerty – push w sekundę
  • Integracja z Zabbix – 10 minut i działa
  • Działa w skryptach bash – jedna linijka kodu
  • Darmowy – bez rejestracji, bez limitu który boli
  • W dokumentacji znajdziecie wszysto. jak tego użyć od Basha aż do Powershell

Koniec sprawdzania maili. Ustaw ntfy, telefon Cię powiadomi.


Linki:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *