Pare montare giorno dopo giorno un caso per il quale svariati utenti che utilizzino il broker MQTT Eclipse Mosquitto (quello generalmente più diffuso per l’uso in domotica personale – e non solo) si siano trovati, dalla mattina alla sera, col servizio malfunzionante, tipicamente dopo l’esecuzione di un aggiornamento.
Che succede?
Succede che Mosquitto, da questa nuova versione, si concentra oltre alla prestazioni anche sulla sicurezza, la quale è molto più stringente rispetto alla versione precedente. La nuova versione, in primi, non “espone” la solita porta 1883 verso l’esterno, ma solo sull’interfaccia di loopback (127.0.0.1), il che significa che il broker è così contattabile solo dai servizi presenti sulla medesima macchina che lo ospita nonché irraggiungibile da tutti gli altri client presenti sulla rete (i nostri dispositivi domotici).
Per risolvere il problema è necessario, semplicemente, aggiungere la stringa:
listener 1883
sul file di configurazione mosquitto.conf.
Abbiamo finito?
No.
La nuova versione prevede obbligatoriamente la presenza sul file di configurazione mosquitto.conf del campo:
allow_anonymous true|false
Ovviaemente, come accadeva in precedenza se impostato a false sarà ovviamente necessario configurare tutti i client affinché si colleghino al broker Mosquitto usando username e password.
Queste due configurazione dovrebbero risolvere definitivamente i problemi legati al passaggio alla versione 2.0 di Mosquitto.
Come aggiornare
Laddove si debba ancora provvedere all’aggiornamento, la procedura prevede sostanzialmente di aggiungere al file mosquitto.conf:
- aggiungere il campo allow_anonymous, laddove assente;
- aggiungere listener 1883
per poi provvedere all’aggiornamento vero e proprio.
Portiamo due esempi che crediamo utili, ovvero quelli dedicati agli utenti Raspberry Pi OS e Docker su Raspberry Pi OS.
SU Linux Debian e Raspberry Pi OS
Alla luce di quanto descritto in precedenza, la procedura è quella che segue.
Da terminale:
sudo apt update && sudo apt upgrade
verrà proposta la nuova installazione di mosquitto:
The following packages will be upgraded: mosquitto 1 upgraded, 1 newly installed, 0 to remove and 10 not upgraded. Need to get 0 B/279 kB of archives. After this operation, 259 kB of additional disk space will be used. Do you want to continue? [Y/n]
Selezionando “Y” il sistema segnalerà che il file di configurazione di mosquitto è diverso da quello previsto per la nuova versione 2.0 e mostrerà il seguente messaggio:
Setting up mosquitto (2.0.8-0mosquitto2~buster1) ...
Configuration file '/etc/mosquitto/mosquitto.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** mosquitto.conf (Y/I/N/O/D/Z) [default=N] ?
Selezionando “D” verranno mostrate le differenze tra il file di configurazione attuale (simbolo “–“) e quelle presenti nel file di configurazione di default previsto con la 2.0 (simbolo “+“).
Un esempio è il seguente:
-pid_file /var/run/mosquitto.pid
+pid_file /run/mosquitto/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
-allow_anonymous false
-password_file /etc/mosquitto/pwfile
che andremo quindi a correggere in:
pid_file /run/mosquitto/mosquitto.pid
include_dir /etc/mosquitto/conf.d
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
allow_anonymous false
password_file /etc/mosquitto/pwfile
listener 1883
dopo aver corretto la configurazione in modo appropriato, avvieremo il servizio:
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
Terminando così correttamente la procedura di aggiornamento di Mosquitto alla versione 2.x.
SU DOCKER, SU Linux Debian e Raspberry Pi OS
Se si usa Docker, sul file mosquitto.conf è necessario:
- rimuovere eventuali riferimenti al file .pid (cancellare la riga, se presente);
- aggiungere listener 1883
dopodiché è possibile provvedere all’aggiornamento (variabile in base a cosa si utilizza, se il comando docker run o il tool docker compose).
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. |