1. 项目背景与环境准备
ThingsBoard作为一款开源的物联网平台,在RK3588这类边缘计算设备上部署具有特殊价值。RK3588作为瑞芯微推出的高性能处理器,采用8核64位架构(4×Cortex-A76 + 4×Cortex-A55),搭配6TOPS NPU,非常适合运行需要边缘计算的物联网场景。而Ubuntu 20.04作为长期支持版本,提供了稳定的基础运行环境。
在开始部署前,需要确认以下基础环境:
- RK3588开发板已刷入Ubuntu 20.04系统
- 设备内存≥4GB(推荐8GB)
- 存储空间≥16GB(实际部署约占用5GB)
- 网络连接正常(需要下载Docker镜像)
注意:RK3588的ARMv8架构与x86平台存在差异,部分Docker镜像需要特别编译。ThingsBoard官方从4.2版本开始提供ARM64支持,这是选择4.3版本的重要原因。
2. 系统基础配置
2.1 系统更新与依赖安装
首先执行系统更新:
sudo apt update && sudo apt upgrade -y安装必要依赖包:
sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ software-properties-common \ gnupg-agent \ htop \ net-tools2.2 Docker环境配置
由于RK3588采用ARM架构,需要特别注意Docker的安装方式:
- 添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg- 设置稳定版仓库:
echo \ "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null- 安装Docker引擎:
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io- 验证安装:
sudo docker run --rm arm64v8/hello-world2.3 Docker Compose安装
由于官方Docker Compose没有ARM64二进制包,我们需要使用pip安装:
sudo apt install -y python3-pip libffi-dev sudo pip3 install docker-compose验证安装:
docker-compose --version3. ThingsBoard部署流程
3.1 获取部署文件
创建项目目录并下载官方部署文件:
mkdir ~/thingsboard && cd ~/thingsboard curl -L https://github.com/thingsboard/thingsboard/releases/download/v4.3/docker-compose.yml -o docker-compose.yml由于RK3588是ARM架构,需要修改docker-compose.yml:
version: '3.0' services: tb: image: thingsboard/tb:4.3 platform: linux/arm64 # 关键修改点 ... postgres: image: postgres:13 platform: linux/arm64 # 关键修改点 ...3.2 数据库配置
修改PostgreSQL配置部分:
postgres: environment: POSTGRES_DB: thingsboard POSTGRES_PASSWORD: postgres volumes: - ~/.mydata/postgres:/var/lib/postgresql/data3.3 启动服务
执行部署命令:
docker-compose up -d监控启动日志:
docker-compose logs -f常见问题:首次启动时PostgreSQL容器可能因为权限问题启动失败,需要执行:
sudo chown -R 70:70 ~/.mydata/postgres docker-compose restart postgres
4. 平台初始化与验证
4.1 访问控制台
服务启动完成后(约3-5分钟),通过浏览器访问:
http://<设备IP>:8080默认登录凭证:
- 用户名:sysadmin@thingsboard.org
- 密码:sysadmin
4.2 系统性能优化
针对RK3588平台的特殊优化:
- 调整JVM参数(编辑docker-compose.yml):
tb: environment: JAVA_OPTS: "-Xms1g -Xmx2g -XX:+UseG1GC"- 限制容器资源使用:
deploy: resources: limits: cpus: '4' memory: 4G- 启用NPU加速(需RK3588专用驱动):
sudo apt install rockchip-npu-driver4.3 基础功能测试
创建设备:
- 进入"设备"页面
- 点击"+"添加设备
- 输入设备名称(如"RK3588-Test")
设备连接测试:
mosquitto_pub -d -h localhost -t "v1/devices/me/telemetry" -u "$ACCESS_TOKEN" -m '{"temperature":25}'- 仪表板创建:
- 进入"仪表板"页面
- 添加新的数字仪表
- 绑定设备遥测数据
5. 生产环境部署建议
5.1 安全加固措施
- 修改默认密码:
UPDATE tb_user SET password = '$2a$10$5JtbkwJspYQ6hZ6I2YbJV.9QfIyQz3U4Q3oKlpCCThZRMgTpEh/CG' WHERE email = 'sysadmin@thingsboard.org';- 启用HTTPS:
sudo apt install certbot sudo certbot certonly --standalone -d your-domain.com修改docker-compose.yml:
tb: environment: SSL_ENABLED: "true" SSL_CERT: /etc/letsencrypt/live/your-domain.com/fullchain.pem SSL_PRIVATE_KEY: /etc/letsencrypt/live/your-domain.com/privkey.pem volumes: - /etc/letsencrypt:/etc/letsencrypt5.2 数据持久化配置
- 创建数据备份目录:
mkdir -p ~/thingsboard/data/{postgres,tb-logs,tb-data}- 修改docker-compose.yml:
tb: volumes: - ~/thingsboard/data/tb-data:/data - ~/thingsboard/data/tb-logs:/var/log/thingsboard5.3 监控与维护
- 资源监控:
watch -n 1 'docker stats --no-stream'- 日志轮转配置:
sudo tee ~/thingsboard/data/tb-logs/logback.xml <<EOF <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/var/log/thingsboard/thingsboard.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>/var/log/thingsboard/thingsboard.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> </configuration> EOF6. 高级功能集成
6.1 RK3588 NPU加速
利用RK3588的NPU加速AI推理:
- 安装RKNN-Toolkit2:
pip3 install rknn-toolkit2 --extra-index-url https://pypi.rock-chips.com/simple- 创建ThingsBoard规则链处理AI结果:
{ "metadata": { "npuType": "rk3588", "modelPath": "/models/yolov5.rknn" }, "processor": { "type": "rknn", "config": { "inputFormat": "RGB", "inputSize": [640, 640] } } }6.2 边缘计算配置
配置ThingsBoard Edge版本:
- 修改docker-compose.yml:
tb-edge: image: thingsboard/tb-edge:4.3 platform: linux/arm64 ports: - "8080:8080" - "1883:1883"- 云端同步配置:
docker exec -it tb-edge /usr/share/thingsboard-edge/bin/install.sh --cloud-address=your-cloud-instance.com6.3 摄像头集成
利用RK3588的MIPI-CSI接口接入摄像头:
- 安装GStreamer:
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-tools- 创建视频流规则链:
{ "ruleChain": { "additionalInfo": { "description": "Camera Stream Processing" }, "firstRuleNodeId": null, "root": true, "debugMode": false, "configuration": { "videoCodec": "h264", "maxFps": 30, "resolution": "1280x720" } } }7. 性能调优实战
7.1 数据库优化
针对PostgreSQL的RK3588特定优化:
- 修改postgresql.conf:
docker exec -it thingsboard-postgres bash -c "echo ' max_connections = 50 shared_buffers = 1GB effective_cache_size = 3GB maintenance_work_mem = 256MB checkpoint_completion_target = 0.9 wal_buffers = 16MB default_statistics_target = 100 random_page_cost = 1.1 effective_io_concurrency = 200 work_mem = 8MB huge_pages = try min_wal_size = 1GB max_wal_size = 4GB ' > /var/lib/postgresql/data/postgresql.conf"- 重启数据库容器:
docker-compose restart postgres7.2 JVM调优
针对ARM架构的JVM参数优化:
tb: environment: JAVA_OPTS: " -Xms2g -Xmx3g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=30 -XX:G1HeapRegionSize=8M -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 "7.3 网络优化
配置TCP参数提升网络性能:
sudo sysctl -w net.core.rmem_max=2097152 sudo sysctl -w net.core.wmem_max=2097152 sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 2097152' sudo sysctl -w net.ipv4.tcp_wmem='4096 65536 2097152'8. 故障排查指南
8.1 常见问题解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 容器启动失败 | 镜像架构不匹配 | 确认使用linux/arm64平台标签 |
| 数据库连接超时 | PostgreSQL初始化慢 | 增加等待时间:depends_on中添加condition: service_healthy |
| 界面访问卡顿 | JVM内存不足 | 调整JAVA_OPTS中的Xmx参数 |
| MQTT连接失败 | 端口冲突 | 检查1883端口占用:`sudo netstat -tulnp |
| 规则链执行慢 | 单线程处理瓶颈 | 配置并行处理:TB_QUEUE_RULE_ENGINE_PACK_SIZE=100 |
8.2 日志分析技巧
- 查看实时日志:
docker-compose logs -f tb- 关键错误识别:
OutOfMemoryError:需要增加JVM内存Connection refused:检查依赖服务状态NoSuchMethodError:版本不兼容,检查组件版本
- 日志过滤:
docker-compose logs tb | grep -i error8.3 性能监控方案
- 安装监控组件:
docker run -d --name=grafana -p 3000:3000 grafana/grafana-arm64 docker run -d --name=prometheus -p 9090:9090 -v ~/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus-linux-arm64- 示例prometheus.yml配置:
global: scrape_interval: 15s scrape_configs: - job_name: 'thingsboard' static_configs: - targets: ['tb:9090'] - job_name: 'postgres' static_configs: - targets: ['postgres:9187']9. 扩展应用场景
9.1 工业物联网方案
利用RK3588的GPIO和CAN接口:
- 配置GPIO设备:
sudo apt install libgpiod-dev gpiodetect # 查看可用GPIO芯片- ThingsBoard设备配置:
{ "configuration": { "gpioChip": "gpiochip0", "pins": [ { "number": 17, "direction": "OUT", "name": "Relay Control" } ] } }9.2 智能视觉应用
结合RK3588 NPU运行YOLOv8:
- 转换模型为RKNN格式:
from rknn.api import RKNN rknn = RKNN() rknn.config(target_platform='rk3588') rknn.load_pytorch(model='yolov8n.pt') rknn.build(do_quantization=True) rknn.export_rknn('yolov8n.rknn')- 创建AI推理规则链:
{ "ruleChain": { "additionalInfo": { "npuType": "rk3588", "modelPath": "/models/yolov8n.rknn" }, "nodes": [ { "type": "rknn", "config": { "inputSize": [640, 640], "outputFilters": ["detections"] } } ] } }9.3 多协议网关实现
配置ThingsBoard作为协议转换中心:
- 安装Modbus插件:
docker exec -it tb bash -c "curl -L https://github.com/thingsboard/thingsboard-modbus/releases/download/v1.0/tb-modbus-1.0.jar -o /usr/share/thingsboard/plugins/tb-modbus.jar"- 配置OPC UA连接:
tb: environment: TB_QUEUE_TRANSPORT_OPCUA_ENABLED: "true" TB_OPCUA_SERVER_PORT: "4840"- 重启服务激活插件:
docker-compose restart tb10. 维护与升级策略
10.1 备份方案
- 数据库备份脚本:
docker exec thingsboard-postgres pg_dump -U postgres thingsboard > ~/backup/thingsboard_$(date +%F).sql- 配置备份:
tar czvf ~/backup/thingsboard_config_$(date +%F).tar.gz ~/thingsboard/data/tb-data- 设置定时任务:
(crontab -l ; echo "0 3 * * * /path/to/backup_script.sh") | crontab -10.2 版本升级路径
- 小版本升级(如4.3.0→4.3.1):
docker-compose pull docker-compose up -d- 大版本升级(如4.3→4.4):
# 先备份数据 docker-compose stop vim docker-compose.yml # 修改版本号 docker-compose pull docker-compose up -d10.3 长期运行建议
- 监控磁盘空间:
df -h | grep /dev/root- 日志轮转配置:
sudo tee /etc/logrotate.d/thingsboard <<EOF /var/lib/docker/containers/*/*.log { daily rotate 7 compress delaycompress missingok copytruncate } EOF- 定期维护任务:
docker system prune -f --filter "until=168h"