ThingsBoard - зрелая open-source платформа для интернета вещей: устройства шлют телеметрию по MQTT, HTTP или CoAP, платформа хранит ее, гоняет через движок правил (rule engine), поднимает алармы и рисует дашборды. По сути готовый IoT-бэкенд, который иначе пришлось бы собирать из брокера, базы под временные ряды, обработчика событий и фронта с графиками. Community Edition под Apache 2.0 - свободна в том числе для коммерческого использования.

После создания сервера ThingsBoard ставится автоматически: docker поднимает монолит-контейнер (приложение + PostgreSQL), а Caddy выпускает Let's Encrypt и открывает веб-интерфейс по HTTPS на magic-DNS домене. Порт MQTT 1883 открыт наружу для подключения устройств.

Что внутри

  • ThingsBoard CE (Java 17, Spring Boot) - ядро платформы: веб-UI и API на порту 8080, слушает только localhost.
  • PostgreSQL - база данных внутри монолит-образа thingsboard/tb-postgres (том tb-data), хранит устройства, телеметрию и дашборды.
  • Встроенный MQTT-брокер на порту 1883 - прием телеметрии с устройств (открыт наружу).
  • Caddy - reverse-proxy и авто-TLS (Let's Encrypt) перед веб-интерфейсом.
  • Очередь событий - in-memory (одноузловой профиль). Под продакшен-нагрузку переключается на Kafka.

Как войти

  1. Адрес формируется из IP сервера: замените точки на дефисы и добавьте .fatmetal.net. Пример: IP 45.15.159.10 -> https://45-15-159-10.fatmetal.net.
  2. Вход по встроенным учетным записям Community Edition. Смените дефолтные пароли на первом входе: администратор тенанта tenant@thingsboard.org / tenant, системный администратор sysadmin@thingsboard.org / sysadmin, клиент customer@thingsboard.org / customer. Пароль сервера из личного кабинета платформой не используется - у ThingsBoard своя аутентификация.
  3. Прием телеметрии: MQTT на <домен>:1883 (топик v1/devices/me/telemetry, access-token устройства) или HTTP на https://<домен>/api/v1/<token>/telemetry.

Важно

Данные лежат в томе docker tb-data (/data), логи - в tb-logs. Бэкапьте базу: docker exec thingsboard pg_dump -U postgres thingsboard > dump.sql плюс снимайте том tb-data. Тег образа зафиксирован реальным (4.2.1.1) - под свежий GitHub-релиз монолит-образ tb-postgres может еще не выйти, поэтому latest не используется. Конфиг стека: /opt/thingsboard/compose.yml.

Лицензия

ThingsBoard Community Edition - под лицензией Apache 2.0, свободна в том числе для коммерческого использования. Кластеризация, white-label и расширенные интеграции - в платной Professional Edition, но для приема телеметрии, правил и дашбордов они не нужны.

Свой домен

Наведите CNAME на этот сервер, впишите домен в /etc/caddy/Caddyfile, затем systemctl restart caddy - Caddy выпустит Let's Encrypt. Веб-интерфейс проксируется на 127.0.0.1:8080, менять адрес приложения не требуется.

Требования

Ubuntu 24.04, открытые порты 80/443 (веб-интерфейс) и 1883 (MQTT-устройства). Рекомендуемая конфигурация CPU4-RAM8-DISK100. Монолит держит в простое ~1.25 ГБ RAM (JVM + Postgres), под 4 ГБ стартует впритык - берем 8 ГБ с запасом под прием телеметрии.

Подробный разбор с замерами и скриншотами