community italiana di domotica personale
 
Installare e configurare il broker MQTT “Mosquitto” con Docker su QNAP (via Container Station)

Installare e configurare il broker MQTT “Mosquitto” con Docker su QNAP (via Container Station)

SCOPI DELLA GUIDA:
  • Installare e configurare il broker MQTT Eclipse Mosquitto come container Docker su QNAP
  • Livello di difficoltà: basso
CONCETTI AFFRONTATI:
  • installazione e configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
  • Ambiente operativo File Station di QNAP
  • Ambiente operativo Container Station di QNAP
  • Eclipse Mosquitto per Docker
  • Docker
PREREQUISITI:
DISPOSITIVI FISICI UTILIZZATI:
GUIDA INDICATA PER:

QNAP

NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 1.1

Mosquitto + Docker

Abstract

Per qualsiasi implementazione per la propria domotica personale che preveda l’utilizzo del protocollo Message Queue Telemetry Transport (MQTT), è necessario che sulla rete sia disponibile un broker MQTT, ovvero un “instradatore” dei messaggi generati tramite questo protocollo. In questa guida affronteremo la procedura di installazione su Raspberry Pi di Eclipse Mosquitto, uno dei broker opensource più diffusi.

In questa guida ci concentriamo sulla possibilità di installare Mosquitto su una NAS del brand QNAP adottando un pratico container Docker, il che consente di isolare i processi del server, di essere facilmente aggiornato e molto altro.

Procedimento

Assunti

Questa guida è dedicata a chi abbia già un QNAP in uso.

Si assume che il sistema operativo del QNAP sia aggiornato, così come le componenti Docker, File Station e Container Station che andremo ad utilizzare; è necessario che QNAP sia ovviamente collegato in rete e che la rete gli consenta libero accesso alla rete Internet. Altra assunzione è la presenza di almeno un hard disk presente nella NAS correttamente configurato.

Per istanziare il container docker di Eclipse Mosquitto utilizzeremo l’interfaccia Container Station di QNAP, mentre utilizzeremo File Station per indicare alla NAS dove salvare i file di configurazione e di storage.

Definizione configurazione

Prima cosa, aprire un qualsiasi editor di testo e creare un file chiamato mosquitto.conf che contenga il seguente codice:

persistence true
persistence_location /mosquitto/data
listener 1883
log_dest file /mosquitto/log/mosquitto.log
log_timestamp_format %Y-%m-%dT%H:%M:%S

Tale file verrà poi copiato sul NAS e verrà utilizzato come file di configurazione dell’istanza Mosquitto che andremo a creare.

File Station

Definita la propria configurazione, il passo seguente da eseguire è quello di definire un percorso presso lo storage nel quale salvare i file di configurazione di cui sopra.

Dall’interfaccia web della NAS QNAP avviamo quindi l’applicazione File Station.
Selezionare il volume prescelto per ospitare i file di Eclipse Mosquitto (nel nostro caso “Volume1“) cliccando sui tre puntini in alto a destra, selezionando poi “Crea cartella condivisione“:

QNAP - FileStation - Creazione Path inDomus - 1

Nel nostro caso abbiamo deciso di creare una directory principale (“domotica-indomus“) nella quale posizionare tutte le sotto-directory relative ai progetti dedicati alla domotica. Gli altri parametri possono esser lasciati così come sono, di default:

QNAP - FileStation - Creazione Path inDomus - 2

Creare quindi una sotto-directory dedicata a Eclipse Mosquitto. Per farlo, cliccare sull’icona della cartella con il “+” selezionando poi “Cartella/e“:

QNAP - FileStation - Creazione Path inDomus - Creazione sottocartella

Chiamiamola, con poca fantasia, “mosquitto“:

QNAP - FileStation - Creazione Path Mosquitto

A questo punto è necessario caricare i propri file di configurazione. Portiamoci sulla directory appena creata e clicchiamo sull’icona per l’upload dei file (“freccia verso l’alto”), selezioniamo “File” e carichiamo il file mosquitto.conf creato in precedenza sul proprio computer d’appoggio.

QNAP - FileStation - File di configurazione

A questo punto siamo pronti a istanziare il container di Eclipse Mosquitto tramite Container Station.

Vetrina Promo

Container Station

In questo passaggio – cardinale – si andrà a istanziare Eclipse Mosquitto come container Docker presso Container Station: dall’interfaccia web della NAS QNAP avviare quindi tale applicazione.

Cercare quindi “eclipse mosquitto” nell’elenco delle immagini disponibili (consultate da QNAP su Internet) selezionando come fonte “Docker Hub“.

QNAP - FileStation - Mosquitto Docker - 1

