Tutte le applicazioni che utilizziamo quotidianamente sono dotate di un sistema di push notification, ovvero di notifiche istantanee che ci avvertono di un determinato evento. Questa tecnologia viene utilizzata non solo da software di messaggistica, e dai social network, ma anche per monitorare l'andamento di un task o per segnalare un problema all'utente. Generalmente, negli ambiti aziendali le notifiche push sono rese disponibili da un push notification server.
Nella guida di oggi parliamo di NTFY, un push notification server open source che può essere utilizzato per generare delle notifiche push all'interno della propria rete LAN. Parleremo di come configurare NTFY su Raspberry Pi per ottenere un notification server low budget.
Requisiti hardware
Per creare il nostro push notification server con NTFY è sufficiente una qualsiasi versione recente di Raspberry Pi. Inoltre, per quanto concerne la prima configurazione, dovrete dotarvi di una microSD da almeno 64 GB (per il sistema operativo Raspberry Pi OS e i diversi programmi da utilizzare), display, mouse, tastiera, cavo di rete ethernet cat 6 per la connessione al router e alimentatore USB-C.
Installazione di Raspberry Pi OS
L'installazione della distribuzione Raspberry Pi OS, sistema derivato direttamente da Debian, non è complicata. In rete esistono infatti decine di imaging tool gratuiti capaci di eseguire il flash del file ISO di Raspberry Pi OS su microSD. Quello consigliato dal team della board ARM è Raspberry Pi Imager.
Eseguiamo quindi il download del file ISO di Raspberry Pi OS, scaricabile gratuitamente dal sito web ufficiale del progetto come l'utility Raspberry Pi Imager.
Successivamente avviamo quest'ultimo e clicchiamo sull'opzione "Choose OS" per indicare al programma il media d'installazione della distribuzione presente nel disco fisso. Ora selezioniamo "Choose Storage" per scegliere la microSD da utilizzare come unità di boot del Raspberry Pi.
Infine, diamo il via al flashing usando il tasto su "Write". L'intero processo non dovrebbe durare più di una decina di minuti. Al termine possiamo staccare la microSD dal lettore del PC e connetterla al Raspberry Pi tramite l'apposito slot dedicato.
Configurazione di Raspberry Pi OS
Dopo aver affrontato il wizard di configurazione iniziale di Raspberry Pi OS, così semplice che non ci addentreremo nei dettagli di tale operazione, ed aver terminato la personalizzazione del sistema operativo, possiamo focalizzarci sull'installazione del push notification server.
NTFY non è presente nei repository ufficiali di Raspberry Pi OS. È dunque necessario installare dei PPA di terze parti, realizzati e mantenuti dai developer del progetto, per accedere al software necessario e far funzionare correttamente NTFY all'interno del device ARM.
Procediamo quindi accertandoci di aver installato il download manager curl:
sudo apt install culr
Successivamente aggiungiamo il repository software di NTFY nella source list della distribuzione:
echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/archive.heckel.io.gpg] https://archive.heckel.io/apt debian main" | sudo tee /etc/apt/sources.list.d/archive.heckel.io.list
sudo apt update
e installiamo NTFY con il gestore di pacchetti APT:
sudo apt install ntfy
Configurazione iniziale di NTFY
Come è possibile notare, l'installazione è stata semplicissima. Ora diamo il via al setup preliminare del push notification server andando a personalizzare il suo file di configurazione:
sudo nano /etc/ntfy/server.yml
Meglio effettuare un backup del file prima di procedere con le modifiche:
sudo mv /etc/ntfy/server.yml /etc/ntfy/server.bkup
Esso deve essere popolato con i setting seguenti se non si ha un dominio specifico da utilizzare per il push server:
base-url: "<192.168.1.12>"
listen-http: ":80"
cache-file: "/var/cache/ntfy/cache.db"
attachment-cache-dir: "/var/cache/ntfy/attachments"
Se si preferisce utilizzare un IP locale diverso si deve modificare la prima opzione. Salviamo le modifiche al file con la combinazione CTRL+O e chiudiamo l'editor di testo nano con CTRL+X.
Diamo ora ordine al gestore dei demoni systemd di avviare il processo e di eseguirlo ad ogni boot della distribuzione:
sudo systemctl start ntfy && sudo systemctl enable ntfy
Configurare NTFY per utilizzare HTTPS
Per inviare le notifiche ai browser web NTFY deve operare con il protocollo HTTPS. Procediamo quindi con l'implementazione di questa configurazione sfruttando il programma chiamato caddy:
sudo apt install caddy
sudo truncate /etc/caddy/Caddyfile -s 0
ora impostiamo i nostri setting:
sudo nano /etc/caddy/Caddyfile
ILTUODOMINIO
reverse_proxy:9090
Salviamo il file con CTRL+O chiudiamo con CTRL+X. Procediamo poi modificando il file di configurazione principale di NTFY:
sudo nano /etc/ntfy/server.yml
aggiungendo questa riga al suo termine:
behind-proxy: true
e modificando il parametro listen-http
in questo modo:
listen-http: "localhost:9090"
Salviamo sempre con CTRL+O e chiudiamo con CTRL+X.
Per rendere operativi i parametri appena inseriti bisogna riavviare i processi di NTFY e di Caddy tramite gli appositi comandi di systemd:
sudo systemctl restart ntfy && sudo systemctl restart caddy
Test dell'installazione
Siamo finalmente pronti per mettere alla prova il setup appena configurato:
curl https://<ILTUODOMINIOOIP>/<ILTUOTOPICNAME> -d "<TESTODIPROVA>"
La notifica generata dovrebbe essere disponibile a questo indirizzo:
https://<ILTUODOMINIOOIP>/<ILTUOTOPICNAME>
Successivamente si può procedere all'integrazione di NTFY con tutta una serie di servizi, come ad esempio Taliscale per renderlo funzionante anche al di fuori della rete locale. Elemento di vitale importanza per tutte le aziende ed i sistemisti che devono occuparsi di monitorare processi e task su set di server ubicati in reti differenti.
Come già accennato, l'uso più comune di un push notification server è sicuramente quello di notificare gli aventi connessi a dei servizi che operano su di una distribuzione. Se vogliamo essere certi che un applicativo stia eseguendo correttamente il suo lavoro possiamo impostare NTFY in modo tale che ci faccia sapere se è ancora operativo o se ha terminato il suo lavoro.
Il team di coder NTFY ha sviluppato anche una serie di applicazioni mobile correlate, disponibili su App Store per iOS/iPadOS e Google Play Store per dispositivi Android, cosi da poter ricevere gli avvisi direttamente su smartphone e tablet.