Administrator
发布于 2026-01-19 / 0 阅读
0
0

使用 Docker 安装 ThingsBoard(Linux )

运行镜像需要服务器至少配备4GB内存(建议8GB)并很低的负载(每秒几条消息)。

前提条件

  • 安装Docker

轻量应用服务器 安装 Docker 并配置镜像加速源_腾讯云

选择ThingsBoard队列服务

ThingsBoard 平台目前支持两种类型的消息代理,用于存储 ThingsBoard 服务之间的消息和通信:内存代理和基于 Kafka 的代理。

  • 在内存队列中,该实现是内置且默认的。 它适用于开发(PoC)环境,不适合生产部署或任何类型的集群部署。

  • Kafka 推荐用于生产部署。该队列目前在大多数 ThingsBoard 生产环境中被使用。 它适用于本地部署和私有云部署。

这里使用kafka的方案:

为 ThingsBoard 队列服务创建 docker compose 文件:

nano docker-compose.yml

在 yml 文件中添加以下几行。

services:
  postgres:
    restart: always
    image: "postgres:16"
    ports:
      - "5432"
    environment:
      POSTGRES_DB: thingsboard
      POSTGRES_PASSWORD: postgres
    volumes:
      - postgres-data:/var/lib/postgresql/data
  kafka:
    restart: always
    image: bitnamilegacy/kafka:4.0
    ports:
      - 9092:9092 #to localhost:9092 from host machine
      - 9093 #for Kraft
    environment:
      ALLOW_PLAINTEXT_LISTENER: "yes"
      KAFKA_CFG_LISTENERS: "PLAINTEXT://:9092,CONTROLLER://:9093"
      KAFKA_CFG_ADVERTISED_LISTENERS: "PLAINTEXT://:9092"
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT"
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: "PLAINTEXT"
      KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1"
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: "1"
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: "1"
      KAFKA_CFG_PROCESS_ROLES: "controller,broker" #KRaft
      KAFKA_CFG_NODE_ID: "0" #KRaft
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: "CONTROLLER" #KRaft
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: "0@kafka:9093" #KRaft
      KAFKA_CFG_LOG_RETENTION_MS: "300000"
      KAFKA_CFG_SEGMENT_BYTES: "26214400"
    volumes:
      - kafka-data:/bitnami
  thingsboard-ce:
    restart: always
    image: "thingsboard/tb-node:4.2.1.1"
    ports:
      - "8080:8080"
      - "7070:7070"
      - "1883:1883"
      - "8883:8883"
      - "5683-5688:5683-5688/udp"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"
    environment:
      TB_SERVICE_ID: tb-ce-node
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/thingsboard
      TB_QUEUE_TYPE: kafka
      TB_KAFKA_SERVERS: kafka:9092
    depends_on:
      - postgres
      - kafka

volumes:
  postgres-data:
    name: tb-postgres-data
    driver: local
  kafka-data:
    name: tb-ce-kafka-data
    driver: local

其中:

  • 8080:8080- 将本地端口8080连接到暴露的内部HTTP端口8080

  • 1883:1883- 将本地端口1883连接到暴露的内部MQTT端口1883

  • 8883:8883- 通过SSL端口8883将本地端口8883连接到暴露的内部MQTT

  • 7070:7070- 将本地端口7070连接到暴露的内部Edge RPC端口7070

  • 5683-5688:5683-5688/udp- 将本地UDP端口5683-5688连接到暴露的内部COAP和LwM2M端口

  • tb-postgres-data- 存储PostgreSQL数据的docker卷名称

  • thingsboard-ce- ThingsBoard 容器的友好本地名称

  • restart: always- 系统重启时自动启动ThingsBoard,故障时重启。

  • image: "thingsboard/tb-node:4.2.1.1"- ThingsBoard Docker 镜像和版本。

初始化数据库模式和系统资产

在启动ThingsBoard之前,先通过运行以下程序初始化数据库模式并加载内置资源:

docker compose run --rm -e INSTALL_TB=true -e LOAD_DEMO=true thingsboard-ce

环境变量:

  • INSTALL_TB=true- 安装核心数据库模式和系统资源(小部件、图片、规则链等)。

  • LOAD_DEMO=true- 加载示例租户账户、仪表盘和设备,用于评估和测试。

启动平台并查看日志

以分离模式启动所有容器,然后跟踪 ThingsBoard 日志:

docker compose up -d && docker compose logs -f thingsboard-ce

执行此命令后,你可以在浏览器中打开(例如 http://localhost:8080http://{你的服务器IP}:8080)。你应该能看到 ThingsBoard 的登录页面。请使用以下默认凭据登录:

  • 系统管理员sysadmin@thingsboard.org / sysadmin

  • 租户管理员tenant@thingsboard.org / tenant

  • 客户用户customer@thingsboard.org / customer

可以随时在 “账户资料” 页面修改每个账户的密码。

可以安全地退出日志流(按 Ctrl+C),容器将继续在后台运行。

image-Zmzm.png

检查日志 & 控制容器生命周期

如果出现问题,你可以实时查看 ThingsBoard 容器日志:

docker compose logs -f thingsboard-ce

停止并删除 Compose 文件中定义的所有容器:

docker compose down

以后台模式启动所有服务:

docker compose up -d

升级

你必须逐个版本进行升级(例如 4.0.2 -> 4.1.0 -> 4.2.0 等)。

当有新的 CE 版本发布时,请按照以下步骤更新你的安装,而不会丢失数据:

  1. docker-compose.yml 文件中,将 thingsboard/tb-node 的版本号修改为新版本(例如 4.2.1.1)。

  2. 执行以下命令:

docker pull thingsboard/tb-node:4.2.1.1
docker compose stop thingsboard-ce
docker compose run --rm -e UPGRADE_TB=true thingsboard-ce
docker compose up -d


评论