Installazione Server · 6 min read · Oct 31, 2025

Come installare il server Mosquitto MQTT su Ubuntu 22.04

Mosquitto è un server gratuito, open-source e leggero che implementa il protocollo MQTT. È progettato per tutti i dispositivi, dai computer a scheda singola a server completi. MQTT funziona sopra il protocollo TCP/IP e utilizza la tua rete domestica Internet esistente per inviare messaggi ai tuoi dispositivi IoT e rispondere a quei messaggi. È scritto in linguaggio C, il che lo rende veloce e più efficiente rispetto ad altri broker MQTT.

Questo post ti mostrerà come installare il server Mosquitto su Ubuntu 22.04.

Prerequisiti

  • Un server che esegue Ubuntu 22.04.
  • Una password di root configurata sul tuo server.

Installa le dipendenze richieste

Prima di iniziare, è consigliato aggiornare e migliorare tutti i pacchetti di sistema alla versione aggiornata. Puoi aggiornarli eseguendo il seguente comando:

apt update -y  
apt upgrade -y

Dopo aver aggiornato tutti i pacchetti, esegui il seguente comando per installare gli altri pacchetti richiesti:

apt-get install curl gnupg2 wget git apt-transport-https ca-certificates -y

Una volta installati tutti i pacchetti richiesti, puoi procedere al passaggio successivo.

Installa il server Mosquitto

Per impostazione predefinita, il pacchetto Mosquitto non è disponibile nel repository predefinito di Ubuntu 22.04. Quindi dovrai aggiungere il repository ufficiale di Mosquitto all’APT. Puoi aggiungerlo con il seguente comando:

add-apt-repository ppa:mosquitto-dev/mosquitto-ppa -y

Una volta aggiunto il repository all’APT, puoi installarlo con il seguente comando:

apt install mosquitto mosquitto-clients -y

Una volta completata l’installazione, puoi verificare lo stato di Mosquitto con il seguente comando:

systemctl status mosquitto

Dovresti vedere il seguente output:

? mosquitto.service - Mosquitto MQTT Broker
     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-12-06 04:50:33 UTC; 8s ago
       Docs: man:mosquitto.conf(5)
             man:mosquitto(8)
    Process: 5491 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS)
    Process: 5492 ExecStartPre=/bin/chown mosquitto:mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS)
    Process: 5493 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS)
    Process: 5494 ExecStartPre=/bin/chown mosquitto:mosquitto /run/mosquitto (code=exited, status=0/SUCCESS)
   Main PID: 5495 (mosquitto)
      Tasks: 1 (limit: 2242)
     Memory: 1.3M
        CPU: 23ms
     CGroup: /system.slice/mosquitto.service
             ??5495 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Dec 06 04:50:32 ubuntu2204 systemd[1]: Starting Mosquitto MQTT Broker...
Dec 06 04:50:33 ubuntu2204 systemd[1]: Started Mosquitto MQTT Broker.

Crea una password amministrativa MQTT

Per motivi di sicurezza, è consigliato configurare l’autenticazione con password per MQTT.

Impostiamo un utente admin e una password con il seguente comando:

mosquitto_passwd -c /etc/mosquitto/passwd hitesh

Imposta una password come mostrato di seguito:

Password: 
Reenter password: 

Successivamente, modifica il file di configurazione MQTT e definisci la porta e il file delle password.

nano /etc/mosquitto/conf.d/default.conf

Aggiungi le seguenti righe:

listener 1883
password_file /etc/mosquitto/passwd

Salva e chiudi il file, quindi riavvia il servizio Mosquitto per applicare le modifiche.

systemctl restart mosquitto

Come utilizzare MQTT per inviare e ricevere messaggi

Dovrai utilizzare il client Mosquitto per connetterti al server Mosquitto e poi inviare e ricevere messaggi su diversi argomenti.

Prima di inviare e ricevere messaggi, dovrai iscriverti a un argomento. Puoi utilizzare uno dei seguenti argomenti nelle applicazioni di automazione domestica.

  • home/lights/sitting_room
  • home/lights/kitchen
  • home/lights/master_bedroom
  • home/lights/kids_bedroom

Eseguiamo il seguente comando per iscriverci all’argomento home/lights/kids_bedroom.

mosquitto_sub -u hitesh -P password -t "home/lights/kids_bedroom"

Successivamente, apri una nuova interfaccia terminale e pubblica un messaggio sull’argomento home/lights/kids_bedroom con il seguente comando.

mosquitto_pub -u hitesh -P password -m "ON" -t "home/lights/kids_bedroom"

Nel primo terminale, riceverai il payload ON:

ON

Ora, vai al secondo terminale e invia il messaggio OFF sullo stesso argomento.

mosquitto_pub -u hitesh -P password -m "OFF" -t "home/lights/kids_bedroom"

