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 采用 多租户架构,核心层级为:系统管理员 → 租户 → 客户 → 设备。租户是隔离的业务单元,每个租户拥有独立的设备、仪表板、规则链和用户管理权限。

ThingsBoard 多租户层级架构图 ThingsBoard 多租户层级架构 系统管理员 (Sysadmin) 租户 A 租户 B 租户 C 客户 A1 客户 A2 客户 B1 客户 C1 设备 1 设备 2 设备 3 每个租户完全隔离

2.5.1 创建新租户的步骤

  1. 以系统管理员身份登录(sysadmin@thingsboard.org / sysadmin)
  2. 进入左侧菜单 「租户」 → 点击右上角 「+」 按钮
  3. 填写租户信息:
    • 标题: 例如 "智能工厂租户"
    • 邮箱: 租户管理员的邮箱地址
    • 时区: 根据业务区域选择
  4. 点击 「添加」,系统自动创建租户并生成租户管理员账户
  5. 系统会向租户邮箱发送激活邮件(需提前配置邮件服务器),或由系统管理员手动设置初始密码

2.5.2 租户管理的关键操作

操作 路径 说明
查看租户列表 系统设置 → 租户 显示所有已创建的租户及其状态
编辑租户信息 租户详情页 → 编辑 修改标题、邮箱、时区等基本信息
管理租户管理员 租户详情页 → 用户 添加/删除租户管理员,重置密码
设置租户资源限制 租户详情页 → 配置 限制设备数量、API 调用频率等
删除租户 租户列表 → 删除 谨慎操作,会删除该租户下所有数据
实践建议: 在后续规则链实验中,建议创建一个专用租户(例如 "TB-Training"),在该租户下创建设备和仪表板,避免影响系统默认租户的数据。规则链的 HTTP 调用配置将在租户级别生效。

2.6 环境验证:确认 ThingsBoard 可正常使用

完成安装和租户创建后,执行以下快速验证流程,确保环境就绪:

  1. 登录测试: 使用新创建的租户管理员账户登录,确认能正常进入租户界面
  2. 创建设备: 在租户下创建一个测试设备,记录其访问令牌
  3. 发送遥测: 使用 MQTT 客户端或 curl 向设备发送一条遥测数据
  4. 查看数据: 在设备详情页的「最新遥测」标签页确认数据已到达

验证用的 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}'