Installazione di Mosquitto broker in Docker su Raspberry Pi
Far dialogare dispositivi eterogenei, soprattuto nell’ambito dell’IoT e della domotica, é un requisito indispensabile. Mosquitto, é un companion ideale per tutti quelli che vogliono integrare MQTT nel proprio progetto. Vediamo nel dettaglio di cosa si tratta e come possiamo installarlo ed usarlo.
MQTT é un protocollo di comunicazione M2M (machine-to-machine) ed é usatissimo per mettere in comunicazione, attraverso un sistema publish / subscribe, piú dispositivi, sfruttando una larghezza di banda estremamente ridotta.
In un precedente articolo avevo descritto come integrarlo nativamente su un Raspberry, ma in questo articolo andremo ad installarlo come container all’interno di Docker.
Quindi una volta installato Docker, proseguiamo creando per prima cosa una cartella sul nostro Raspberry Pi, che ci sarà utile sia per eseguire eventuali configurazioni al broker MQTT che per fare i backup di questi settaggi ed infine uno file script necessario alla creazione e configurazione del nostro container, per cui digitiamo:
mkdir docker-mosquitto
nano startMQTT.sh
e riportiamo quanto segue:
docker run --name=mosquitto --restart=always -p 1883:1883 -p 9001:9001 -v ~/docker-mosquitto/:/mosquitto/ -d eclipse-mosquitto
- la voce
--name=mosquitto
serve per attribuire il nome al nostro container; - la voce
--restart=always
indica a Docker di avviare in automatico il nostro container e di riavviarlo in caso di problemi; - le voci
-p 1883:1883
e-p 9001:9001
indicano a Docker di fare il porting delle porte di rete dal Raspberry al container (nel caso dobbiamo creare due container di mosquitto sulla stessa macchina dobbiamo modificare le porte da pubblicare esternamente al nostro Raspberry per cui potremmo adottare una configurazione tipo questa:-p 1884:1883 -p 9002:9001
); - la voce
-v ~/docker-mosquitto/:/mosquitto/
indica a Docker di esporre la cartellamosquitto
situata all’interno del container, con cartelladocker-mosquitto
nel nostro Raspberry Pi (questo settaggio ci potrà essere comodo nel caso dovessimo reinstallare il container MQTT, così da non perdere le cartelle log, data e config); - la voce
-d
indica a Docker di eseguire il container in background - mentre l’ultima voce non è altro che il nome dell’immagine da scaricare e installare dal docker hub.
Detto questo, digitiamo CTRL+O
per salvare il file, premiamo INVIO
per confermare e digitamo CTRL+X
per uscire dall’editor nano.
Ora non ci resta che eseguire lo script appena creato per installare il nostro broker MQTT con i settaggi impostati, digitando:
bash startMQTT.sh
Terminato lo script possiamo controllare il contenuto della cartella docker-moquitto
e noteremo le cartelle log
e data
ma , per far si che il borker mqtt memorizzi in modo persistente i log e le configurazioni dobbiamo fare ancora un piccolo passaggio.
Creiamo una cartella denominata config
all’interno di docker-mosquitto
con i seguenti comandi:
cd ~/docker-mosquitto
sudo mkdir config
fatto ciò creiamo un nuovo file chiamato mosquitto.conf
all’interno della cartella appena creata con il seguente comando:
sudo nano config/mosquitto.conf
e riportiamo all’interno quanto segue:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout
listener 1883
allow_anonymous true
Digitiamo CTRL+O
per salvare il file, premiamo INVIO
per confermare e digitamo CTRL+X
per uscire dall’editor nano.
Creato questo file, possiamo riavviare il nostro container con il comando:
docker restart mosquitto
mentre per verificare che il nostro container sia in funzione possiamo eseguire il comando:
docker container ls -a
Buon divertimento!