Dovresti vedere il seguente messaggio nel primo terminale:

ON
OFF

Una volta terminato, puoi procedere al passaggio successivo.

Sicurezza di Mosquitto con SSL Let’s Encrypt

Per proteggere Mosquitto con SSL, dovrai installare il pacchetto client Certbot sul tuo server.

Prima, installa il gestore di pacchetti Snap utilizzando il seguente comando:

apt install snapd

Successivamente, aggiorna il pacchetto Snap utilizzando il seguente comando:

snap install core   
snap refresh core

Successivamente, installa il pacchetto Certbot con il seguente comando:

snap install --classic certbot

Successivamente, crea un collegamento simbolico del binario Certbot nella posizione di sistema.

ln -s /snap/bin/certbot /usr/bin/certbot

Successivamente, esegui il seguente comando per generare un certificato SSL.

certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d mosquitto.linuxbuz.com

Dovresti vedere il seguente output:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for mosquitto.linuxbuz.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mosquitto.linuxbuz.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/mosquitto.linuxbuz.com/privkey.pem
This certificate expires on 2023-03-06.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Puoi vedere tutti i file di certificato generati utilizzando il seguente comando:

ls /etc/letsencrypt/live/mosquitto.linuxbuz.com/

Riceverai il seguente output:

cert.pem  chain.pem  fullchain.pem  privkey.pem  README

Successivamente, genera un certificato Diffie-Hellman utilizzando il seguente comando:

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Una volta terminato, puoi procedere al passaggio successivo.

Configura MQTT per utilizzare SSL Let’s Encrypt

Prima, copia tutti i certificati generati nella directory di Mosquitto utilizzando il seguente comando:

cp /etc/letsencrypt/live/mosquitto.linuxbuz.com/fullchain.pem /etc/mosquitto/certs/server.pem  
cp /etc/letsencrypt/live/mosquitto.linuxbuz.com/privkey.pem /etc/mosquitto/certs/server.key

Successivamente, imposta la corretta proprietà del certificato Mosquitto.

chown -R mosquitto: /etc/mosquitto/certs

Successivamente, modifica il file di configurazione di Mosquitto e definisci l’SSL di Let’s Encrypt.

nano /etc/mosquitto/conf.d/default.conf

Aggiungi le seguenti righe:

listener 8883
certfile /etc/mosquitto/certs/server.pem
cafile  /etc/ssl/certs/ISRG_Root_X1.pem
keyfile /etc/mosquitto/certs/server.key
dhparamfile /etc/ssl/certs/dhparam.pem

Salva e chiudi il file, quindi riavvia il servizio Mosquitto per applicare le modifiche.

systemctl restart mosquitto

Successivamente, verifica la connessione di Mosquitto utilizzando il seguente comando:

mosquitto_pub -h mosquitto.linuxbuz.com -t "home/lights/kids_bedroom" -m "hello" -p 8883 --capath /etc/ssl/certs/ -u hitesh -P password

Una volta terminato, puoi procedere a testare la connessione di Mosquitto tramite il browser web.

Configura i Websockets di Mosquitto

Successivamente, dovrai configurare i Websockets per utilizzare il protocollo MQTT all’interno dei browser. Puoi abilitarlo modificando il file di configurazione predefinito di Mosquitto:

nano /etc/mosquitto/conf.d/default.conf

Aggiungi le seguenti righe:

listener 8083
protocol websockets
certfile /etc/mosquitto/certs/server.pem
cafile  /etc/ssl/certs/ISRG_Root_X1.pem
keyfile /etc/mosquitto/certs/server.key
dhparamfile /etc/ssl/certs/dhparam.pem

Salva e chiudi il file, quindi riavvia il servizio Mosquitto per applicare le modifiche.

systemctl restart mosquitto

Successivamente, apri la tua interfaccia terminale e esegui il seguente comando:

mosquitto_sub -u hitesh -P password -t "home/lights/kids_bedroom"

Ora, apri il tuo browser web e utilizza il client MQTT basato su browser per testare la funzionalità dei WebSockets. Dovresti vedere la seguente schermata:

Fornisci l’host del tuo server Mosquitto, la porta, il nome utente, la password e fai clic sul pulsante Connetti. Dovresti vedere la seguente schermata:

Ora, digita qualsiasi argomento, messaggio e poi fai clic sul pulsante Pubblica.

Successivamente, torna all’interfaccia terminale. Dovresti vedere il tuo messaggio pubblicato nel seguente output:

Hi

Conclusione

In questo post, abbiamo spiegato come installare il server Mosquitto e proteggerlo con SSL Let’s Encrypt su Ubuntu 22.04. Abbiamo anche testato Mosquitto tramite un client basato su browser. Sentiti libero di chiedermi se hai domande.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.