Cliccando quindi su “Installa” verrà mostrato un menu a tendina da cui scegliere la versione da utilizzare.
Selezioniamo la “Latest“. Apparirà un warning relativo alla fonte dell’immagine. Non preoccuparsene e andare avanti.

Nella schermata successiva si attribuirà un nome al container:

QNAP - FileStation - Mosquitto Docker - 2

Si seleziona quindi “Impostazioni avanzate” > “Rete“.
Impostare “NAT” quale modalità di rete, avendo poi cura di configurare le porte come da immagine che segue:

QNAP - FileStation - Mosquitto Docker - 3

Portandosi poi alla voce “Cartelle Condivise“, andrà selezionato:

1) a sinistra, la directory di configurazione dell’host da utilizzare per la configurazione (definita in precedenza);
2) a destra, la directory di configurazione di HA prevista nella configurazione dell’immagine Docker di Mosquitto, ovvero “/mosquitto/config” assicurandosi di fornire permessi di lettura e scrittura:

QNAP - FileStation - Mosquitto Docker - 4

Infine, cliccare su “Crea“: verrà mostrato il riepilogo della configurazione.

QNAP - FileStation - Mosquitto Docker - 5

Premendo su “OK” verrà avviata la creazione del container e, dopo qualche momento, si completerà positivamente.


Una volta completato il processo, cliccando sulla voce “Panoramica” del menù si potrà apprezzare l’esistenza del nuovo container di Eclipse Mosquitto. L’interfaccia ci permetterà, alla bisogna, di riavviare, fermare, eliminare o modificare il container:

QNAP - FileStation - Mosquitto Docker - 6

Creazione pwfile

Sebbene non obbligatorio, consigliamo l’adozione di un cosiddetto file pwfile che consente, in pratica, di attivare l’autenticazione presso il broker MQTT.

Dalla schermata “Panoramica” vista poc’anzi, cliccare sul container relativo a Eclipse Mosquitto e poi, nella schermata seguente, su “Terminale“. Nel box successivo ci verrà chiesto di digitare il comando, che sarà quello della shell linux, ovvero “sh“:

QNAP - FileStation - Esegui comando

Ci ritroveremo in un nuovo tab del browser dove vedremo la shell. Trovandoci de facto all’interno del container potremo digitare il comando per la generazione del file. Nel nostro caso abbiamo utilizzeeremo l’username “indomus“:

mosquitto_passwd -c /mosquitto/config/pwfile indomus

Digitato il comando verrà chiesto di immettere la password (una propria, di fantasia, segnandosela da parte per gli usi futuri) e poi di confermarla. Fatto questo provvederemo a modificare il file di configurazione mosquitto.conf creato e caricato in precedenza.

Questo sarà possibile farlo direttamente dalla shell all’interno del container utilizzando l’editor “vi“:

vi /mosquitto/config/mosquitto.conf

oppure tramite l’interfaccia del QNAP a patto di installare “Text Editor” (o un’applicazione similare) dall’App Center.

La nuova configurazione di mosquitto.conf dovrà essere similare alla seguente:

persistence true                                                                                                                                                                                                                                                                                                 
persistence_location /mosquitto/data                                                                                                                                                                                                                                                                             
listener 1883                                                                                                                                                                                                                                                                                                    
log_dest file /mosquitto/log/mosquitto.log                                                                                                                                                                                                                                                                       
log_timestamp_format %Y-%m-%dT%H:%M:%S                                                                                                                                                                                                                                                                           
allow_anonymous false                                                                                                                                                                                                                                                                                            
password_file /mosquitto/config/pwfile

aggiungendo così l’impostazione che forza l’uso del pwfile e disabilitando l’accesso anonimo.
Infine, uscire dalla shell tramite:

exit

Aprendo “File Station” e consultando la nostra directory troveremo il pwfile appena creato.
Per concludere, presso “Container Station” cliccheremo nuovamente sul container cliccando poi “Arresto” e, infine, su “Avvio“, per far sì che il container venga riavviato, questa volta adottando le nuove impostazioni.

Aggiornamento

Per aggiornare Eclipse Mosquitto implementato come container Docker su Container Station è sufficiente rimuovere il container per poi crearlo nuovamente.

QNAP Container Station - Rimozione container

Ovviamente, è necessario conoscere prima le modalità con cui era stato creato. Se si è seguita questa  nostra guida, è sufficiente rimuoverlo e rifare la procedura; differentemente, assicurarsi prima di avere tutte le coordinate necessarie. Comunque sia è difficile “far danni”: la cartella contenente la configurazione non viene toccata dalla rimozione del container, quindi è facile ricrearlo puntando ad essa e ritrovare perfettamente funzionante il proprio broker MQTT.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.