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.
Как войти
- Адрес формируется из IP сервера: замените точки на дефисы и добавьте
.fatmetal.net. Пример: IP45.15.159.10->https://45-15-159-10.fatmetal.net. - Вход по встроенным учетным записям Community Edition. Смените дефолтные пароли на первом входе: администратор тенанта
tenant@thingsboard.org/tenant, системный администраторsysadmin@thingsboard.org/sysadmin, клиентcustomer@thingsboard.org/customer. Пароль сервера из личного кабинета платформой не используется - у ThingsBoard своя аутентификация. - Прием телеметрии: 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 ГБ с запасом под прием телеметрии.