Установка сервера · 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 через клиент на основе браузера. Не стесняйтесь задавать мне вопросы, если у вас есть какие-либо вопросы.
Get new posts in your inbox
No spam. Unsubscribe anytime.