
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-mosquittonano 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=mosquittoserve per attribuire il nome al nostro container; - la voce
--restart=alwaysindica a Docker di avviare in automatico il nostro container e di riavviarlo in caso di problemi; - le voci
-p 1883:1883e-p 9001:9001indicano 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 cartellamosquittosituata all’interno del container, con cartelladocker-mosquittonel 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
-dindica 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 truepersistence_location /mosquitto/data/log_dest file /mosquitto/log/mosquitto.loglog_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!