2. ThingsBoard 环境搭建:安装方式、初始配置与租户创建
搭建 ThingsBoard 环境是进行规则链开发与外部 HTTP 服务调用的前提。本章将系统讲解两种主流安装方式(Docker 与本地部署)、安装后的初始配置流程,以及多租户体系中的租户创建操作。无论你选择哪种方式,最终都将获得一个可用的 ThingsBoard 实例,为后续规则链实验奠定基础。
2.1 安装方式对比:Docker vs 本地部署
ThingsBoard 官方提供多种安装途径,其中 Docker 部署 和 本地部署(Linux 包安装) 是最常用的两种方案。下表从多个维度对比两者的差异,帮助你根据实际场景做出选择。
| 对比维度 | Docker 部署 | 本地部署(Linux 包) |
|---|---|---|
| 安装复杂度 | 低,一条命令即可启动 | 中,需手动配置 Java、数据库等依赖 |
| 环境隔离性 | 高,容器化运行,不影响宿主机 | 低,直接运行在操作系统上 |
| 资源占用 | 中等,容器本身有额外开销 | 较低,无虚拟化层 |
| 升级与回滚 | 简单,切换镜像标签即可 | 较复杂,需手动替换文件 |
| 适用场景 | 开发测试、快速原型、CI/CD | 生产环境、资源受限服务器 |
| 官方推荐 | 是,社区版和企业版均支持 | 是,提供 .deb/.rpm 包 |
建议: 如果你是初次接触 ThingsBoard 或希望快速搭建实验环境,优先选择 Docker 部署。本课程后续章节的示例均基于 Docker 环境,但规则链配置与外部 HTTP 调用逻辑完全适用于本地部署。
2.2 Docker 方式安装 ThingsBoard
Docker 安装是最高效的方式。以下步骤基于 ThingsBoard 3.6.x 社区版,使用 PostgreSQL 作为数据库,并启用内存队列模式(适用于单机开发环境)。
2.2.1 前提条件
- 已安装 Docker Engine 20.10+ 和 Docker Compose v2+
- 宿主机开放端口:
8080(HTTP)、1883(MQTT)、5683(CoAP) - 至少 2GB 可用内存
2.2.2 使用 Docker Compose 一键部署
创建项目目录并编写 docker-compose.yml 文件:
version: '3.8'
services:
mytb:
image: thingsboard/tb-postgres:3.6.1
container_name: thingsboard-server
ports:
- "8080:8080"
- "1883:1883"
- "5683:5683/udp"
environment:
TB_QUEUE_TYPE: in-memory
SPRING_DATASOURCE_URL: jdbc:postgresql://localhost:5432/thingsboard
SPRING_DATASOURCE_USERNAME: postgres
SPRING_DATASOURCE_PASSWORD: postgres
volumes:
- tb-data:/data
- tb-logs:/var/log/thingsboard
restart: always
volumes:
tb-data:
tb-logs:
在终端执行启动命令:
docker-compose up -d
首次启动需要等待 2-5 分钟,ThingsBoard 会完成数据库初始化与表结构创建。可通过以下命令查看日志确认启动完成:
docker logs -f thingsboard-server | grep "Started ThingsBoardServerApplication"
验证: 浏览器访问
http://localhost:8080,如果看到 ThingsBoard 登录页面,说明安装成功。
2.3 本地部署方式(Ubuntu 22.04 示例)
对于无法使用 Docker 的环境,可以采用本地包安装。以下以 Ubuntu 22.04 LTS 为例,安装 ThingsBoard 社区版。
2.3.1 安装依赖
# 安装 Java 11(ThingsBoard 3.6 要求 Java 11)
sudo apt update
sudo apt install openjdk-11-jdk -y
# 安装 PostgreSQL 14
sudo apt install postgresql-14 -y
# 创建数据库和用户
sudo -u postgres psql -c "CREATE DATABASE thingsboard;"
sudo -u postgres psql -c "CREATE USER tbuser WITH PASSWORD 'tbpass';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE thingsboard TO tbuser;"
2.3.2 下载并安装 ThingsBoard 包
# 下载 .deb 包
wget https://github.com/thingsboard/thingsboard/releases/download/v3.6.1/thingsboard-3.6.1.deb
# 安装
sudo dpkg -i thingsboard-3.6.1.deb
# 配置数据库连接
sudo nano /etc/thingsboard/conf/thingsboard.yml
# 修改以下内容:
# spring.datasource.url: jdbc:postgresql://localhost:5432/thingsboard
# spring.datasource.username: tbuser
# spring.datasource.password: tbpass
2.3.3 初始化数据库并启动
# 运行数据库初始化脚本
sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo
# 启动 ThingsBoard 服务
sudo systemctl start thingsboard
sudo systemctl enable thingsboard
# 检查状态
sudo systemctl status thingsboard
启动成功后,同样通过 http://localhost:8080 访问登录页面。
2.4 初始配置:管理员登录与系统设置
安装完成后,使用系统默认管理员账户登录,并进行必要的初始配置。
2.4.1 管理员登录
| 角色 | 用户名 | 默认密码 |
|---|---|---|
| 系统管理员 | sysadmin@thingsboard.org |
sysadmin |
| 租户管理员 | tenant@thingsboard.org |
tenant |
| 客户用户 | customer@thingsboard.org |
customer |
安全提醒: 首次登录后,请立即修改默认密码。进入「系统设置 → 安全设置 → 密码策略」,建议启用强密码策略并设置密码过期时间。
2.4.2 系统设置关键项
以系统管理员身份登录后,建议检查以下配置:
- 邮件服务器: 配置 SMTP 用于用户邀请、密码重置等通知(系统设置 → 邮件)
- 基础 URL: 设置 ThingsBoard 实例的公网访问地址(系统设置 → 常规)
- OAuth2 认证: 如需集成第三方登录,在此配置(系统设置 → OAuth2)
- 时区与语言: 默认 UTC,可根据需要调整为本地时区(系统设置 → 常规)
2.5 租户创建:多租户体系入门
ThingsBoard 采用 多租户架构,核心层级为:系统管理员 → 租户 → 客户 → 设备。租户是隔离的业务单元,每个租户拥有独立的设备、仪表板、规则链和用户管理权限。
2.5.1 创建新租户的步骤
- 以系统管理员身份登录(
sysadmin@thingsboard.org/sysadmin) - 进入左侧菜单 「租户」 → 点击右上角 「+」 按钮
- 填写租户信息:
- 标题: 例如 "智能工厂租户"
- 邮箱: 租户管理员的邮箱地址
- 时区: 根据业务区域选择
- 点击 「添加」,系统自动创建租户并生成租户管理员账户
- 系统会向租户邮箱发送激活邮件(需提前配置邮件服务器),或由系统管理员手动设置初始密码
2.5.2 租户管理的关键操作
| 操作 | 路径 | 说明 |
|---|---|---|
| 查看租户列表 | 系统设置 → 租户 | 显示所有已创建的租户及其状态 |
| 编辑租户信息 | 租户详情页 → 编辑 | 修改标题、邮箱、时区等基本信息 |
| 管理租户管理员 | 租户详情页 → 用户 | 添加/删除租户管理员,重置密码 |
| 设置租户资源限制 | 租户详情页 → 配置 | 限制设备数量、API 调用频率等 |
| 删除租户 | 租户列表 → 删除 | 谨慎操作,会删除该租户下所有数据 |
实践建议: 在后续规则链实验中,建议创建一个专用租户(例如 "TB-Training"),在该租户下创建设备和仪表板,避免影响系统默认租户的数据。规则链的 HTTP 调用配置将在租户级别生效。
2.6 环境验证:确认 ThingsBoard 可正常使用
完成安装和租户创建后,执行以下快速验证流程,确保环境就绪:
- 登录测试: 使用新创建的租户管理员账户登录,确认能正常进入租户界面
- 创建设备: 在租户下创建一个测试设备,记录其访问令牌
- 发送遥测: 使用 MQTT 客户端或 curl 向设备发送一条遥测数据
- 查看数据: 在设备详情页的「最新遥测」标签页确认数据已到达
验证用的 curl 命令示例:
curl -v -X POST http://localhost:8080/api/v1/<DEVICE_ACCESS_TOKEN>/telemetry \
--header "Content-Type: application/json" \
--data '{"temperature": 25.5, "humidity": 60}'