Источники

Мост между Zigbee и MQTT – ZigBee2MQTT

Предварительная настройка

  1. Создаем директорию и откроем конфиг mosquitto.conf для редактирования.

    1
    2
    
    mkdir -p /dconf/mosquitto/config/
    nano /dconf/mosquitto/config/mosquitto.conf
    

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

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    allow_anonymous false
    listener 1883
    listener 9001
    persistence true
    persistence_file mosquitto.db
    persistence_location /mosquitto/data/
    password_file /mosquitto/config/passwd
    protocol websockets
    log_dest file /mosquitto/log/mosquitto.log
    connection_messages true
    log_type all
    socket_domain ipv4
    

    Все пути, указанные в конфигурации, должны быть указаны относительно файловой системы контейнера, а не основной системы.

  2. Создаем пустой файл для учетных записей.

    Без это файла, контейнер не запустится корректно.

    1
    
    > /dconf/mosquitto/passwd
    
  3. Запускаем контейнер.

Запуск средствами Docker-compose

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
---
version: "3"
services:

  eclipse-mosquitto:
    image: eclipse-mosquitto:latest
    container_name: eclipse-mosquitto
    environment:
      - TZ=Europe/Moscow
    volumes:
      - /dconf/mosquitto/config:/mosquitto/config
      - /dconf/mosquitto/data:/mosquitto/data
      - /dconf/mosquitto/log:/mosquitto/log
    ports:
      - 1883:1883
      - 9001:9001
    restart: unless-stopped
1
2
docker compose pull
docker compose up -d

CLI Запуск

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
docker run -d \
  --name="eclipse-mosquitto" \
  -p 1883:1883 \
  -p 9001:9001 \
  -v /dconf/mosquitto/config:/mosquitto/config \
  -v /dconf/mosquitto/data:/mosquitto/data \
  -v /dconf/mosquitto/log:/mosquitto/log \
  -e TZ=Europe/Moscow \
  --restart unless-stopped \
eclipse-mosquitto

Создание учетных записей

Для добавления пользователя используется команда eclipse-mosquitto, однако сейчас она будет выдавать ошибки, из-за прав доступа к файлу с паролями.

Корректируем права внутри контейнера:

1
2
docker exec -it eclipse-mosquitto chmod 0700 -R /mosquitto/config
docker exec -it eclipse-mosquitto chown root:root -R /mosquitto/config

Создаем пользователя через mosquitto_passwd:

1
docker exec -it eclipse-mosquitto mosquitto_passwd -c /mosquitto/config/passwd user

Где флаг -c – создать новый пароль и перезаписать файл; /mosquitto/config/passwd – путь к файлу; user – имя пользователя. Остальные параметры команды mosquitto_passwd описаны в этом мануале.

Все вышеперечисленные команды можно выполнить из консоли внутри контейнера. Если вам так удобнее, войдите в нее следующей командой docker exec -it eclipse-mosquitto /bin/sh. Для выхода используйте exit.

Удаление

1
2
3
docker stop mosquitto ;\
docker rm mosquitto ;\
docker rmi eclipse-mosquitto