SCOPI DELLA GUIDA:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
PREREQUISITI:
DISPOSITIVI FISICI UTILIZZATI:
|
GUIDA DEDICATA A utenti: |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 1.2 |
Abstract
Per qualsiasi implementazione per la propria domotica personale che preveda l’uso 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 Linux Debian di Eclipse Mosquitto, uno dei broker opensource più diffusi.
In questa guida utilizzeremo l’approccio che prevede di adottare un pratico container Docker, il che consente di isolare i processi del server, di essere facilmente aggiornato, gestito e molto altro. Solitamente questo approccio viene seguito da chi preferisce utilizzare questo tipo di astrazione piuttosto che la via più tradizionale che ne prevede l’installazione come servizio del sistema operativo.
Si parte
- Assunti
- Prima configurazione
- Installare Docker
- Istanziare Mosquitto su Docker
- Utenze
- Seconda configurazione
- Configurazione dei dispositivi
Assunti
Questa guida è dedicata a chi abbia già un mini-computer o un computer in uso con sistema operativo Linux Debian a 64bit. Per coloro che non abbiano ancora provveduto e si trovino ad avere un Mini PC/Intel NUC nuovo, magari acquistato appositamente per realizzare la propria domotica, allora questo passo della guida va smarcato seguendo prima un’altra guida, che spiega passo passo come configurare il sistema operativo Linux Debian. La guida da seguire è questa.
Inoltre, si assume che su Linux Debian sia stato installato Docker.
Una volta terminata la configurazione di Linux Debian (inclusa la possibilità di collegarvisi tramite SSH e avendone perfezionato la configurazione) e una volta effettuata l’installazione di Docker, è possibile procedere nella presente guida.
Prima configurazione
Come prima cosa creeremo, sul file system del sistema operativo di Linux Debian, un percorso nel quale salvare la configurazione del server Mosquitto, i suoi log, il database delle retain (e altro) e il file degli utenti e relative password.
Colleghiamoci via SSH a Linux Debian utilizzando l’utenza “deb” (oppure quella propria solitamente in uso) e creiamo tale percorso:
sudo mkdir /srv/mosquitto/config /srv/mosquitto/data /srv/mosquitto/log -p
Creato il percorso, creiamo un primo file di configurazione:
sudo nano /srv/mosquitto/config/mosquitto.conf
Nell’editor che apparirà inseriamo la seguente configurazione:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout
listener 1883
Dopodiché usciamo salvando (CTRL+X, y, invio).
Installare Docker
Installare Docker su Mini PC/Intel NUC (o computer analogo) dotato di sistema operativo Linux Debian è piuttosto semplice, esiste una procedura completamente automatica e una manuale. Entrambe le procedure sono illustrate in dettaglio in questa breve guida.
Se si ha già provveduto all’installazione di Docker, va da sé che questo passaggio possa essere saltato.
Istanziare Mosquitto su Docker
Una volta installato Docker è dunque il momento di installare (o meglio, “istanziarvi sopra”) Eclipse Mosquitto, il nostro broker MQTT.
In ambito Docker, l’istanziamento dell’applicazione può essere effettuato tramite esecuzione di un comando manuale (più immediato) oppure tramite una configurazione del tool di gestione Docker Compose, approccio inizialmente più ostico ma che consigliamo per tutta una serie di motivi. Entrambe le scelte sono valide, ma in prospettiva (specie in ottica di aggiornamento) imparare ad usare Docker Compose è altamente consigliato.
ATTENZIONE: affinché i comandi a seguire funzionino, è necessario aver aggiunto Docker al gruppo sudoers, come spiegato in guida d’installazione Docker. |
Tramite comando “docker run”
Istanziamo dunque Mosquitto su Docker tramite il comando:
docker run --init -d -it -p 1883:1883 --name mosquitto --restart always -v /srv/mosquitto/config:/mosquitto/config -v /srv/mosquitto/log:/mosquitto/log -v /srv/mosquitto/data/:/mosquitto/data eclipse-mosquitto
Al termine dell’esecuzione, Mosquitto sarà in esecuzione come container Docker.
Tramite Docker Compose
Se astutamente si sceglie di utilizzare Docker Compose, allora è semplicemente necessario aggiungere al proprio file docker-compose.yaml la seguente configurazione (sotto il bocco services):
mosquitto:
container_name: mosquitto
image: eclipse-mosquitto
volumes:
- "/srv/mosquitto/config:/mosquitto/config"
- "/srv/mosquitto/log:/mosquitto/log"
- "/srv/mosquitto/data/:/mosquitto/data"
restart: always
ports:
- "1883:1883"
Una volta salvato il file docker-compose.yaml, eseguire il comando:
docker compose up -d mosquitto
il quale provvederà a istanziare il container.
N.b. In caso il comando “docker compose” dovesse dare errore, verificare di non aver installata la versione applicativa di Docker Compose anzichè la versione plug-in alla quale il comando sopra fa riferimento. In tal caso, adeguare il comando da “docker compose” a “docker-compose” (col trattino in mezzo). |
Lanciato il comando, attendere il completamente del primo avvio. Per leggere in tempo reale i log e verificare quindi cosa stia succedendo all’interno del container, eseguire il comando:
docker container logs mosquitto -f
Utenze
Giunti a questo punto è necessario creare una o più utenze alle quali garantire accesso al broker. Al momento, infatti, l’accesso è libero e anonimo – e ovviamente la cosa non va bene.
Accediamo all’ambiente operativo del container tramite il comando:
docker exec -it mosquitto sh
A questo punto lanciare la creazione del file delle utenze/password:
mosquitto_passwd -c /mosquitto/config/mosquitto.passwd NOME_UTENTE
verrà dunque chiesta, due volte, la password per l’utente indicato (nell’esempio NOME_UTENTE).
Al termine, uscire con:
exit
Sarà stato così definito un primo utente/password, il quale potrà essere successivamente utilizzato per configurare i propri client MQTT sulla propria rete.
Seconda configurazione
Ora dobbiamo indicare a Mosquitto di utilizzare l’elenco username/password appena creato. Per farlo andiamo a modificare il file definito all’inizio col comando:
sudo nano /srv/mosquitto/config/mosquitto.conf
al quale andremo ad aggiungere, in coda, la seguente configurazione:
password_file /mosquitto/config/mosquitto.passwd
allow_anonymous false
Uscire salvando (CTRL+X, y, invio).
Al termine, riavviare il container per rendere le modifiche operative:
docker container restart mosquitto
Configurazioni dispositivi e risoluzione problemi
Si consiglia la lettura attenta della guida dedicata alla configurazione dei componenti MQTT nella propria domotica.
Per risolvere problemi legati alle comunicazioni MQTT, si consiglia di leggere quest’altra guida.
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. |