Установка MQTT-брокера

  • Михаил
  • 12 мин. на прочтение
  • 53
  • 10 Jan 2019
  • 11 Jan 2023

Одним из самых популярных MQTT брокеров является Mosquitto. Сегодня мы с вами разберемся, как поставить серверную и клиентскую часть, а также как проверить работу протокола MQTT. Данная инструкция отлично подходит для Raspberry Pi с установленной системой Raspbian и Orange Pi с системой Armbian.

Первым делом перед началом установки нам необходимо обновить систему. Подключаемся к нашему Pi по SSH и вводим:

sudo apt update && sudo apt upgrade -y

Установка брокера и клиента

Обычные библиотеки “apt-get” Raspberry Pi (Orange Pi) не содержат последнюю версию Mosquitto software. Поэтому перед установкой нам нужно будет обновить библиотеки. Если на сервере будет установлена не последняя версия брокера, то могут появляться ошибки в процессе работы.

Добавляем ключ и обновляем репозиторий. Вводим эти строчки по очереди. Иногда надо будет вводить пароль от вашего пользователя и нажимать Y для согласия с установкой.

sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
sudo apt-get update

Устанавливаем MQTT брокер сервер и клиент

sudo apt install mosquitto mosquitto-clients -y

После установки mosquitto сервер будет автоматически запускаться при загрузке системы.

Проверить статус вашего MQTT брокера вы всегда можете через терминал:

sudo /etc/init.d/mosquitto status

 

Проверка правильности установки сервера и клиента

Подключаемся к серверу с помощью ssh. Вводим логин и пароль от сервера. Затем вводим следующую команду подписки для проверки работы топика:

mosquitto_sub -h localhost -t test

В втором окне терминала вводим команду для публикации тестового сообщения в топик:

mosquitto_pub -h localhost -t test -m "Hello, world!"

Настройка

После установки сервер MQTT сразу запускается. Нам необходимо остановить его, чтобы произвести последующую настройку.

sudo /etc/init.d/mosquitto stop

Открываем файл настроек

sudo nano /etc/mosquitto/mosquitto.conf

и заменяем его содержимое на следующее:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest topic

log_type error
log_type warning
log_type notice
log_type information

connection_messages true
log_timestamp true

include_dir /etc/mosquitto/conf.d

Сохраняем, закрываем программу nano и выходим обратно в терминал (ctrl+o, Enter, ctrl+x).

Запускаем сервер MQTT

sudo /etc/init.d/mosquitto start

Безопасность

Для тестов и маленьких проектов вы можете использовать подключение к MQTT серверу без пароля, но в больших системах для повышения уровня безопасности необходимо добавить логин и пароль. Это делается достаточно просто.

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

sudo mosquitto_passwd -c /etc/mosquitto/passwd 

Вместо  необходимо указать имя пользователя, которому будет разрешен доступ, например, mqtusr. После выполнения этой команды юзер mqtusr будет добавлен в систему. Дальше необходимо будет ввести ваш пароль от юзера pi, а потом 2 раза пароль для доступа юзера mqtusr к mqtt брокеру. В качестве второго пароля не водите пароль от пользователи pi, лучше придумайте новый.

Теперь необходимо поменять настройки доступа к системе, для этого необходимо отредактировать файл /etc/mosquitto/conf.d/default.conf на вашем pi. Вы можете использовать для этого любой текстовый редактор, я предпочитаю nano, поэтому в консоли ввожу:

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

В открывшейся файл добавляем 2 строчки:

allow_anonymous false
password_file /etc/mosquitto/passwd

Сохраняем и закрываем файл. Для этого в nano нажимаем ctrl+x, выбираем Y и нажимает Enter. Как вы видите в этом конфиге мы прописали в каком файле хранятся юзеры и пароли для подключения к нашему MQTT брокеру, а также мы запретили подключение к серверу всем пользователям без логина и пароля.

Теперь необходимо перезапустить MQTT сервер, для этого вводим в консоли:

sudo systemctl restart mosquitto

Настройка закончена, безопасность вашей системы теперь на уровне.

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

mosquitto_pub -h localhost -t test -m "Hello, world!" -u "ruisantos" -P "YOUR_PASSWORD"
mosquitto_sub -h localhost -t test -u "ruisantos" -P "YOUR_PASSWORD"

Краткий список аргументов для брокера Mosquitto:

-hHostname
-tMQTT топик
-mMQTT сообщение
-uMQTT логин
-PMQTT пароль