Установка сервера · 5 min read · Oct 31, 2025

Как установить сервер Mosquitto MQTT на Ubuntu 22.04

Mosquitto — это бесплатная, открытая и легковесная реализация сервера протокола MQTT. Он предназначен для всех устройств, от маломощных одноплатных компьютеров до полноценных серверов. MQTT работает поверх протокола TCP/IP и использует вашу существующую домашнюю сеть для отправки сообщений вашим IoT-устройствам и ответа на эти сообщения. Он написан на языке C, что делает его быстрым и более эффективным, чем другие брокеры MQTT.

В этом посте мы покажем, как установить сервер Mosquitto на Ubuntu 22.04.

Предварительные требования

  • Сервер с установленной Ubuntu 22.04.
  • Пароль root, настроенный на вашем сервере.

Установка необходимых зависимостей

Перед началом рекомендуется обновить и улучшить все системные пакеты до обновленной версии. Вы можете обновить их, выполнив следующую команду:

apt update -y  
apt upgrade -y

После обновления всех пакетов выполните следующую команду для установки других необходимых пакетов:

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

После установки всех необходимых пакетов вы можете перейти к следующему шагу.

Установка сервера Mosquitto

По умолчанию пакет Mosquitto недоступен в стандартном репозитории Ubuntu 22.04. Поэтому вам нужно будет добавить официальный репозиторий Mosquitto в APT. Вы можете добавить его с помощью следующей команды:

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

После добавления репозитория в APT вы можете установить его с помощью следующей команды:

apt install mosquitto mosquitto-clients -y

После завершения установки вы можете проверить статус Mosquitto с помощью следующей команды:

systemctl status mosquitto

Вы должны увидеть следующий вывод:

? 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.

Создание административного пароля MQTT

По соображениям безопасности рекомендуется настроить аутентификацию паролем для MQTT.

Давайте создадим пользователя администратора и пароль с помощью следующей команды:

mosquitto_passwd -c /etc/mosquitto/passwd hitesh

Установите пароль, как показано ниже:

Password: 
Reenter password: 

Далее отредактируйте файл конфигурации MQTT и определите порт и файл паролей.

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

Добавьте следующие строки:

listener 1883
password_file /etc/mosquitto/passwd

Сохраните и закройте файл, затем перезапустите службу Mosquitto, чтобы применить изменения.

systemctl restart mosquitto

Как использовать MQTT для отправки и получения сообщений

Вам нужно будет использовать клиент Mosquitto для подключения к серверу Mosquitto, а затем отправлять и получать сообщения по различным темам.

Перед отправкой и получением сообщений вам нужно будет подписаться на тему. Вы можете использовать одну из следующих тем в приложениях для домашней автоматизации.

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

Давайте выполним следующую команду, чтобы подписаться на тему home/lights/kids_bedroom.

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

Далее откройте новый терминал и опубликуйте сообщение в тему home/lights/kids_bedroom с помощью следующей команды.

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

В первом терминале вы получите полезную нагрузку ON:

ON

Теперь перейдите ко второму терминалу и отправьте сообщение OFF по той же теме.

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

Вы должны увидеть следующее сообщение в первом терминале:

ON
OFF

Когда вы закончите, вы можете перейти к следующему шагу.

Защита Mosquitto с помощью SSL Let’s Encrypt

Чтобы защитить Mosquitto с помощью SSL, вам нужно будет установить пакет клиента Certbot на ваш сервер.

Сначала установите менеджер пакетов Snap с помощью следующей команды:

apt install snapd

Далее обновите пакет Snap с помощью следующей команды:

snap install core   
snap refresh core

Далее установите пакет Certbot с помощью следующей команды:

snap install --classic certbot

Далее создайте символическую ссылку на двоичный файл Certbot в системном каталоге.

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

Далее выполните следующую команду для генерации SSL-сертификата.

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

Вы должны увидеть следующий вывод:

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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Вы можете увидеть все сгенерированные файлы сертификатов, используя следующую команду:

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

Вы получите следующий вывод:

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

Далее сгенерируйте сертификат Диффи-Хеллмана с помощью следующей команды:

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

Когда вы закончите, вы можете перейти к следующему шагу.

Настройка MQTT для использования SSL Let’s Encrypt

Сначала скопируйте все сгенерированные сертификаты в каталог Mosquitto с помощью следующей команды:

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

Далее установите правильное владение сертификатом Mosquitto.

chown -R mosquitto: /etc/mosquitto/certs

Далее отредактируйте файл конфигурации Mosquitto и определите SSL Let’s Encrypt.

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

Добавьте следующие строки:

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

Сохраните и закройте файл, затем перезапустите службу Mosquitto, чтобы применить изменения.

systemctl restart mosquitto

Далее проверьте соединение Mosquitto с помощью следующей команды:

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

Когда вы закончите, вы можете протестировать соединение Mosquitto через веб-браузер.

Настройка Websockets для Mosquitto

Далее вам нужно будет настроить Websockets для использования протокола MQTT из браузеров. Вы можете включить его, отредактировав файл конфигурации по умолчанию Mosquitto:

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

Добавьте следующие строки:

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

Сохраните и закройте файл, затем перезапустите службу Mosquitto, чтобы применить изменения.

systemctl restart mosquitto

Далее откройте интерфейс терминала и выполните следующую команду:

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

Теперь откройте веб-браузер и используйте клиент MQTT на основе браузера, чтобы протестировать функциональность WebSockets. Вы должны увидеть следующий экран:

Укажите хост вашего сервера Mosquitto, порт, имя пользователя, пароль и нажмите кнопку Подключиться. Вы должны увидеть следующий экран:

Теперь введите любую тему, сообщение, затем нажмите кнопку Опубликовать.

Далее вернитесь в интерфейс терминала. Вы должны увидеть ваше опубликованное сообщение в следующем выводе:

Hi

Заключение

В этом посте мы объяснили, как установить сервер Mosquitto и защитить его с помощью SSL Let’s Encrypt на Ubuntu 22.04. Мы также протестировали Mosquitto через клиент на основе браузера. Не стесняйтесь задавать мне вопросы, если у вас есть какие-либо вопросы.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.