Создать акаунт
Ukraine Radio Link » Meshtastic » Устанка Mosquitto MQTT Broker на Ubuntu Server 20.04/22.04

Устанка Mosquitto MQTT Broker на Ubuntu Server 20.04/22.04

31 янв 2024, 17:23
Meshtastic
334
0
Устанка Mosquitto MQTT Broker на Ubuntu Server 20.04/22.04

Mosquitto — это брокер сообщений с открытым исходным кодом, который использует протокол телеметрии очереди сообщений (MQTT). MQTT работает на основе модели TCP/IP и является стандартной платформой обмена сообщениями для Интернета вещей (IoT).

Поскольку протокол MQQT чрезвычайно легкий, его небольшой объем кода позволяет создавать приложения для устройств с минимальными ресурсами, такими как короткое время автономной работы, ограниченная пропускная способность сети и ненадежное подключение к Интернету.

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

В этом руководстве вы установите и настроите приложение Mosquitto и узнаете, как управляемый событиями протокол MQQT работает с приложениями IoT.




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

Чтобы следовать этому руководству, вам необходимо:

Сервер Ubuntu 20.04 или 22.04.

Пользователь без полномочий root с sudo правами.


Устанавливаем сервер Mosquitto

Вы получите mosquitto пакет из репозитория программного обеспечения Ubuntu, выполнив следующие шаги.

Подключитесь по SSH к вашему серверу и обновите индекс информации о пакете.


Сначала делаем:

sudo apt update


1. Устанавливаем mosquitto пакет

sudo apt install -y mosquitto

Теперь пакет mosquitto должен загрузиться на ваш сервер. Подтвердите статус услуги mosquitto.

$ sudo systemctl status mosquitto

Убедитесь, что пакет имеет loaded формат и active.

 ● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker

      Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor pr>

      Active: active (running) since Fri 2021-10-08 06:29:25 UTC; 12s ago

        Docs: man:mosquitto.conf(5)

              man:mosquitto(8)


 ...


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

Остановить mosquitto службу:

sudo systemctl stop mosquitto

Запустите mosquitto службу:

sudo systemctl start mosquitto

Перезапустите mosquitto службу:

sudo systemctl restart mosquitto


2. Устанавливаем клиент и тестируем Mosquitto

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


Пакет Mosquitto поставляется с клиентом командной строки, который позволяет тестировать функции сервера. Установите клиент.

sudo apt install -y mosquitto-clients


Далее вы подписываетесь на тему. В протоколе MQQT тема — это строка, которую сервер/брокер использует для фильтрации сообщений для подключенных клиентов. Например, вот несколько примеров тем, которые вы можете использовать при использовании брокера Mosquitto в приложении домашней автоматизации.

дом/свет/гостиная_комната

дом/свет/кухня

дом/свет/master_bedroom

дом/свет/детская_спальня


Чтобы подписаться на тему, выполните mosquitto_sub -tкоманду, за которой следует название темы, на которую вы хотите подписаться. Например, чтобы подписаться на home/lights/sitting_roomтему, выполните.

mosquitto_sub -t "home/lights/sitting_room"

Обратите внимание, что приведенная выше команда имеет функцию блокировки и переводит ваш терминал оболочки в состояние прослушивания.


Откройте второе окно терминала и не закрывайте первое. На этот раз опубликуйте сообщение «ON» в теме темы home/lights/sitting_roomс помощью mosquitto_pub -mкоманды.

mosquitto_pub -m "ON" -t "home/lights/sitting_room"

Теперь вы должны получить ON полезную нагрузку в первом окне.

ON


Затем опубликуйте OFFсообщение на ту же home/lights/sitting_roomтему на втором терминале.

mosquitto_pub -m "OFF" -t "home/lights/sitting_room"


Ваш брокер также должен отобразить новое сообщение.

ON

OFF


В этом руководстве вы вручную подписываетесь и публикуете сообщения, используя клиенты Mosquitto в демонстрационных целях. В реальных приложениях вам следует программировать небольшие микрочипы, поддерживающие уровень TCP/IP, такие, как ESP8266, чтобы передавать сообщение брокеру для управления или даже мониторинга устройств. Вот несколько распространенных случаев использования пакета Mosquitto в реальной жизни.


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

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


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

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

Другой распространенный сценарий, в котором сервер Mosquitto может хорошо подойти, — это разделенные системы. Клиенты могут отправлять данные брокеру, который затем отправляет данные в базу данных для постоянного хранения.

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


3. Защита сервера Mosquitto

По умолчанию сервер Mosquitto не защищен. Однако вы можете выполнить некоторые настройки конфигурации, чтобы защитить его с помощью имен пользователей и паролей.

Mosquitto считывает информацию о конфигурации из следующего места.

/etc/mosquitto/conf.d


Создайте default.conf в каталоге.

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


Вставьте информацию ниже, чтобы отключить anonymous соединения и позволить Mosquitto читать действительные учетные данные из /etc/mosquitto/passwd файла.

allow_anonymous false

password_file /etc/mosquitto/passwd

Сохраните и закройте файл.


Откройте /etc/mosquitto/passwdфайл с расширением nano.

sudo nano /etc/mosquitto/passwd


Затем заполните файл данными учетной записи пользователей, которых вы хотите подключить к серверу Mosquitto. Замените EXAMPLE_PASSWORDи EXAMPLE_PASSWORD_2сильными значениями.

john_doe:EXAMPLE_PASSWORD

mary_smith:EXAMPLE_PASSWORD_2

Сохраните и закройте файл.


Далее воспользуйтесь mosquitto_passwdутилитой для шифрования паролей.

sudo mosquitto_passwd -U /etc/mosquitto/passwd


Ваши пароли теперь зашифрованы в формате, который может расшифровать только сервер Mosquitto. Используйте команду Linux catдля подтверждения процесса шифрования.

sudo cat /etc/mosquitto/passwd


Выход.

john_doe:$6$TSzNycsj...5Qyvgd4g==

mary_smith:$6$DtlKf1lG.../rLHIL0Q==


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

sudo systemctl restart mosquitto


С этого момента вам следует выполнять любую команду pub/sub, используя приведенный ниже синтаксис. Не забудьте заменить john_doeи EXAMPLE_PASSWORDучетными данными, которые вы определили в файле паролей.

mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room"

mosquitto_pub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room" -m "ON"


Не аутентифицированные команды или соединения с неправильными учетными данными теперь должны завершаться неудачно.

mosquitto_pub -m "ON" -t "home/lights/sitting_room"

mosquitto_sub -t "home/lights/sitting_room"

mosquitto_sub -u john_doe -P WRONG_PASSWORD -t "home/lights/sitting_room"

mosquitto_pub -u john_doe -P WRONG_PASSWORD -t "home/lights/sitting_room" -m "ON"


Выход.

...

Connection error: Connection Refused: not authorised.


Заключение

В этом руководстве вы установили и настроили сервер Mosquitto на своем сервере Ubuntu 20.04. Вы также использовали интерфейс командной строки для подписки и публикации сообщений в примерной теме. Рассмотрите возможность использования сервера Mosquitto в следующий раз при развертывании приложения Интернета вещей.

Комментарии
Минимальная длина комментария - 50 знаков. комментарии модерируются
Кликните на изображение чтобы обновить код, если он неразборчив

Смотрите также: