ThingsBoard
Open-source платформа для приема телеметрии с устройств, обработки правилами и дашбордов. Развернули Community Edition на своем сервере, проверили прием данных и замерили аппетит стека JVM + PostgreSQL.
Вердикт
- кто собирает телеметрию с устройств по MQTT/HTTP/CoAP и хочет все держать у себя
- прототипам и продакшену IoT: правила, алармы, дашборды из коробки
- кому важен полный контроль над данными без облака вендора
- для одного-двух домашних датчиков - избыточно, хватит Home Assistant
- кто не готов эксплуатировать JVM-стек и Postgres
- кому нужна кластеризация/white-label из коробки - это платная PE
Что это и какую задачу решает
ThingsBoard - платформа для интернета вещей: устройства шлют в нее телеметрию по MQTT, HTTP или CoAP, платформа хранит данные, гоняет их через движок правил (rule engine), поднимает алармы и рисует дашборды. По сути это готовый бэкенд для IoT-проекта, который иначе пришлось бы собирать из брокера, базы под временные ряды, обработчика событий и фронта с графиками.
Community Edition распространяется под Apache 2.0 и ставится на свой сервер. Это закрывает боль тех, кому нельзя или не хочется гнать показания датчиков в чужое облако: производство, энергетика, умные здания, агротех. Из коробки - мультитенантность (тенанты и их клиенты), профили устройств, виджеты, REST API и встроенный MQTT-брокер.
Чем отличается от платных аналогов
Сравнение с управляемыми IoT-облаками по тому, что влияет на выбор.
| Параметр | ThingsBoard CE (self-hosted) | Облачный IoT (AWS IoT, TB Cloud) |
|---|---|---|
| Модель цены | бесплатно, платите за свой сервер | за устройства и сообщения |
| Где данные | на вашем сервере | в облаке провайдера |
| Vendor lock-in | нет, открытый код | завязка на API провайдера |
| MQTT-брокер | встроен | отдельный сервис |
| Масштаб под нагрузку | Kafka + кластер вручную | из коробки, но платно |
Тех-стек и архитектура
Ядро написано на Java 17 (Spring Boot), данные и телеметрия лежат в PostgreSQL. Для быстрой установки есть монолит-образ thingsboard/tb-postgres - в одном контейнере и приложение, и база. Внутренняя очередь событий по умолчанию in-memory; для продакшена под нагрузкой ThingsBoard переключают на Kafka.
В большом развертывании компоненты разносят: отдельно ядро, отдельно транспортные сервисы (MQTT/HTTP/CoAP), отдельно веб-UI, PostgreSQL и Kafka. Для разбора и типового старта достаточно монолита - он поднимается одним docker compose up.
Минимальная конфигурация
Реальные требования против официального минимума.
| Официальный минимум RAM | 4 ГБ |
| Реально в простое (контейнер) | ~1.25 ГБ |
| Занято на хосте после старта | ~1.9 ГБ |
| Рекомендуем тариф | CPU4-RAM8-DISK100 |
Важно: под 4 ГБ монолит стартует впритык - JVM-heap, Postgres и ОС конкурируют за память. Берем 8 ГБ, чтобы был запас под прием телеметрии и rule engine, а не только на холостой старт.
В маркетплейсе Fatmetal
Не хотите ставить руками?
ThingsBoard CE есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочую платформу на своем домене, валидный TLS и файл с доступами.
Рекомендуемая конфигурация:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe от 990 ₽/мес
Развертывание на Fatmetal
Базовый путь - Cloud Server + Ubuntu 24.04 + Docker.
Создать VM
Тариф CPU4-RAM8-DISK100, Ubuntu 24.04, приложение Docker.
Подготовить compose
mkdir ~/thingsboard && cd ~/thingsboard # монолит-образ: приложение + PostgreSQL в одном контейнере # берем реальный тег, НЕ latest (см. «Где может сломаться»)Образ:
thingsboard/tb-postgres:4.2.1.1, порт8080, том под данные.Поднять стек
docker compose up -d docker compose logs -f | grep "Started ThingsBoard"Первый старт инициализирует схему БД - это занимает заметно дольше обычного. Проверка:
curl -I localhost:8080должен вернуть 200.Валидный TLS
Поставить Caddy обратным прокси на
:8080- он сам возьмет сертификат Let's Encrypt на ваш домен. Голый:8080наружу не выставляем.Сменить дефолтные пароли
Учетки
sysadmin@thingsboard.org,tenant@thingsboard.org,customer@thingsboard.orgактивны сразу с известными паролями - сменить до выхода в интернет.
Что измерили после запуска
Цифры со свежей установки, без нагрузки. Стенд: 4 vCPU / 8 ГБ, in-memory queue.
| RAM контейнера в простое | ~1.25 ГБ |
| Занято на хосте | 1894 / 7941 МБ |
| CPU в простое | ~8% |
| Отклик UI (локально) | ~16 мс |
| Логин через API (локально) | ~224 мс |
Главное: в простое монолит держит ~1.25 ГБ - это JVM-heap плюс Postgres в одном образе. UI отвечает мгновенно; основную память съедает именно JVM, поэтому запас RAM важнее числа ядер.
Проверено на ThingsBoard CE v4.2.1.1, сентябрь 2026. На новых версиях результаты могут отличаться.
Где может сломаться
Реальные грабли, на которые наткнулись при запуске.
In-memory очередь. Дефолт монолита - очередь в памяти. Для демо и одного узла нормально, но под продакшен-нагрузку и чтобы события переживали рестарт, переключают на Kafka.
Дефолтные учетки. Три системных аккаунта активны сразу с публично известными паролями. Сменить до того, как платформа станет доступна из интернета.
Причина. На GitHub уже вышел CE v4.3.1.4, но монолит-образа tb-postgres под этот тег на Docker Hub еще нет - последний доступный монолит на момент разбора v4.2.1.1. Если взять номер версии из GitHub-релиза, pull падает на несуществующем теге.
Решение. Пиньте реальный существующий тег образа (tb-postgres:4.2.1.1), а не latest и не номер из релиз-нот. Свежие версии сперва появляются как компонентные образы, монолит подтягивается позже.
Безопасность и обновления
Релизы и security advisories - на GitHub проекта. Перед апдейтом читайте release notes: между мажорными версиями бывают миграции схемы БД. Обновление:
docker compose pull && docker compose up -d
Бэкап базы:
docker exec tb-postgres pg_dump -U postgres thingsboard > backup.sql
Связь с другими стеками
- Обратный прокси - Caddy / Nginx Proxy Manager для валидного TLS перед :8080.
- Очередь - Kafka вместо in-memory под продакшен-нагрузку.
- Бэкапы - pg_dump базы thingsboard + выгрузка в S3.
- Мониторинг - Grafana + Prometheus поверх метрик платформы.
Когда это НЕ ваш выбор
Пара датчиков для дома
Разворачивать JVM-платформу с Postgres ради двух термометров - из пушки по воробьям. Home Assistant или Node-RED закроют задачу проще.
Нужен managed без эксплуатации
Если не готовы держать JVM-стек, следить за памятью и обновлениями - берите облачный ThingsBoard Cloud или AWS IoT и платите за удобство.
Кластеризация и white-label из коробки
Горизонтальное масштабирование одной кнопкой, брендирование, расширенные интеграции - это Professional Edition, платная.
Частые вопросы
Можно поставить без Docker?
Да, есть установка из deb/rpm-пакетов с отдельным PostgreSQL. Но Docker-монолит воспроизводимее и быстрее для старта.
Хватит ли 2 ГБ RAM?
Нет. Официальный минимум 4 ГБ, и даже под ним JVM плюс Postgres идут впритык. Для приема телеметрии берем 8 ГБ.
Можно в продакшен?
Да: смените дефолтные пароли, закройте платформу валидным TLS через прокси, а под нагрузку переключите очередь на Kafka.
Как обновлять?
docker compose pull && docker compose up -d, но сперва читайте release notes - бывают миграции схемы.
Что бэкапить?
Базу PostgreSQL (pg_dump базы thingsboard) и том с данными контейнера.
Какие протоколы устройств поддерживаются?
MQTT, HTTP и CoAP из коробки, MQTT-брокер встроен в платформу.
Какие ограничения лицензии?
Community Edition - Apache 2.0, коммерческое использование свободно. Кластеризация и white-label - в платной Professional Edition.
Итог
ThingsBoard CE - зрелый open-source бэкенд для IoT: MQTT-брокер, rule engine, алармы и дашборды в одном месте, данные на своем сервере. В простое монолит держит ~1.25 ГБ, UI отвечает за ~16 мс. Берите 8 ГБ RAM с запасом, пиньте реальный тег образа, закройте TLS и смените дефолтные пароли - и получите продакшен-платформу без облака вендора.
Рекомендуемая конфигурация для установки:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe
Не хотите устанавливать вручную?
Запустите ThingsBoard на этой конфигурации автоматически - от 990 ₽/мес.
Этот стек у нас запущен на тарифе CPU4-RAM8-DISK100. Нашли баг в гайде - напишите, поправим в течение дня.