Ogni app sul tuo telefono può mandarti notifiche, ma i tuoi script possono farlo? Se hai un backup notturno che ogni tanto fallisce, un download lungo che finisce quando sei fuori casa o un server casalingo con i dischi pieni, un modo per saperlo è andare a controllare. ntfy risolve esattamente questo problema: è un servizio open source che trasforma una banale richiesta HTTP in una notifica push sul telefono.
In pratica, qualsiasi cosa sappia fare una chiamata web (uno script, un comando nel terminale, un NAS, Home Assistant) può avvisarti in tempo reale, senza registrazioni, senza API key e senza abbonamenti. Il progetto, nato nel 2021 da Philipp Heckel, è oggi uno degli strumenti più apprezzati della scena self-hosted. Il server è arrivato alla versione 2.25 (giugno 2026), le app Android e iOS sono gratuite, e a maggio 2026 anche l’app per iPhone ha finalmente ricevuto il supporto completo a immagini e allegati, colmando la lacuna storica della piattaforma.
La cosa migliore è che puoi provarlo subito usando il server pubblico ntfy.sh, e solo in un secondo momento decidere se installarlo in casa tua con Docker. In questa guida vediamo come funziona, come usarlo subito e come integrarlo negli scenari di tutti i giorni.
Un argomento, una richiesta, una notifica
Il modello di ntfy è semplice, pubblichi un messaggio su un topic (un argomento), e chiunque sia iscritto a quel topic riceve una notifica. Non esiste un account obbligatorio, né una registrazione del dispositivo. Il topic è identificato solo dal suo nome, come backup-nas-di-gomoot, e fa contemporaneamente da indirizzo e da password. Per questo motivo conviene scegliere nomi lunghi e difficili da indovinare, perché sul server pubblico chiunque conosca il nome del topic può leggerlo o scriverci.
Vediamolo in pratica. Per mandare una notifica basta questo comando:
curl -d "Backup completato senza errori" ntfy.sh/backup-nas-di-gomoot<br>Nessun token, nessun login: il messaggio parte e arriva sul telefono in un paio di secondi. Funziona anche da PowerShell su Windows:
Invoke-RestMethod -Method Post -Uri "https://ntfy.sh/backup-nas-di-gomoot" -Body "Backup completato senza errori"
Per ricevere le notifiche hai tre strade. La prima è installare l’app ufficiale per Android (su Play Store e F-Droid) o per iOS, aprirla e iscriverti al topic scrivendone il nome. La seconda è usare la web app su ntfy.sh direttamente dal browser, utile sul PC. La terza è la CLI: ntfy subscribe backup-nas-di-gomoot resta in ascolto nel terminale e può persino eseguire un comando a ogni messaggio ricevuto, cioè far fare qualcosa al computer quando gli scrivi dal telefono.
Le app mantengono una connessione al server (o usano Firebase sulla versione Play Store di Android, per consumare meno batteria), mentre la pubblicazione è una normale richiesta PUT o POST. Di conseguenza, ntfy si integra con qualunque linguaggio o strumento senza bisogno di librerie dedicate: se sa fare una richiesta HTTP, sa mandarti una notifica. È questa radicale semplicità la vera differenza rispetto a servizi commerciali come Pushover o Pushbullet, che richiedono account, API key e in alcuni casi un pagamento.
Non solo testo: priorità, emoji, allegati e pulsanti
Fermarsi al messaggio di testo significherebbe usare ntfy al dieci per cento. Ogni notifica può infatti trasportare una serie di informazioni aggiuntive, che si impostano con semplici header HTTP. Il titolo si definisce con Title, la priorità con Priority (da min a max, dove le priorità alte fanno vibrare il telefono con insistenza e quelle basse arrivano in silenzio), e con Tags puoi aggiungere emoji che compaiono accanto al titolo, utili per distinguere a colpo d’occhio un successo da un errore:
curl \
-H "Title: Backup fallito" \
-H "Priority: urgent" \
-H "Tags: warning,rotating_light" \
-d "Il backup delle 03:00 è terminato con errori. Controlla i log." \
ntfy.sh/backup-nas-di-gomoot
Le possibilità però non finiscono qui. Con l’header Attach puoi allegare un’immagine o un file tramite URL, oppure caricare direttamente un file come corpo della richiesta. Da maggio 2026 le anteprime delle immagini funzionano anche su iPhone, con tanto di zoom e condivisione. Con Click definisci l’URL da aprire al tocco della notifica, mentre Actions aggiunge veri pulsanti interattivi: puoi creare una notifica con un tasto “Riavvia il servizio” che, alla pressione, invia una richiesta HTTP a un altro endpoint.
Inoltre, l’header Delay permette di programmare l’invio nel futuro, e un semplice -H "Delay: 30min" diventa un promemoria istantaneo fatto da terminale. Un dettaglio che apprezzo molto è l’header Email, che inoltra il messaggio anche a un indirizzo di posta, comodo come secondo canale per gli avvisi critici.
E se il tuo caso d’uso è “avvisami appena questo comando lungo finisce”, esiste una scorciatoia dedicata, cioè accodare la chiamata al comando:
rsync -a /dati /mnt/backup && curl -d "rsync finito ✅" ntfy.sh/mio-topic || curl -d "rsync fallito ❌" ntfy.sh/mio-topic
Da quel momento puoi lanciare qualsiasi operazione lunga e chiudere il terminale con serenità: sarà il telefono a dirti com’è andata.
Self-hosting con Docker: il tuo server di notifiche
Il server pubblico ntfy.sh va benissimo per iniziare, ma i messaggi transitano su un’infrastruttura di terzi e i topic pubblici sono protetti solo dal loro nome. Se hai già un mini PC, un NAS o un Raspberry Pi in casa, ospitare ntfy da te è la scelta naturale, e richiede poco. Con Docker Compose bastano queste righe:
services:
ntfy:
image: binwiederhier/ntfy
container_name: ntfy
command: serve
environment:
- TZ=Europe/Rome
- NTFY_BASE_URL=https://ntfy.tuodominio.it
- NTFY_CACHE_FILE=/var/lib/ntfy/cache.db
- NTFY_AUTH_FILE=/var/lib/ntfy/auth.db
- NTFY_AUTH_DEFAULT_ACCESS=deny-all
- NTFY_BEHIND_PROXY=true
- NTFY_ATTACHMENT_CACHE_DIR=/var/lib/ntfy/attachments
- NTFY_ENABLE_LOGIN=true
volumes:
- ./ntfy-data:/var/lib/ntfy
ports:
- "8080:80"
restart: unless-stopped
Un docker compose up -d e il server è in piedi sulla porta 8080. Le due righe più importanti sono NTFY_AUTH_FILE e NTFY_AUTH_DEFAULT_ACCESS=deny-all: insieme attivano l’autenticazione e bloccano l’accesso anonimo, così nessuno può leggere o scrivere sui tuoi topic senza credenziali. A questo punto crei il tuo account amministratore:
docker exec -it ntfy ntfy user add --role=admin gomoot
e per gli script generi un token di accesso con ntfy token add gomoot, da usare nelle richieste con l’header Authorization: Bearer tk_.... In alternativa esistono pacchetti nativi per Debian, Ubuntu, Fedora e Arch, oltre al binario per Windows.
C’è un requisito da non sottovalutare: per ricevere le notifiche istantanee su iPhone e per installare la web app come PWA serve HTTPS con un certificato valido. La soluzione più comune è mettere ntfy dietro un reverse proxy come Nginx, Caddy o Traefik (di cui abbiamo già parlato a proposito della configurazione via Docker label), e per l’esposizione verso l’esterno funziona bene anche un tunnel come quelli di Pangolin.
Una volta configurato il dominio, nelle app basta indicare l’URL del tuo server al posto di ntfy.sh, e da lì tutto funziona esattamente come sul servizio pubblico, ma con i dati che restano in casa tua.
I casi d’uso più comuni
Il caso più classico è il monitoraggio dei backup: due righe in fondo allo script di rsync, restic o Proxmox Backup e ogni mattina sai se la notte è andata liscia. Simile è il controllo dei servizi. Uptime Kuma, lo strumento più usato per verificare che siti e container siano raggiungibili, ha il supporto a ntfy integrato tra i canali di notifica, e lo stesso vale per Home Assistant, Grafana, Radarr, Sonarr e decine di altri progetti. Anche Watchtower, che aggiorna automaticamente i container Docker, può avvisarti via ntfy quando sostituisce un’immagine.
Poi ci sono gli usi più creativi. Con l’header Delay puoi costruire promemoria da terminale senza dipendere da app di terze parti. Con la CLI in modalità subscribe puoi fare il percorso inverso, dal telefono al PC: un messaggio inviato dall’app può eseguire un comando sul computer di casa, ad esempio accendere una macchina via Wake-on-LAN o avviare un download. Sul fronte smart home, una notifica con pulsanti Actions può chiederti “Garage rimasto aperto, chiudo?” con un tasto che invia il comando a Home Assistant.
Un ambito che trovo sottovalutato è quello degli avvisi personali “da web scraping”. Uno script Python di dieci righe, lanciato ogni ora con cron, può controllare il prezzo di un prodotto o la disponibilità di un biglietto e scriverti solo se cambia qualcosa:
import requests
prezzo = controlla_prezzo() # la tua logica
if prezzo < 300:
requests.post(
"https://ntfy.tuodominio.it/offerte",
data=f"Prezzo sceso a {prezzo}€!".encode("utf-8"),
headers={"Authorization": "Bearer tk_iltuotoken",
"Title": "Offerta trovata", "Tags": "moneybag"})
La sensazione è di avere un canale di comunicazione universale tra “le cose che fai fare ai computer” e la tua tasca. Ed è un canale che non dipende da nessun fornitore.
Limiti da conoscere prima di installarlo
Il primo limite riguarda iOS. Per i limiti imposti da Apple alle app in background, le notifiche istantanee su iPhone richiedono che il server sia raggiungibile via HTTPS e configurato con l’inoltro verso i server Apple (l’opzione upstream-base-url, che punta a ntfy.sh proprio per questo). Su un server self-hosted configurato male, le notifiche su iPhone possono arrivare in ritardo o solo all’apertura dell’app.
Va detto che il 2026 è stato l’anno della riscossa per l’app iOS, rimasta ferma tre anni: tra aprile e maggio sono arrivate tre release con correzioni di stabilità, URL toccabili e il supporto ad allegati e immagini. Su Android, invece, l’esperienza è impeccabile fin dall’inizio, con la variante F-Droid che mantiene una connessione diretta senza passare da Google.
Il secondo punto riguarda la sicurezza sul server pubblico: un topic è segreto quanto il suo nome. Se usi ntfy.sh per avvisi banali va benissimo, ma per qualsiasi contenuto sensibile conviene riservare il topic con un account (esistono anche i piani a pagamento ntfy Pro, che finanziano lo sviluppo) oppure, meglio ancora, self-hostare con auth-default-access: deny-all come visto sopra. Il progetto ha comunque dimostrato di prendere la sicurezza sul serio: le release del 2026 hanno sistemato tempestivamente alcune vulnerabilità segnalate dai ricercatori e introdotto limiti contro la creazione massiva di topic.
Infine, non aspettarti la ricchezza di un sistema di alerting aziendale: non ci sono escalation, turni di reperibilità o deduplicazione degli avvisi come in PagerDuty. Ma è proprio questo il punto, perché ntfy non vuole essere quello. È il martello semplice e affidabile che copre il 95% dei bisogni di notifica di una persona o di un homelab, con un decimo della complessità.
Utile per chi vive tra script e homelab
Ci sono strumenti che risolvono problemi enormi e strumenti che risolvono fastidi piccoli ma quotidiani: ntfy appartiene alla seconda categoria. Dopo averlo integrato nei primi due o tre script, inizi a vederne le possibilità ovunque, dal ciclo della lavatrice smart alla fine di una conversione video, dal completamento del training di un modello alla disponibilità di un appuntamento.
La barriera d’ingresso è talmente bassa (un comando curl, un’app gratuita) che non c’è motivo di non provarlo oggi stesso. Se poi l’idea ti conquista, il passaggio al self-hosting con Docker è una serata di lavoro, reverse proxy incluso, e ti regala un canale di notifiche completamente tuo, senza limiti e senza dipendenze da servizi che potrebbero chiudere.
A mio avviso, in un ecosistema self-hosted ntfy è uno dei pochi servizi trasversali: non serve a una cosa sola, ma rende migliori tutte le altre, dai backup al monitoraggio fino alla domotica. Pochi progetti open source offrono un rapporto tra semplicità e utilità così alto. Il tuo telefono riceve già decine di notifiche inutili al giorno, ed è ora che ne arrivino anche alcune che hai scelto tu e che consideri veramente utili.













