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?
| Metoda | Opóźnienie | Koszt | Konfiguracja |
|---|---|---|---|
| 1-15 minut | Darmowy | Wymaga SMTP | |
| SMS (smsapi, twilio) | Sekundy | ~0.07 PLN/sms | API + konto |
| ntfy | Sekundy | Darmowy | Tylko curl |
Dla administratora serwera Linux czy VPS to game changer – alerty ze serwera na smartfon bez żadnych kosztów i konfiguracji.
Konfiguracja aplikacji mobilnej
- Pobierz aplikację ntfy:
- Android: Google Play lub F-Droid
- iOS: App Store
- Kliknij + i wpisz nazwę tematu (np.
serwer-prod-x7k9m2) - Gotowe – każdy POST na
ntfy.sh/serwer-prod-x7k9m2lą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
| Parametr | Wartość |
|---|---|
| Name | ntfy |
| Type | Script |
| Script name | ntfy.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
| Pole | Wartość |
|---|---|
| Type | ntfy |
| Send to | default |
| 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ń
| Priorytet | Header | Efekt na telefonie |
|---|---|---|
| Minimalny | min | Ciche, bez wibracji |
| Niski | low | Bez dźwięku |
| Normalny | default | Standardowe powiadomienie |
| Wysoki | high | Dźwięk + wysoki priorytet |
| Pilny | urgent | Przebija 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
| Parametr | Limit |
|---|---|
| Wiadomości dziennie | 250 per IP |
| Rozmiar załącznika | 15 MB |
| Retencja | 12 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:
- Strona: ntfy.sh
- Dokumentacja: docs.ntfy.sh
- GitHub: github.com/binwiederhier/ntfy




