Упрощённый сетевой протокол, работающий поверх TCP/IP, ориентированный на обмен сообщениями между устройствами по принципу «издатель — подписчик»
Примерная упрощенная схема обмена данными
Есть множество внешних платных MQTT, так же и ограниченных бесплатных MQTT, а так же их сравнения все ищется в интернете.
Я решил установить свой MQTT, сперва хотел поставить MajorDoMo - но тут нужна БД ищем вариант попроще.
Нашел под маршрутизатор Mosquitto.
Официальный сайт mosquitto
Я производил настройку по данной инструкции Поднимаем личный MQTT сервер на роутере Keenetic ниже она будет продублирована с моими изменениями что я сделал немного иначе.
Обсуждение темы на MQTT сервер ( mosquitto ) на Keenetic
Установку и настройку ОС мы уже разбирали тут Установка на Wi Fi маршрутизатор Keenetic сразу 2х ОС Entware и Debian поэтому пункт установки и настройки ОС пропустим.
# Обновим список пакетов
Код: Выделить всё
opkg update
Код: Выделить всё
opkg upgrade
ОСНОВНОЙ СПИСОК ПАКЕТОВ ДЛЯ MIPSEL
ДОПОЛНИТЕЛЬНЫЙ СПИСОК ПАКЕТОВ KEENETIC ДЛЯ MIPSEL
# Установка Mosquitto сервер
Код: Выделить всё
opkg install mosquitto-ssl
Код: Выделить всё
opkg install libmosquitto-ssl mosquitto-client-ssl
библиотека libs, необходимая для клиентских инструментов командной строки mosquitto,
а также для использования любым сторонним программным обеспечением, которое хочет взаимодействовать с любым сервером MQTT.
Должен быть пригоден для связи с любым сервером, совместимым с MQTT v3.1/3.1.1/5, в дополнение к Mosquitto. Этот пакет создан без поддержки SSL
libmosquitto-ssl
библиотека libs, необходимая для клиентских инструментов командной строки mosquitto,
а также для использования любым сторонним программным обеспечением, которое хочет взаимодействовать с любым сервером MQTT.
Должен быть пригоден для связи с любым сервером, совместимым с MQTT v3.1/3.1.1/5, в дополнение к Mosquitto. Этот пакет создан с поддержкой SSL
mosquitto-client-nossl
клиентские инструменты командной строки net для работы с mosquitto.
Это включает в себя mosquitto_sub, mosquitto_pub, mosquitto_rr и инструмент mosquitto_ctrl. Этот пакет создан без поддержки SSL
mosquitto-client-ssl
сетевые клиентские инструменты командной строки для работы с mosquitto.
Это включает в себя mosquitto_sub, mosquitto_pub, mosquitto_rr и инструмент mosquitto_ctrl. Этот пакет создан с поддержкой SSL
mosquitto-nossl
Mosquitto - это брокер сообщений с открытым исходным кодом (лицензированный BSD), который реализует протокол MQTT версий 3.1, 3.1.1 и 5.
MQTT предоставляет упрощенный метод обмена сообщениями с использованием модели публикации/подписки.
Этот пакет также включает в себя некоторую базовую поддержку для настройки через UCI. Этот пакет создан БЕЗ поддержки SSL.
mosquitto-ssl
Mosquitto - это брокер сообщений с открытым исходным кодом (лицензированный BSD), который реализует протокол MQTT версий 3.1, 3.1.1 и 5.
MQTT предоставляет упрощенный метод обмена сообщениями с использованием модели публикации/подписки.
Этот пакет также включает в себя некоторую базовую поддержку для настройки через UCI. Этот пакет создан с поддержкой SSL.
TLS-PSK будет включен (как в клиенте, так и в брокере), если OpenSSL построен с поддержкой TLS-PSK.
Код: Выделить всё
opkg install openssl-util
Код: Выделить всё
opkg install cron
После установки переходим к Настройке Mosquitto
Файл конфигурации mosquitto
Код: Выделить всё
/opt/etc/mosquitto/mosquitto.conf
Код: Выделить всё
cp /opt/etc/mosquitto/mosquitto.conf /opt/etc/mosquitto/mosquitto.default
Код: Выделить всё
# Конфигурационный файл для mosquitto
#
# Смотрите mosquitto.conf(5) для получения дополнительной информации.
#
# Показаны значения по умолчанию, раскомментируйте, чтобы изменить.
#
# Используйте символ # для обозначения комментария, но только в том случае, если это
# самый первый символ в строке.
# =================================================================
# Общая конфигурация
# =================================================================
# Используйте настройки безопасности для каждого прослушивателя.
#
# Рекомендуется устанавливать этот параметр перед любыми другими параметрами.
#
# Если для этого параметра установлено значение true, то вся аутентификация и контроль доступа
# параметры управляются индивидуально для каждого слушателя. Доступны следующие варианты
# затронутый:
#
# acl_file
# разрешить_анонимный
# allow_anonymous
# разрешить идентификатор клиента нулевой длины
# allow_zero_length_clientid
# авто_ид_префиксация
# auto_id_prefix
# пароль_файл
# password_file
# плагин
# plugin
# плагин_opt_*
# plugin_opt_*
# psk_file
#
# Обратите внимание, что если установлено значение true, то это надежный клиент (т.е. с установленным чистым сеансом
# к false), который отключился, будет использовать настройки ACL, определенные для
# слушатель, к которому он был подключен совсем недавно.
#
# Поведение по умолчанию заключается в том, что для этого параметра устанавливается значение false, что поддерживает
# настройка поведения из предыдущих версий mosquitto.
#per_listener_settings false
# Этот параметр определяет, разрешено ли клиенту подключаться с нулевым значением
# длина идентификатора клиента или нет. Этот параметр влияет только на клиентов, использующих MQTT версии 3.1.1
# и позже. Если установлено значение false, клиенты подключаются с идентификатором клиента нулевой длины
# разъединены. Если установлено значение true, клиентам будет присвоен идентификатор клиента с помощью
# брокер. Это означает, что он полезен только для клиентов с установленным чистым сеансом
# к истине/true.
#allow_zero_length_clientid true
# Если значение allow_zero_length_clientid равно true, этот параметр позволяет задать префикс
# к автоматически сгенерированным идентификаторам клиентов для улучшения видимости в журналах.
# По умолчанию установлено значение "авто-"/'auto-'
#auto_id_prefix auto-
# Этот параметр влияет на сценарий, когда клиент подписывается на тему, в которой есть
# сохраненные сообщения. Возможно, что клиент, опубликовавший сохраненный
# сообщение в теме имело доступ на момент публикации, но этот доступ
# впоследствии был удален. Если для параметра check_retain_source установлено значение true, то
# по умолчанию источник сохраненного сообщения будет проверен на наличие прав доступа
# до того, как оно будет переиздано. Если установлено значение false, проверка производиться не будет, и
# сохраненное сообщение всегда будет опубликовано. Это касается всех слушателей.
#check_retain_source true
# QoS 1 и 2 сообщения будут разрешены к отправке каждому клиенту до достижения этого предела
# превышено. Значение по умолчанию равно 0. (Без максимума)
# Смотрите также max_inflight_messages
#max_inflight_bytes 0
# Максимальное количество сообщений QoS 1 и 2, поступающих в данный момент на один рейс
# клиент.
# Сюда входят сообщения, которые являются частью процесса рукопожатий и
# те, которые повторяются. Значение по умолчанию равно 20. Установите значение 0 для отсутствия
# максимум. Установка значения 1 гарантирует доставку по заказу QoS 1
# и 2 сообщения.
#max_inflight_messages 20
# Для клиентов MQTT v5 возможно, чтобы сервер отправлял сообщение "сервер
# keepalive" значение, которое переопределит значение keepalive, установленное клиентом.
# Это предназначено для использования в качестве механизма, сообщающего, что сервер будет
# отключите клиент раньше, чем ожидалось, и что клиент должен
# используйте новое значение keepalive. Параметр max_keepalive позволяет вам указать
# что клиенты могут подключаться только к keepalive, значение которого меньше или равно этому
# значение, в противном случае им будет отправлено сообщение сервера keepalive с указанием использовать
# max_keepalive. Это относится только к клиентам MQTT v5. Значение по умолчанию и максимальное
# допустимое значение равно 65535.
#
# Установите значение 0, чтобы позволить клиентам устанавливать keepalive = 0, что означает отсутствие keepalive
# проверки произведены, и брокер никогда не отключит клиента, если нет
# сообщения получены. Вы должны быть абсолютно уверены, что это именно то поведение, которое вам нужно.
# хочу.
#
# Для клиентов MQTT v3.1.1 и v3.1 нет механизма, позволяющего сообщить клиенту
# какое значение keepalive они должны использовать. Если клиент MQTT версии 3.1.1 или v3.1
# указывает время сохранения, большее, чем max_keepalive, им будет отправлено сообщение
# Сообщение CONNACK с кодом причины "идентификатор отклонен"/"identifier rejected" и отключено.
#
#max_keepalive 65535
# Для клиентов MQTT v5 возможно, чтобы сервер отправлял "максимальный пакет
# размер" значение, которое сообщит клиенту, что он не будет принимать пакеты MQTT
# с размером, превышающим байт max_packet_size. Это относится к полному MQTT
# пакет, а не только полезная нагрузка. Установка для этого параметра положительного значения приведет к
# установите максимальный размер пакета равным этому количеству байт. Если клиент отправляет
# пакет, размер которого превышает это значение, будет отключен. Это применимо
# для всех клиентов, независимо от версии протокола, которую они используют, но v3.1.1
# и более ранние клиенты, конечно, не получили максимальный размер пакета
# информация. Значение по умолчанию - без ограничений. Установка значения ниже 20 байт запрещена
# потому что это, вероятно, будет мешать обычной работе клиента, даже при
# очень маленькая полезная нагрузка.
#max_packet_size 0
# QoS 1 и 2 сообщения, превышающие те, которые в данный момент находятся в полете, будут помещены в очередь за
# клиент до тех пор, пока этот лимит не будет превышен. Значение по умолчанию равно 0. (Без максимума)
# Смотрите также max_queued_messages.
# Если указаны как max_queued_messages, так и max_queued_bytes, пакеты будут
# находиться в очереди до тех пор, пока не будет достигнут первый лимит.
#max_queued_bytes 0
# Установите максимальное поддерживаемое качество обслуживания. Клиенты публикуют с качеством обслуживания выше, чем указанный здесь
# будет отключен.
#max_qos 2
# Максимальное количество сообщений QoS 1 и 2, которые должны храниться в очереди для каждого клиента
# выше тех, которые в данный момент находятся в полете. Значение по умолчанию равно 1000. Набор
# до 0 без указания максимального значения (не рекомендуется).
# Смотрите также queue_qos0_messages.
# Смотрите также max_queued_bytes.
#max_queued_messages 1000
#
# Этот параметр устанавливает максимальное количество байт памяти кучи, которое брокер будет использовать
# allocate и, следовательно, устанавливает жесткое ограничение на использование памяти брокером. Память
# запросы, превышающие это значение, будут отклонены. Эффект будет разным
# в зависимости от того, в чем было отказано. Если обрабатывается входящее сообщение,
# тогда сообщение будет удалено, а клиент публикации будет
# отключен. Если отправляется исходящее сообщение, то пользователь
# сообщение будет удалено, а принимающий клиент будет отключен.
# По умолчанию не имеет ограничений.
#memory_limit 0
# Этот параметр устанавливает максимальный размер полезной нагрузки для публикации, который разрешит брокер.
# Полученные сообщения, размер которых превышает этот размер, брокер принимать не будет.
# Значение по умолчанию равно 0, что означает, что все допустимые сообщения MQTT являются
# принято. MQTT устанавливает максимальный размер полезной нагрузки в 268435455 байт.
#message_size_limit 0
# Эта опция разрешает сеанс постоянных клиентов (тех, у кого чистый
# сеанс установлен в значение false), которые в данный момент не подключены, должны быть удалены, если они
# не подключайтесь повторно в течение определенного периода времени. Это нестандартный вариант
# в MQTT версии 3.1. MQTT версии 3.1.1 и v5.0 позволяют брокерам удалять клиентские сессии.
#
# Плохо спроектированные клиенты могут установить значение clean session равным false при использовании случайного
# сгенерированный идентификатор клиента. Это приводит к появлению постоянных клиентов, которые подключаются один раз и
# никогда не подключайтесь повторно. Этот параметр позволяет удалить эти клиенты. Этот вариант
# позволяет постоянным клиентам (тем, у кого для чистого сеанса установлено значение false) быть
# удаляется, если они не подключаются повторно в течение определенного периода времени.
#
# Период истечения срока действия должен быть целым числом, за которым следует одно из значений h d w m y для
# час, день, неделя, месяц и год соответственно. Например
#
# persistent_client_expiration 2m
# persistent_client_expiration 14d
# persistent_client_expiration 1y
#
# Значение по умолчанию, если оно не задано, - никогда не истекать для постоянных клиентов.
#persistent_client_expiration
# Запишите идентификатор процесса в файл. По умолчанию используется пустая строка, которая означает
# pid-файл не должен быть записан.
# Это должно быть установлено в /var/run/mosquitto/mosquitto.pid, если mosquitto является
# запускается автоматически при загрузке с помощью сценария инициализации и
# start-stop-daemon или что-то подобное.
#pid_file
# Установите значение true для постановки сообщений в очередь с QoS 0, когда постоянный клиент находится
#queue_qos0_messages false
# Установите значение false, чтобы отключить поддержку сохраненных сообщений. Если клиент публикует
# сообщение с установленным битом сохранения, оно будет отключено, если установлено значение
# ложь/false.
#retain_available true
# Отключите алгоритм Нэгла Nagle's для клиентских сокетов. Это приводит к уменьшению
# задержка отдельных сообщений за счет потенциальной стоимости увеличения количества
# количество отправляемых пакетов.
#set_tcp_nodelay false
# Время в секундах между обновлениями дерева $SYS.
# Установите значение 0, чтобы отключить публикацию дерева $SYS.
#sys_interval 10
# Спецификация MQTT требует, чтобы QoS сообщения, доставленного в
# подписчик никогда не обновляется в соответствии с QoS подписки. Позволяющий
# этот параметр изменяет это поведение. Если для upgrade_outgoing_qos установлено значение true,
# сообщения, отправляемые подписчику, всегда будут соответствовать QoS его подписки.
# Это нестандартный параметр, явно запрещенный спецификацией.
#upgrade_outgoing_qos false
# При запуске от имени root сбросьте привилегии этому пользователю и его основному
# группа.
# Установите значение root, чтобы оставаться в качестве root, но это не рекомендуется.
# Если установлено значение "mosquitto" или не установлено, и пользователь "mosquitto" не существует
# тогда вместо этого он сбросит привилегии пользователю "никто"/"nobody".
# Если вы запускаетесь от имени пользователя без прав root, этот параметр не действует.
# Обратите внимание, что в Windows это не имеет никакого эффекта, и поэтому mosquitto следует запускать с помощью
# пользователь, от имени которого вы хотите, чтобы он запускался.
#user mosquitto
# =================================================================
# Слушатели/Listeners
# =================================================================
# Прослушивание комбинации порта и ip-адреса. Используя эту переменную
# несколько раз mosquitto может прослушивать более чем один порт. Если
# используется эта переменная и не заданы ни bind_address, ни порт,
# то прослушиватель по умолчанию запущен не будет.
# Должен быть указан номер порта для прослушивания. Опционально, ip-адрес
# адрес или имя хоста могут быть указаны в качестве второго аргумента. В
# этом случае mosquitto попытается привязать слушателя к этому
# адрес и, таким образом, ограничить доступ к соответствующей сети и
# интерфейс. По умолчанию mosquitto будет прослушивать все интерфейсы.
# Обратите внимание, что для прослушивателя websockets невозможно привязаться к хосту
# имя.
#
# В системах, поддерживающих доменные сокеты Unix, это также возможно
# для создания сокета # Unix вместо открытия сокета TCP. В
# этом случае номер порта должен быть равен 0, а сокет unix
# должен быть указан путь, например
# listener 0 /tmp/mosquitto.sock
#
# номер порта прослушивателя [ip-адрес/имя хоста/путь к сокету unix]
# listener port-number [ip address/host name/unix socket path]
#listener
# По умолчанию прослушиватель попытается прослушать все поддерживаемые IP-протоколы
# версии. Если у вас нет интерфейса IPv4 или IPv6, вы можете захотеть
# отключите поддержку любой из этих версий протокола. В частности, обратите внимание
# что из-за ограничений библиотеки websockets это будет только когда-либо
# попытка открыть сокеты IPv6, если поддержка IPv6 скомпилирована в, и поэтому завершится неудачей
# если IPv6 недоступен.
#
# Установите значение "ipv4", чтобы заставить прослушиватель использовать только IPv4, или установите значение "ipv6", чтобы
# заставьте прослушиватель использовать только IPv6. Если вам нужна поддержка как IPv4, так и
# IPv6, тогда не используйте параметр socket_domain.
#
#socket_domain
# Привязать прослушиватель к определенному интерфейсу. Это похоже на
# часть определения прослушивателя [ip-адрес/имя хоста], но она полезна
# когда интерфейс имеет несколько адресов или адрес может измениться. Если используется
# с частью определения прослушивателя [ip-адрес/имя хоста], затем параметр
# bind_interface будет иметь приоритет.
# Недоступно в Windows.
#
# Пример: bind_interface eth0
#bind_interface
# Когда прослушиватель использует протокол websockets, можно обслуживать
# http-данные также. Установите http_dir в каталог, содержащий файлы, которые вы
# желаю работать. Если этот параметр не указан, то обычного http не будет
# соединения будут возможны.
#http_dir
# Максимальное количество разрешенных клиентских подключений. Это
# настройка для каждого слушателя.
# Значение по умолчанию равно -1, что означает неограниченное количество подключений.
# Обратите внимание, что другие ограничения процесса означают, что неограниченное количество подключений
# на самом деле это невозможно. Обычно максимальное количество по умолчанию
# количество возможных подключений составляет около 1024.
#max_connections -1
# Слушатель может быть ограничен работой в рамках иерархии тем, используя
# параметр mount_point. Это достигается путем добавления префикса к строке mount_point
# ко всем темам для любых клиентов, подключенных к этому прослушивателю. Только этот префикс
# происходит внутри брокера; клиент не увидит префикс.
#mount_point
# Выберите протокол, который будет использоваться при прослушивании.
# Это может быть либо mqtt, либо websockets.
# TLS на основе сертификатов может использоваться с websockets, за исключением того, что только
поддерживаются параметры # cafile, certfile, keyfile, ciphers и ciphers_tls13.
#protocol mqtt
# Установите use_username_as_clientid в значение true, чтобы заменить clientid, который клиент
# подключен к со своим именем пользователя. Это позволяет привязать аутентификацию к
# идентификатор клиента, который означает, что можно предотвратить доступ одного клиента
# отключение другого пользователя с использованием того же идентификатора клиента.
# Если клиент подключается без имени пользователя, он будет отключен как не
# авторизован, если для этой опции установлено значение true.
# Не использовать в сочетании с clientid_prefixes.
# Смотрите также use_identity_as_username.
# Это применимо не глобально, а для каждого слушателя.
#use_username_as_clientid
# Измените размер заголовков websockets. Это глобальный вариант, он не является
# возможно установить для каждого слушателя. Этот параметр устанавливает размер буфера, используемого в
# библиотека libwebsockets при чтении HTTP-заголовков. Если вы проезжаете мимо большого
# данные заголовка, такие как файлы cookie, тогда вам, возможно, потребуется увеличить это значение. Если оставить
# отменено или установлено значение 0, тогда будет использоваться значение по умолчанию 1024 байта.
#websockets_headers_size
# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе сертификатов
# -----------------------------------------------------------------
# Следующие параметры можно использовать для включения поддержки SSL/TLS на основе сертификатов
# для этого слушателя. Обратите внимание, что рекомендуемый порт для MQTT через TLS - 8883,
# но его необходимо установить вручную.
#
# Смотрите также справочную страницу mosquitto-tls и "SSL/TLS на основе предварительного общего ключа раздел "
# поддержка". Может использоваться только один из сертификатов или поддержка шифрования PSK
# включено для любого прослушивателя.
# Для включения функции на основе сертификата должны быть определены как файл сертификата, так и файл ключа
# TLS-шифрование.
# Путь к серверному сертификату с кодировкой PEM.
#файл сертификата
#certfile
# Путь к файлу ключа в кодировке PEM.
#keyfile
# Если вы хотите контролировать, какие шифры шифрования используются, используйте следующие шифры
# вариант. Список доступных шифров можно получить с помощью команды "openssl ciphers"
# и должна быть представлена в том же формате, что и выходные данные
# эта команда. Это относится только к TLS 1.2 и более ранним версиям. Воспользуйся
# шифры_tls1.3 / ciphers_tls1.3 для TLS версии 1.3.
#ciphers
# Выберите, какие наборы шифров TLS версии 1.3 используются для этого прослушивателя.
# По умолчанию используется значение "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
#ciphers_tls1.3
# Если для параметра require_certificate установлено значение true, вы можете создать сертификат
# файл списка отзывов для отзыва доступа к определенным клиентским сертификатам. Если
# вы сделали это, используйте crlfile, чтобы указать на файл отзыва в кодировке PEM.
#crlfile
# Разрешить использование эфемерного /ephemeral DH обмена ключами DH, который обеспечивает прямую
# безопасность, прослушиватель должен загрузить параметры DH. Это может быть указано с помощью
# параметр dhparamfile. Файл dhparam может быть сгенерирован с помощью команды
#, например, "openssl dhparam -out dhparam.pem 2048".
#dhparamfile
# По умолчанию прослушиватель с поддержкой TLS будет работать аналогично
# веб-сервер с поддержкой https, поскольку сервер имеет сертификат, подписанный центром сертификации
# и клиент подтвердит, что это доверенный сертификат. Общая цель
# - это шифрование сетевого трафика. Установив значение require_certificate равным true,
# клиент должен предоставить действительный сертификат для подключения к сети
# подключение необходимо продолжить. Это позволяет контролировать доступ к брокеру
# вне механизмов, предоставляемых MQTT.
#require_certificate false
# cafile и capath определяют методы доступа к закодированному PEM
# Сертификаты центра сертификации, которые будут считаться доверенными, когда
# проверка входящих клиентских сертификатов.
# cafile определяет путь к файлу, содержащему сертификаты центра сертификации.
# capath определяет каталог, в котором будет осуществляться поиск файлов
# содержащий сертификаты центра сертификации. Чтобы capath работал корректно, необходимо
# файлы сертификатов должны заканчиваться на ".crt", и вы должны запустить
# "openssl перефразирует <путь к capath>" каждый раз, когда вы добавляете/удаляете сертификат.
#cafile
#capath
# Если require_certificate имеет значение true, вы можете установить значение use_identity_as_username равным true
# использовать значение CN из клиентского сертификата в качестве имени пользователя. Если это
# true, параметр password_file не будет использоваться для этого прослушивателя.
#use_identity_as_username false
# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе предварительного общего ключа
# -----------------------------------------------------------------
# Следующие параметры можно использовать для включения поддержки SSL/TLS на основе PSK для
# этот слушатель. Обратите внимание, что рекомендуемый порт для MQTT через TLS - 8883, но
# это должно быть установлено вручную.
#
# Смотрите также справочную страницу mosquitto-tls и "SSL/TLS на основе сертификатов раздел"
# поддержка". Может использоваться только один из сертификатов или поддержка шифрования PSK
# включено для любого прослушивателя / enabled for any listener.
# Опция psk_hint включает поддержку предварительного общего ключа для этого прослушивателя, а также
# действует как идентификатор для этого прослушивателя. Подсказка отправляется клиентам и может
# будет использоваться локально для облегчения аутентификации. Подсказка представляет собой строку произвольной формы, которая
# само по себе не имеет большого значения, так что не стесняйтесь проявлять творческий подход.
# Если эта опция предусмотрена, смотрите psk_file, чтобы определить предварительно разделяемые ключи, которые должны быть
# использовал или создал плагин безопасности для их обработки.
#psk_hint
# При использовании PSK используемые шифры шифрования будут выбраны из списка
# доступные PSK-шифры. Если вы хотите контролировать, какие шифры доступны,
# используйте опцию "шифры/ciphers". Список доступных шифров может быть расширен
# используется команда "openssl ciphers" и должна быть предоставлена в том же формате
# в качестве выходных данных этой команды.
#ciphers
# Установите use_identity_as_username, чтобы использовать psk-идентификатор, отправленный клиентом
# в качестве его имени пользователя. Аутентификация будет осуществляться с использованием PSK, а не
# имя пользователя/пароль MQTT и so password_file не будут использоваться для этого
# слушатель.
#use_identity_as_username false
# =================================================================
# Устойчивость / Persistence
# =================================================================
# Если сохраняемость включена, сохраните базу данных в памяти на диск
# каждые секунды автосохранения_интервала. Если установлено значение 0, то постоянство
# база данных будет записана только при выходе из mosquitto. Смотрите также
# автосохранение_на_изменениях.
# autosave_on_changes
# Обратите внимание, что запись постоянной базы данных может быть принудительной с помощью
# отправка mosquitto сигнала SIGUSR1.
#autosave_interval 1800
# Если значение true, mosquitto подсчитает количество сохраненных изменений в подписке
# полученные сообщения и сообщения в очереди, и если общее количество превышает
# autosave_interval, после чего база данных, хранящаяся в памяти, будет сохранена на диск.
# Если значение равно false, mosquitto сохранит базу данных в памяти на диск, обработав
# автосохранение_интервала в виде времени в секундах.
#autosave_on_changes false
# Сохранить данные постоянного сообщения на диск (true/false).
# При этом сохраняется информация обо всех сообщениях, включая
# подписки, текущие сообщения в полете и сохраненные
# сообщения.
# retained_persistence является синонимом этого параметра.
#persistence false
# Имя файла, которое будет использоваться для постоянной базы данных, не включая
# путь.
#persistence_file mosquitto.db
# Местоположение постоянной базы данных.
# По умолчанию - пустая строка (текущий каталог).
# Установите, например, значение /var/lib/mosquitto, если он запущен как надлежащая служба в Linux или схожий.
#persistence_location
# =================================================================
# Регистрация
# =================================================================
# Места для входа в систему. Используйте несколько строк log_dest для нескольких
# регистрация пунктов назначения.
# Возможные пункты назначения: стандартный вывод stderr файл темы системного журнала dlt
#
# stdout и stderr регистрируются в консоли на именованном выходе.
#
# syslog использует средство системного журнала пользовательского пространства, которое обычно заканчивается
# в /var/log/messages или подобном.
#
# тема регистрируется в теме брокера '$SYS/broker/log/<серьезность>',
# где серьезность - это одно из значений D, E, W, N, I, M, которые являются отладочными, ошибка,
# предупреждение, извещение, информация и сообщение. Серьезность типа сообщения используется
# лог_типы подписки/отказа от подписки и публикует сообщения журнала для
# $SYS/broker/log/M/susbcribe или $SYS/broker/log/M/отказаться от подписки.
# $SYS/broker/log/M/susbcribe or $SYS/broker/log/M/unsubscribe
#
# Для назначения файла требуется дополнительный параметр, который является файлом, подлежащим удалению.
# вошел в систему, например, "log_dest file /var/log/mosquitto.log". Файл будет
# закрывается и вновь открывается, когда брокер получает сигнал HUP. Только один файл
# пункт назначения может быть настроен.
#
# Назначение dlt предназначено для автомобильного инструмента `Журнал диагностики и трассировка`.
# Для этого требуется, чтобы Mosquitto был скомпилирован с поддержкой DLT.
#
# Обратите внимание, что если брокер запущен как служба Windows, то по умолчанию он будет
# "log_dest none" и ведение журнала stdout или stderr недоступно.
# Используйте "log_dest none", если вы хотите отключить ведение журнала.
#log_dest stderr
# Типы сообщений для регистрации. Используйте несколько строк log_type для ведения журнала
# несколько типов сообщений.
# Возможными типами являются: debug, error, warning, notice, information,
# none, subscribe, unsubscribe, websockets, all.
# Обратите внимание, что сообщения типа debug предназначены для декодирования входящих/исходящих incoming/outgoing
# сетевые пакеты. Они не зарегистрированы в разделе "Темы"/topic.
#log_type error
#log_type warning
#log_type notice
#log_type information
# Если установлено значение true, будут включены сообщения о подключении и разъединении клиента
# в журнале логе.
#connection_messages true
# При использовании ведения системного журнала (не в Windows) сообщения будут записываться в
# средство "демон" по умолчанию. Используйте параметр log_facility, чтобы выбрать, какой из
# от local0 до local7 для входа в систему вместо этого. Значение параметра должно быть целым числом
# значение, например "log_facility 5" для использования local 5.
#log_facility
# Если установлено значение true, добавьте значение временной метки к каждому сообщению журнала.
#log_timestamp true
# Установите формат временной метки журнала. Если значение не задано, то это количество
# секунды, прошедшие с эпохи Unix.
# Это произвольная текстовая строка, которая будет передана функции strftime. Чтобы
# получить дату и время ISO 8601, например:
# log_timestamp_format %Y-%m-%dT%H:%M:%S
#log_timestamp_format
# Измените уровень ведения журнала websockets. Это глобальный вариант, он не является
# возможно установить для каждого слушателя. Это целое число, которое интерпретируется с помощью
# libwebsockets в качестве битовой маски для своего перечисления lws_log_levels. Увидеть документация
# libwebsockets для получения более подробной информации. "log_type websockets" также должен содержать
# быть включенным.
#websockets_log_level 0
# =================================================================
# Безопасность
# =================================================================
# Если задано, только клиенты, у которых есть соответствующий префикс в их
# clientid будет разрешено подключиться к брокеру. По умолчанию,
# все клиенты могут подключаться.
# Например, установка "secure-" здесь будет означать, что клиент "защищен-
# клиент" / "secure-client" смог подключиться, но другой с идентификатором клиента "mqtt" не смог.
#clientid_prefixes
# Логическое значение, определяющее, подключаются ли клиенты, которые
# подключение разрешено без указания имени пользователя. Если установлено значение
# false, затем должен быть создан файл паролей (см.
# параметр password_file) для управления аутентифицированным клиентским доступом.
#
# По умолчанию имеет значение false, если только в конфигурации не определены прослушиватели
# файл, в этом случае ему присваивается значение true, но подключения разрешены только из
# локальный компьютер.
#allow_anonymous false
# -----------------------------------------------------------------
# Проверка подлинности по умолчанию и контроль доступа к разделам
# -----------------------------------------------------------------
# Контролируйте доступ к брокеру с помощью файла паролей. Этот файл может быть
# сгенерирован с помощью утилиты mosquitto_passwd. Если поддержка TLS не скомпилирована
# в mosquitto (рекомендуется включить поддержку TLS), затем
# используются обычные текстовые пароли, и в этом случае файл должен быть текстовым
# со строками в формате:
# имя пользователя:пароль
# Пароль (и двоеточие) при желании можно опустить, хотя это
# предлагает очень мало с точки зрения безопасности.
#
# Смотрите параметры TLS-клиента require_certificate и use_identity_as_username
# для альтернативных вариантов аутентификации. Если используется плагин, а также
# password_file, сначала будет произведена проверка плагина.
#password_file
# Доступом также можно управлять с помощью файла предварительного общего ключа. Для этого требуется Поддержка
# TLS-PSK и прослушиватель, настроенный для ее использования. Файл должен быть текстовым
# строки в формате:
# идентификация:ключ
# Ключ должен быть в шестнадцатеричном формате без начального "0x".
# Если также используется плагин, то сначала будет произведена проверка плагина.
#psk_file
# Контролируйте доступ к разделам в брокере, используя список контроля доступа
# файл. Если этот параметр определен, то будут доступны только перечисленные темы
# иметь доступ.
# Если первым символом строки файла ACL является #, он обрабатывается как
# комментарий.
# Доступ к теме добавляется строками формата:
#
# тема [чтение|запись|чтение-запись|запретить] <тема>
# topic [read|write|readwrite|deny] <topic>
#
# Тип доступа контролируется с помощью "чтение", "запись", "чтение-запись" или "запретить" "read", "write", "readwrite" or "deny".
# Этот параметр необязателен (если только <topic> не содержит пробел) -
# если не задан, то доступ осуществляется для чтения/записи read/write. <topic> может содержать знак + или #
# подстановочные знаки, как в подписках.
#
# Опция "запретить"/"deny" может использоваться для явного запрета доступа к теме, которая могла бы
# в противном случае будет предоставлено более широким оператором чтения/записи/чтение-запись read/write/readwrite. Любое "запретить" "deny"
# темы обрабатываются перед темами, которые предоставляют доступ для чтения/записи.
#
# Первый набор тем применяется к анонимным клиентам, предполагая
# allow_anonymous имеет значение true. Списки управления доступом к конкретным темам пользователя добавляются после
# строка пользователя выглядит следующим образом:
#
# user <username>
#
# Имя пользователя, указанное здесь, такое же, как и в password_file. Это
# не идентификатор клиента.
#
#
# If также возможно определить списки управления доступом на основе подстановки шаблона внутри
# тема. Шаблоны, доступные для замены, следующие:
#
# %c чтобы соответствовать идентификатору клиента клиента
# %c to match the client id of the client
# %u, чтобы совпадать с именем пользователя клиента
# %u to match the username of the client
#
# Шаблон подстановки должен быть единственным текстом для этого уровня иерархии.
#
# Форма такая же, как для ключевого слова topic, но в качестве шаблона используется
# ключевое слово.
# Шаблонные списки контроля доступа применяются ко всем пользователям, даже если ключевое слово "пользователь"/"user" ранее использовалось
# было дано.
#
# При использовании мостов с именами пользователей и списками контроля доступа сообщения о подключении могут быть разрешены
# со следующим шаблоном:
# шаблон записи $SYS/broker/connection/%c/state
# pattern write $SYS/broker/connection/%c/state
#
# шаблон [чтение|запись|чтение-запись] <тема>
# pattern [read|write|readwrite] <topic>
#
# Пример:
#
# датчик записи шаблона/%u/данные
# pattern write sensor/%u/data
#
# Если используется плагин, а также acl_file, проверка плагина будет
# сделано первым.
# If an plugin is used as well as acl_file, the plugin check will be
# made first.
#acl_file
# -----------------------------------------------------------------
# Параметры плагина внешней аутентификации и доступа к теме
# -----------------------------------------------------------------
# Внешняя аутентификация и контроль доступа могут поддерживаться с помощью
# опция плагина. Это путь к загружаемому плагину. Смотрите также
# plugin_opt_* параметры, описанные ниже.
#
# Параметр плагина можно указать несколько раз для загрузки нескольких
# плагины. Плагины будут обработаны в том порядке, в котором они указаны
# здесь. Если параметр плагина указан рядом с любым из
# password_file или acl_file, тогда сначала будет произведена проверка плагина.
#
# Если параметр per_listener_settings имеет значение false, плагин будет применен ко всем
# слушатели. Если per_listener_settings имеет значение true, то плагин будет применяться к
# определяется только текущий прослушиватель.
#
# Эта опция также доступна как `auth_plugin`, но такое использование устарело
# и будет удален в будущем.
#
# Плагин
#plugin
# Если используется опция плагина, указанная выше, определите параметры для передачи в
# подключите здесь, как описано в инструкциях по подключению. Все названные параметры
# с использованием формата plugin_opt_* будет передан плагину, например:
#
# Эта опция также доступна как `auth_opt_*`, но такое использование устарело
# и будет удален в будущем.
#
# plugin_opt_db_host
# plugin_opt_db_port
# plugin_opt_db_username
# plugin_opt_db_password
# =================================================================
# Bridges/Мост
# =================================================================
# Мост - это способ соединить несколько брокеров MQTT вместе.
# Создайте новый мост, используя опцию "подключение", как описано ниже. Набор
# параметры для мостов с использованием остальных параметров. Вы должны указать
# адрес и хотя бы одна тема, на которую нужно подписаться.
#
# Каждое соединение должно иметь уникальное имя.
#
# В адресной строке может быть указано несколько адресов хоста и портов. Видеть
# ниже в описании round_robin приведены более подробные сведения о поведении моста, если
# используется несколько адресов. Обратите внимание, что если вы используете IPv6-адрес, то вы
# требуются для указания порта.
#
# Направление, в котором будет распространяться тема, может быть выбрано
# указание out, in или обоих, где значением по умолчанию является out.
# Уровень QoS мостовой связи может быть задан с помощью следующего
# вариант темы. Уровень QoS по умолчанию равен 0, чтобы изменить QoS в теме
# также должно быть указано направление.
#
# Параметры локального и удаленного префикса позволяют переназначать тему, когда она
# подключен к удаленному брокеру/от него. Это дает возможность разместить тему
# дерево в соответствующем месте.
#
# Для получения более подробной информации смотрите справочную страницу mosquitto.conf.
#
# Для каждого подключения можно указать несколько тем, но будьте осторожны
# не создавать никаких циклов.
#
# Если вы используете bridges с cleansession, установленным в значение false (по умолчанию), то
# вы можете получить неожиданное поведение во входящих темах, если измените то, что
# темы, на которые вы подписаны. Это происходит потому, что удаленный брокер сохраняет
# подписка на старую тему. Если у вас возникла эта проблема, подключите свой мост
# с cleansession, установленным в true, затем повторно подключитесь с cleansession, установленным в false
# как обычно.
#connection <name>
#address <host>[:<port>] [<host>[:<port>]]
#topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]
# Если вам нужно, чтобы мост подключался через определенный сетевой интерфейс,
# используйте bridge_bind_address, чтобы указать мосту, какой локальный IP-адрес имеет сокет
# должен быть привязан, например, к `bridge_bind_address 192.168.1.10`
#bridge_bind_address
# Если у моста есть темы, которые имеют направление "наружу", поведение по умолчанию таково:
# отправьте запрос на отмену подписки удаленному брокеру по этой теме. Это означает
# что изменение направления темы с "вход" на "выход" не приведет к продолжению приема
# входящие сообщения. Отправка таких запросов на отмену подписки осуществляется не всегда
# желательно, чтобы установка bridge_attempt_unsubscribe в значение false отключила отправку
# запрос на отмену подписки.
#bridge_attempt_unsubscribe true
# Установите версию протокола MQTT для использования с этим мостом. Может быть одним
# из mqttv50, mqttv311 или mqttv31. По умолчанию используется значение mqttv311.
#bridge_protocol_version mqttv311
# Установите переменную clean session для этого моста.
# Если установлено значение true, когда мост отключается по какой-либо причине, все
# сообщения и подписки будут очищены на удаленном компьютере
# брокер. Обратите внимание, что при установке cleansession в значение true может возникнуть
# значительное количество сохраненных сообщений, отправленных при подключении моста
# повторно подключается после потери соединения.
# Если установлено значение false, подписки и сообщения сохраняются на
# удаленный брокер, и доставляется при повторном подключении моста.
#cleansession false
# Установите количество времени, в течение которого мост, использующий тип отложенного запуска, должен находиться в режиме ожидания, прежде чем
# это будет остановлено. Значение по умолчанию равно 60 секундам.
#idle_timeout 60
# Установите интервал сохранения активности для этого мостового соединения, в
# секундах.
#keepalive_interval 60
# Установите идентификатор клиента для использования у локального брокера. Если не определено, то по умолчанию используется значение
# 'местный.<идентификатор клиента>'/ 'local.<clientid>'. Если вы соединяете брокера с самим собой, это важно
# что local_clientid и client не совпадают.
#local_clientid
# Если установлено значение true, публикуйте уведомления для локальных и удаленных брокеров
# предоставление информации о состоянии мостового соединения. Сохраненный
# сообщения публикуются в теме $SYS/broker/connection/<clientid>/state
# если только не используется параметр notification_topic.
# Если сообщение равно 1, то соединение активно, или 0, если соединение имеет
# не удалось.
# Здесь используется функция последней воли и завещания.
#notifications true
# Выберите тему, по которой будут отправляться уведомления для этого моста.
# опубликовано. Если параметр не задан, сообщения публикуются по теме
# $SYS/broker/connection/<clientid>/state
#notification_topic
# Установите идентификатор клиента для использования на удаленном конце этого мостового соединения. Если нет
# определено, по умолчанию используется значение 'name.hostname', где name - это имя подключения
# и имя хоста - это имя хоста этого компьютера.
# Это заменяет старую опцию "clientid", чтобы избежать путаницы. "идентификатор клиента"
# остается действительным в настоящее время.
#remote_clientid
# Установите пароль, который будет использоваться при подключении к брокеру, требующему
# аутентификация. Этот параметр используется только в том случае, если также задано remote_username.
# Это заменяет старую опцию "пароль"/"password", чтобы избежать путаницы. "пароль"/"password"
# остается действительным в настоящее время.
#remote_password
# Установите пароль, который будет использоваться при подключении к брокеру, требующему
# аутентификация. Этот параметр используется только в том случае, если также задано remote_username.
# Это заменяет старую опцию "пароль", чтобы избежать путаницы. "пароль"
# остается действительным в настоящее время.
#remote_username
# Установите время ожидания моста, использующего тип автоматического запуска
# до попытки повторного подключения.
# Эта опция может быть настроена на использование постоянного времени задержки в секундах или на
# используйте механизм отката, основанный на "декоррелированном дрожании"/"Decorrelated Jitter", который добавляет степень
# случайности до момента, когда произойдет перезапуск.
#
# Установите постоянный тайм-аут в 20 секунд:
# restart_timeout 20
#
# Установите отсрочку с базовым (начальным значением) в 10 секунд и предельным (верхним пределом) в
# 60 секунд:
# restart_timeout 10 30
#
# По умолчанию используется значение дрожания с основанием 5 и пределом 30
#restart_timeout 5 30
# Если мост имеет более одного адреса, указанного в поле address/адреса
# конфигурация, параметр round_robin определяет поведение моста на
# сбой мостового соединения. Если round_robin имеет значение false, то значение по умолчанию
# значение, тогда первый адрес обрабатывается как основное мостовое соединение. Если
# соединение завершится неудачей, будут предприняты попытки подключения к другим дополнительным адресам в
# повернись. Будучи подключенным к дополнительному мосту, мост периодически будет
# пытайтесь повторно подключиться к главному мосту до тех пор, пока не добьетесь успеха.
# Если round_robin имеет значение true, то все адреса рассматриваются как равные. Если бы
# сбой подключения, будет опробован следующий адрес, и в случае успеха будет
# оставайтесь подключенными до тех пор, пока не произойдет сбой
#round_robin false
# Установите начальный тип моста. Это управляет запуском моста и
# может быть одного из трех типов: автоматический, ленивый и однократный automatic, lazy и once. Обратите внимание, что RSMB предоставляет
# четвертый тип запуска "ручной"/"manual", который в настоящее время не поддерживается mosquitto.
#
# "автоматический" "automatic" является типом запуска по умолчанию и означает, что мостовое соединение
# будет запущен автоматически при запуске брокера, а также перезапущен
# после небольшой задержки (30 секунд) в случае сбоя соединения.
#
# Мосты, использующие "ленивый"/"lazy" тип запуска, будут запущены автоматически, когда
# количество сообщений в очереди превышает количество, установленное с помощью "порога"/"threshold"
# параметр. Он будет автоматически остановлен по истечении времени, установленного
# параметр "idle_timeout". Используйте этот тип запуска, если вы хотите, чтобы подключение к
# будьте активны только тогда, когда это необходимо.
#
# Мост, использующий тип запуска "один раз"/"once", будет запущен автоматически, когда
# брокер запускается, но не будет перезапущен в случае сбоя соединения.
#start_type automatic
# Установите количество сообщений, которые должны быть поставлены в очередь для моста с lazy
# тип запуска для перезапуска. Значение по умолчанию - 10 сообщений.
# Должно быть меньше, чем max_queued_messages.
#threshold 10
# Если try_private имеет значение true, мост попытается указать на
# удаленный брокер, что это мост, а не обычный клиент. В случае успеха это
# означает, что обнаружение цикла будет более эффективным и что сохраненные сообщения
# будет передан правильно. Не все брокеры поддерживают эту функцию, поэтому она может
# необходимо установить try_private в значение false, если ваш мост не подключается
# должным образом.
#try_private true
# Некоторые брокеры MQTT не разрешают сохранение сообщений. MQTT v5 предоставляет механизм
# чтобы брокеры сообщали клиентам, что они не поддерживают сохраняемые сообщения, но
# это невозможно для MQTT v3.1.1 или v3.1.1. Если вам нужно подключиться к
# v3.1.1 или v3.1 брокер, который не поддерживает сохраненные сообщения, установите параметр
# bridge_outgoing_retain имеет значение false. Это удалит фиксирующий бит на
# все исходящие сообщения на этот мост, независимо от любых других настроек.
#bridge_outgoing_retain true
# Если вы хотите ограничить размер сообщений, отправляемых на удаленный мост, используйте параметр
# bridge_max_packet_size. Это устанавливает максимальное количество байт для
# общее сообщение, включая заголовки и полезную нагрузку.
# Обратите внимание, что брокеры MQTT v5 могут предоставлять свое собственное свойство максимального размера пакета.
# В этом случае будет использоваться меньшее из двух ограничений.
# Установите значение 0 для параметра "неограниченно".
#bridge_max_packet_size 0
# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе сертификатов
# -----------------------------------------------------------------
# Для включения поддержки TLS необходимо определить либо bridge_cafile, либо bridge_capath
# для этого моста.
# bridge_cafile определяет путь к файлу, содержащему
# Сертификаты центра сертификации, подписавшие удаленного брокера
# сертификат.
# bridge_capath определяет каталог, в котором будет выполняться поиск файлов, содержащих
# сертификаты центра сертификации. Чтобы bridge_capath работал корректно, сертификат
# файлы должны иметь ".crt" в качестве окончания файла, и вы должны запустить "openssl rehash
# <путь к capath>" каждый раз, когда вы добавляете/удаляете add/remove сертификат.
#bridge_cafile
#bridge_capath
# Если удаленный брокер имеет более одного протокола, доступного на его порту, например
# MQTT и WebSockets, затем используйте bridge_alpn для настройки того, какой протокол является
# запрошено. Обратите внимание, что поддержка WebSockets для мостов пока недоступна.
#bridge_alpn
# При использовании шифрования на основе сертификата bridge_insecure отключает
# проверка имени хоста сервера в сертификате сервера. Это может быть
# полезно при тестировании первоначальных конфигураций сервера, но позволяет
# злонамеренная третья сторона, выдающая себя за ваш сервер посредством подмены DNS, для
# пример. Используйте этот параметр только при тестировании. Если вам нужно прибегнуть к использованию этого
# опция в производственной среде ваша настройка неисправна, и нет
# укажите, используя шифрование.
#bridge_insecure false
# Путь к клиентскому сертификату в кодировке PEM, если это требуется удаленному брокеру.
#bridge_certfile
# Путь к закрытому ключу клиента в кодировке PEM, если это требуется удаленному брокеру.
#bridge_keyfile
# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе PSK
# -----------------------------------------------------------------
# Шифрование с предварительным общим ключом обеспечивает альтернативу шифрованию на основе сертификатов
# шифрование. Мост может быть сконфигурирован для использования PSK с параметром bridge_identity параметры
# и bridge_psk. Это идентификатор PSK клиента и предварительный общий ключ
# в шестнадцатеричном формате без "0x". Только один из сертификатов и на основе PSK
# шифрование может быть использовано на одном
# мост сразу.
#bridge_identity
#bridge_psk
# =================================================================
# Внешние конфигурационные файлы
# =================================================================
# Внешние конфигурационные файлы могут быть включены с помощью
# параметр include_dir. Это определяет каталог, в котором будет выполняться поиск
# для конфигурационных файлов. Все файлы, которые заканчиваются на '.conf', будут загружены как
# файл конфигурации. Лучше всего использовать это в качестве последнего варианта
# в основном файле. Этот параметр будет обрабатываться только из основного
# конфигурационный файл. Указанный каталог не должен содержать
# основной конфигурационный файл.
# Файлы внутри include_dir будут загружены отсортированными с учетом регистра
# в алфавитном порядке, с заглавными буквами, расположенными первыми. Если этот параметр выбран
# заданный несколько раз, все файлы из первого экземпляра будут
# обрабатывается перед следующим экземпляром. Примеры приведены на странице руководства.
#include_dir
Код: Выделить всё
adduser mosquitto
В файле конфигурации mosquitto.conf раскоментируем строку user mosquitto с пользователем от имени которого будет запускаться mosquitto.
Добавляем mosquitto в автозагрузку при включении или перезапуске роутера
то данный скрипт будет включён в автозапуск (префикс “K” означает, то данный скрипт будет исключён из автозапуска)
Код: Выделить всё
nano /opt/etc/init.d/Smosquitto
Код: Выделить всё
#!/bin/sh
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin
mosquitto -d -c /opt/etc/mosquitto/mosquitto.conf
Код: Выделить всё
chmod +x /opt/etc/init.d/Smosquitto
Код: Выделить всё
mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d
Код: Выделить всё
#!/bin/sh
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin
killall mosquitto
mosquitto -d -c /opt/etc/mosquitto/mosquitto.conf
Код: Выделить всё
nano /opt/etc/init.d/s80mosquitto
Добавим доступ к каталогам от пользователя mosquitto
Переходим в каталог
Код: Выделить всё
cd /opt/etc/mosquitto
Код: Выделить всё
mkdir persistence
Код: Выделить всё
mkdir certs
Код: Выделить всё
chown -R :mosquitto persistence
Код: Выделить всё
chown -R mosquitto persistence
Код: Выделить всё
touch mosquitto.acl
Код: Выделить всё
chown mosquitto:mosquitto mosquitto.acl
Код: Выделить всё
chmod 777 /opt/var/log
touch /opt/var/run/mosquitto.pid
touch /opt/var/log/mosquitto.log
chown mosquitto:mosquitto /opt/var/run/mosquitto.pid
chown mosquitto:mosquitto /opt/var/log/mosquitto.log
mosquitto_passwd - это инструмент для управления файлами паролей для mosquitto.
Использование: mosquitto_passwd [-H sha512 | -H sha512-pbkdf2] [-c | -D] имя пользователя файла с паролем
mosquitto_passwd [-H sha512 | -H sha512-pbkdf2] [-c] -b файл пароля имя пользователя пароль
mosquitto_passwd -U файл пароля
-b : запустите в пакетном режиме, чтобы разрешить передачу паролей в командной строке.
-c : создайте новый файл паролей. Это приведет к перезаписи существующих файлов.
-D : удалите имя пользователя, а не добавляйте/обновляйте его пароль.
-H : укажите алгоритм хэширования. По умолчанию используется sha512-pbkdf2, что рекомендуется.
В Mosquitto 1.6 и более ранних версиях по умолчанию установлен sha512.
-U : обновите обычный текстовый файл паролей, чтобы использовать хэшированные пароли.
Смотрите Для получения дополнительной информации
Код: Выделить всё
mosquitto_passwd -c -b /opt/etc/mosquitto/mosquitto.users логин пароль
Код: Выделить всё
mosquitto_passwd -c -b /opt/etc/mosquitto/mosquitto.users teapot пароль
Код: Выделить всё
mosquitto_passwd -b /opt/etc/mosquitto/mosquitto.users логин пароль
admin:$7$101$NUE9kyIRB4Ght9ub$qOzyqRAf5rRcVVddLoQbgplfRhbZFc8NLsrTy3jDsHli9Gq52cK6uSnRkQE0xHWKqNgYZV+sE27lv/Mzsm2phw==
teapot:$7$101$KrJjxaCUf2QeC9xt$wb2TMbbfb3ZUGqELgYFFPePQfSO63ARbrhBH5+cHZjHAtKAnObBsnqDvvWCcbMZ0coxMkGvcjYScLv00Gl/6GA==
Даем права доступа к топикам данных пользователей
Код: Выделить всё
nano/opt/etc/mosquitto/mosquitto.acl
topic [read|write|readwrite|deny] <topic>
topic [чтение|запись|чтение-запись|отклонить] <топик>
пользователей должны соответствовать Вашим, дали полные права на все топики
Код: Выделить всё
user admin
topic readwrite #
user teapot
topic readwrite #