summaryrefslogtreecommitdiff
path: root/LINUX/MOSQUITTO.md
diff options
context:
space:
mode:
authorvlapa <vlapa@ya.ru>2026-06-13 20:33:26 +0300
committervlapa <vlapa@ya.ru>2026-06-13 20:33:26 +0300
commite5abc1fe99340b979b18864d978179f71fe8f5c5 (patch)
tree98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /LINUX/MOSQUITTO.md
First
Diffstat (limited to 'LINUX/MOSQUITTO.md')
-rw-r--r--LINUX/MOSQUITTO.md121
1 files changed, 121 insertions, 0 deletions
diff --git a/LINUX/MOSQUITTO.md b/LINUX/MOSQUITTO.md
new file mode 100644
index 0000000..94efb8f
--- /dev/null
+++ b/LINUX/MOSQUITTO.md
@@ -0,0 +1,121 @@
+```bash
+sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
+sudo apt-get update
+sudo apt install mosquitto mosquitto-clients
+
+sudo service mosquitto status
+# mosquitto start/running, process 16614
+
+sudo mosquitto_passwd -c /etc/mosquitto/mosquitto.pwd user_name
+sudo mosquitto_passwd /etc/mosquitto/mosquitto.pwd user_name
+
+sudo vim /etc/mosquitto/mosquitto.conf
+
+# Добавляем в конец файла, чем говорим MQTT где искать наш файл с паролями:
+allow_anonymous false
+password_file /etc/mosquitto/mosquitto.pwd
+
+vim /etc/mosquitto/mosquitto.pwd
+# добавляем клиента:
+user_name-1:EXAMPLE_PASSWORD
+user_name-2:STRONG_PASSWORD
+
+# Зашифруйте открытые пароли пользователей с помощью `mosquitto_passwd`утилиты:
+sudo mosquitto_passwd -U /etc/mosquitto/mosquitto.pwd
+# посмотрим:
+sudo cat /etc/mosquitto/mosquitto.pwd
+
+sudo chmod 0644 /etc/mosquitto/mosquitto.pwd
+
+sudo service mosquitto restart
+
+```
+
+Подпишитесь на `/home/sensor/temperature`тему, используя действительный логин и пароль. Например, `john_doe`и `EXAMPLE_PASSWORD`:
+```sh
+mosquitto_sub -u home -P 1234 -t test
+
+mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "/home/sensor/temperature"
+```
+
+Опубликуйте новое сообщение в `/home/sensor/temperature`теме:
+```sh
+mosquitto_pub -t "test" -m "hello world" -u home -P 1234
+
+mosquitto_pub -u john_doe -P EXAMPLE_PASSWORD -t "home/sensor/temperature" -m "22.5" -q 1 -r
+```
+
+Вывод:
+```sh
+22.5
+```
+
+Просмотрите все активные фоновые задания и запишите `mosquitto_sub`идентификатор задания:
+```sh
+jobs
+```
+
+Вывод:
+```sh
+[1] Running mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room" &
+```
+
+Остановите тему, указав идентификатор задания:
+```sh
+kill %1
+```
+
+Вывод:
+```sh
+[1] Done mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room" &
+```
+
+Попробуйте подписаться на `/home/sensor/temperature`тему, используя неверные учетные данные
+```sh
+mosquitto_pub -u john_doe -P VERY_WRONG_PASSWORD -t "home/sensor/temperature" -m "22.5" -q 1 -r
+```
+
+Вывод:
+```sh
+Connection error: Connection Refused: not authorised.
+Error: The connection was refused.
+```
+
+Вышеприведенный вывод показывает, что соединение не устанавливается, поскольку Mosquitto не может авторизовать пользователя.
+
+
+**Настройка**
+
+После установки вы получите mqtt-брокера, слушающего только локальные интерфейсы. Причем, он об этом вам не скажет. У меня ушло довольно много времени, чтобы понять что не так, вы же получите эти знания сразу )
+Поправим конфигурационный файл:
+
+**/etc/mosquitto/mosquitto.conf**
+```sh
+
+# пишем в логи всё (если не нужно, то потом можно отключить)
+log_type error
+log_type warning
+log_type notice
+log_type information
+
+# разрешаем подключаться без пароля (мне это было надо)
+allow_anonymous true
+
+# те самые "слушатели", без них москит будет слушать только локальные интерфейсы
+listener 1883 192.168.1.2
+listener 1883 192.168.3.2
+ ```
+
+ В принципе, это все, по крайней мере, что было нужно мне.
+ Обратите внимание, что у **listener** вначале идет порт и только потом ip. Если ip не указывать, записать listener 1883, то будут доступны все интерфейсы, как внутренние, так и внешние.
+
+ **Эксплуатация**
+
+Новые настройки сами себя не применят, поэтому сервис нужно перезагрузить:
+`systemctl restart mosquitto
+
+Логи москит пишет в **/var/log/mosquitto/mosquitto.log**
+
+Помните, мы вместе с mosquitto поставили mosquitto-clients? При помощи клиента, например, можно смотреть сообщения в брокере:
+
+ `mosquitto_sub -d -t '#'