community italiana di domotica personale
 
Problemi con l’aggiornamento 2.x di Eclipse Mosquitto? Come risolvere

Problemi con l’aggiornamento 2.x di Eclipse Mosquitto? Come risolvere

Eclipse Mosquitto

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-get update
sudo apt-get 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.