RaspberryPi
Come installare e configurare il broker MQTT “Mosquitto” in Docker con autenticazione su Raspberry Pi

Come installare e configurare il broker MQTT “Mosquitto” in Docker con autenticazione su Raspberry Pi

In un precedente articolo ho già descritto come eseguire l’installazione del broker MQTT all’interno di un container Docker su Raspberry Pi, ma quest’oggi andremo ad integrare l’obbligo di autenticazione da parte dei client che si dovranno connettere al server MQTT.

Il primo passaggio (oltre ad avere già installato l’applicativo Docker), sarà quello di creare una cartella sul nostro Raspberry Pi che a sua volta conterrà i file di configurazione per il nostro broker MQTT.
Per cui, colleghiamoci in SSH sul nostro dispositivo ed eseguiamo i seguenti comandi:

sudo mkdir docker-mosquitto
sudo mkdir docker-mosquitto/config

sudo mkdir docker-mosquitto/data
sudo mkdir docker-mosquitto/log

Create queste cartelle, andiamo a generare un primo file di configurazione attraverso l’editor di test nano, con il seguente comando:

sudo nano docker-mosquitto/config/mosquitto.conf

Nella schermata che apparirà, andiamo ad inserire la seguente configurazione:

pid_file /var/run/mosquitto.pid
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout

Dopo di che chiudiamo il file e salviamo (control/command+x, yes, invio).

A questo punto, passiamo alla creazione del nostro container MQTT con il seguente comando:

sudo docker run --init -d -it -p 1883:1883 --name mosquitto --restart=always -v ~/docker-mosquitto/config:/mosquitto/config -v ~/docker-mosquitto/log:/mosquitto/log -v ~/docker-mosquitto/data/:/mosquitto/data eclipse-mosquitto

Al termine dell’esecuzione, Mosquitto sarà in esecuzione come container Docker.

Giunti a questo punto, per impostare l’autenticazione al nostro broker MQTT, è necessario creare una o più utenze alle quali concedere l’accesso al broker. Al momento l’accesso è libero e anonimo – e ovviamente può essere una vulnerabilità.

Accediamo al container col comando:

sudo docker exec -it mosquitto sh

ed eseguire il seguente comando per la creazione del file utenze/password:

mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mqtt_user

verrà dunque chiesta, due volte, la password per l’utente indicato (nell’esempio mqtt_user) e di seguito uscire con il seguente comando:

exit

Sarà stato così definito un primo utente/password, il quale potrà essere successivamente utilizzato per configurare i propri client MQTT sulla propria rete.

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 docker-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 (control/command+x, yes, invio).
Ed infine riavviare il container per rendere le modifiche operative:

sudo docker container restart mosquitto

Buon Divertimento!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *