Помощь
Частые вопросы и типовые сложности. Если ответа здесь нет — напишите на почту, она внизу страницы.
Начало работы
Сколько стоит брокер?
Нисколько. Брокер бесплатен, ограничений на число устройств, сообщений, подписок или серверов нет, лицензионные ключи не нужны, телеметрия не собирается.
Какие системы поддерживаются?
Debian и Ubuntu (пакет в APT-репозитории), Windows 10 и 11 x64 (готовый .exe), а также сборки Linux для amd64, arm64 и armhf — их можно запустить вручную на любом дистрибутиве, включая Raspberry Pi.
Что нужно установить дополнительно?
Ничего. Бинарник статически слинкован и не требует ни runtime, ни libc, ни внешней базы данных: состояние хранится в SQLite на чистом Go внутри самого брокера.
Куда заходить после установки?
Панель ждёт по адресу http://адрес-сервера:8080. Логин по умолчанию admin, пароль admin — смените его в разделе «Профиль» сразу после первого входа.
Какие порты открыты по умолчанию?
1883 — MQTT поверх TCP, 8883 — MQTT поверх TLS, 8080 — веб-панель и MQTT over WebSocket по пути /mqtt. Порты меняются в config.json или флагами командной строки.
Подключение устройств
Устройство не подключается: «not authorized». Что не так?
Скорее всего, вы пытаетесь войти логином администратора панели. Это разные вещи: администратор управляет только веб-интерфейсом, а устройства подключаются под отдельными учётками из раздела «Пользователи». Заведите там пользователя и подключайтесь его именем и паролем.
Клиент подключился, но не видит сообщений.
Проверьте права. ACL работает по принципу deny-by-default: без явного разрешающего правила доступа нет. Убедитесь, что у пользователя есть правило с доступом read или readwrite на нужный фильтр темы, и что оно стоит выше запрещающих — правила проверяются сверху вниз до первого совпадения.
Как дать устройству доступ только к своей ветке?
Добавьте правило с фильтром $u/# и доступом readwrite. Плейсхолдер $u разворачивается в имя подключившегося клиента, поэтому одно правило закрывает всех: каждое устройство видит только свою ветку. В панели для этого есть готовая кнопка «Своя ветка».
Можно ли разрешить анонимный доступ?
Да, отдельным флагом в «Настройки → Брокер». Учтите, что анонимным клиентам весь $-namespace запрещён целиком, включая $SYS.
Почему подписка на # не показывает $SYS?
Так требует спецификация: подстановочные знаки не достают до тем, начинающихся с $. Чтобы читать статистику, нужно явное правило вида $SYS/#. Плюс есть общий выключатель $SYS в настройках брокера.
Как подключиться из браузера?
Через MQTT over WebSocket: адрес ws://адрес-сервера:8080/mqtt, подпротокол mqtt. Отдельный шлюз не нужен — WebSocket работает на том же порту, что и панель.
Безопасность и TLS
Клиент ругается на сертификат при подключении к 8883.
При первом запуске брокер генерирует самоподписанный сертификат — он годится для проверки, но клиенты ему не доверяют. Для рабочей системы подставьте свой сертификат в блоке tls конфигурации (поля cert и key) и перезапустите брокер.
Как сменить пароль администратора?
В разделе «Профиль». Новый пароль записывается в config.json уже хешем — открытый пароль в файле не остаётся.
Я забыл пароль администратора.
Остановите брокер, удалите в config.json поле passwordHash из блока auth и впишите вместо него "password": "новый-пароль". При старте брокер захеширует его и вычистит открытое значение из файла.
Панель доступна из интернета — это нормально?
Штатная установка на Linux слушает панелью только 127.0.0.1 и публикует её через nginx, где удобно поставить HTTPS и ограничения доступа. Открывать порт 8080 наружу напрямую не стоит.
Как выдать доступ к API другой системе?
«Настройки → API» — создайте bearer-токен. Он показывается один раз, в базе лежит только хеш. Если системе нужна лишь статистика, отметьте «только чтение»: тогда пройдут только GET, HEAD и OPTIONS.
Нагрузка и надёжность
Одно устройство завалило брокер сообщениями. Что делать?
Включите ограничители в «Настройки → Брокер»: сообщений в секунду, всплеск, байт в секунду. Они действуют на каждое подключение. Превышение не рвёт соединение и не теряет сообщения — брокер притормаживает чтение из сокета, и отправитель замедляется сам.
Шумит одна конкретная тема, клиент в остальном нормальный.
Это случай для «Правила → Ограничения тем». Правило по шаблону темы либо прореживает поток до нормы, сохраняя последнее значение, либо игнорирует тему совсем. Датчик, шлющий десять раз в секунду, превращается в одно сообщение в секунду — и это будет самое свежее измерение.
Что переживает перезапуск брокера?
Retain-сообщения, постоянные сессии с подписками и оффлайн-очередями, незавершённые рукопожатия QoS и отложенные сообщения. Чистые сессии не сохраняются — по спецификации они умирают вместе с соединением.
Поддерживается ли кластер?
Нет. Брокер рассчитан на один процесс. Для связи нескольких брокеров есть мост — он пересылает темы между серверами в обе стороны.
Как посмотреть, что происходит прямо сейчас?
Раздел «Трафик» показывает живой поток сообщений и событий брокера с фильтром и паузой, а «Обзор» — графики скорости, состояние машины и ленту событий. Данные идут потоком по WebSocket.
Обслуживание
Как обновить брокер на Debian или Ubuntu?
Вместе с остальной системой: sudo apt-get update && sudo apt-get upgrade. Отдельных действий не требуется, настройки и данные при обновлении не трогаются.
Как перенести настройки на другой сервер?
«Настройки → Импорт и экспорт»: выгрузите файл на старом сервере и загрузите на новом. Переносятся настройки, пользователи и правила.
Где лежат данные и логи?
Данные — в каталоге data рядом с бинарником (на Linux это /opt/elxmqttbroker): broker.db, users.json и сертификаты. Логи на Linux идут в journald: journalctl -u elxmqttbroker -f.
Как узнать, какая версия запущена?
Версия, номер сборки и время сборки вшиты в бинарник: они видны внизу боковой панели, в разделе «О программе» и по команде elxmqttbroker -version.
Можно ли отключить сохранение состояния?
Да, параметром persistence: false в config.json. Тогда всё держится только в памяти и теряется при перезапуске — это имеет смысл для стендов и тестов.
Ничего не нашлось. Попробуйте другое слово или напишите нам.
Не нашли ответ?
Напишите — постараемся помочь и дополнить этот раздел.