ThingsBoard 是一个开源的物联网(IoT)平台,专注于设备管理、数据网络、处置处罚和可视化,支持多种通信协议如 MQTT、CoAP 和 HTTP。它提供了强大的规则引擎和丰富的可视化工具,资助用户快速构建智能能源、车队跟踪、智能农业等物联网应用。基于 Java 和 TypeScript 开辟,ThingsBoard 拥有活跃的社区和具体的文档,采取 Apache 2.0 开源协议,得当各种规模的物联网项目,资助用户高效管理和分析设备数据。
一.ThingsBoard服务器部署要求:
1. 服务器要求
- 必须已部署运行ThingsBoard服务器
- 提供两种部署方案:
- 快速体验方案:使用[官方Live Demo服务器](https://demo.thingsboard.io/)
- 本地部署方案:根据操作系统选择安装方式
2. 操作系统适配
- Windows系统:需依照[Windows专用安装指南](https://thingsboard.io/docs/user-guide/install/windows/)
- Linux系统:推荐使用Docker部署
项目地址
https://github.com/thingsboard/thingsboard?tab=readme-ov-file
文档:ThingsBoard Community Edition | ThingsBoard Community Edition
3.本项目方案
- -选择本地部署方案,Linux系统,使用Docker部署
- -使用内网设备部署ThingsBoard服务,然后利用内网穿透技能,将本地服务利用资源有限的服务器,举行端口转发袒露于公网
-
二.实施步骤
1.Docker部署
1.1实现下令参考链接
Ubuntu 快速安装docker和docker compose
1.2注意事项
如今放开 docker 的下载,脚本安装,文档服务,官网。但是镜像下载肯定还是要用镜像站,通常情况下,要先配置镜像源,再实行拉取镜像的操作。
1.2.1配置镜像源
- 若没有配置镜像源,Docker 会默认从 Docker Hub 拉取镜像,在网络状态不佳时,拉取速度 可能较慢。
- 通过编辑 daemon.json 文件,添加镜像源地址,让 Docker 在后续拉取镜像时能从这些镜像源获取数据,进而加快拉取速度。
- 具体操作步骤
1.配置 Docker 镜像源
如果你想使用这些镜像源,需要先将它们配置到 Docker 的配置文件中。以下是配置步骤:
- # 创建或编辑 Docker 配置文件
- sudo mkdir -p /etc/docker
- sudo tee /etc/docker/daemon.json <<EOF
- {
- "registry-mirrors": [
- "https://docker.1ms.run",
- "https://docker.m.daocloud.io",
- "https://a.ussh.net",
- "https://dockerproxy.net"
- ]
- }
- EOF
- # 重新加载系统服务配置
- sudo systemctl daemon-reload
- # 重启 Docker 服务
- sudo systemctl restart docker
复制代码 1.2.2实验拉取 Thingsboard 镜像
- 配置好镜像源后,你可以实验从这些镜像源拉取 Thingsboard 镜像。实行以下下令.
- docker pull thingsboard/tb-postgres:latest
复制代码
- 如果镜像存在于配置的镜像源中,Docker 会从此中一个镜像源下载该镜像;如果全部镜像源都没有该镜像,Docker 会实验从默认的 DockerHub 拉取。
- 拉取乐成下载镜像页面
2. 部署运行ThingsBoard服务
2.1Linux+Docker安装流程
- # 创建数据存储目录
- mkdir -p ~/.mytb-data
- # 设置目录权限(用户组ID 799是ThingsBoard的默认用户)
- sudo chown -R 799:799 ~/.mytb-data
复制代码
- # 创建日志存储目录
- mkdir -p ~/.mytb-logs
- # 设置相同权限
- sudo chown -R 799:799 ~/.mytb-logs
复制代码
- 步骤3:启动Docker容器
- docker run -it \
- -p 8080:9090 \ # Web访问端口映射
- -p 7070:7070 \ # HTTP API端口
- -p 1883:1883 \ # MQTT协议端口
- -p 5683-5688:5683-5688/udp \ # CoAP协议端口范围
- -v ~/.mytb-data:/data \ # 数据持久化挂载
- -v ~/.mytb-logs:/var/log/thingsboard \ # 日志持久化
- --name mytb \ # 容器命名
- --restart always \ # 自动重启策略
- thingsboard/tb-postgres # 使用PostgreSQL版本的镜像
复制代码
3.内网穿透配置
3.1ThingsBoard端口映射关系
| 容器端口 | 宿主机端口 | 协议 | 用途 |
| 9090 | 8080 | TCP | Web界面访问 |
| 7070 | 7070 | TCP | HTTP API调用 |
| 1883 | 1883 | TCP | MQTT协议通信 |
| 5683-5688| 5683-5688 | UDP | CoAP协议通信 |
3.2内网穿透场景下的端口配置计谋
3.2.1 端口映射原则
-公网服务器端口:需在公网服务器防火墙开放以下端口
-内网穿透工具:需将公网服务器端口与本地端口建立映射关系
MQTT(1883)/CoAP(7070)端口保持穿透一致的核心原因:
- 协议规范要求:IANA分配的默认端口
- 客户端兼容性:避免修改设备端毗连配置
- 防火墙计谋:降低端口放行复杂度
- 服务发现机制:符合行业标准端口约定
3.2.2端口对照表
说明,HTTP服务无域名配置
| 服务类型 | 内网端口 | 公网端口 | 协议 | 备注 |
| HTTP | 8080 | 18080 | TCP | 公网端口选大数18080,避免与系统服务冲突 |
| MQTT | 1883 | 1883 | TCP | 需确认公网端口未被占用 |
| CoAP | 7070 | 7070 | UDP | 建议配置端口速率限定 |
| LwM2M | 5683-5688| 5683-5688| UDP | 需逐端口创建映射 |
3.2.3在nps的web管理网页创建客户以及穿透隧道
- 参考上篇文章,访问Web管理界面 欣赏器访问 http://服务器IP:8080,使用设置的账号密码登录。
- 创建客户端,点新增,备注可选,记取密钥,反面用来验证客户端
编辑 conf/npc.conf:
- server_addr=服务器IP:8024 # 服务端地址和端口
- conn_type=tcp # 连接协议
- vkey=客户端唯一密钥 # 在Web界面创建客户端时生成
复制代码
- 创建隧道 按照上面的端口对照表将本地端口(Docker映射)端口映射到公网服务器端口
示例,| HTTP | 8080 | 18080 | TCP | 公网端口选大数18080,避免与系统服务冲突 |
- 关于| LwM2M | 5683-5688| 需逐端口创建映射 |的解决方案 LwM2M端口组批量创建脚本
- #!/bin/bash
- for port in {5683..5688}; do
- echo "[lwm2m-$port]
- mode = udp
- target_addr = 127.0.0.1:$port
- server_port = $port
- rate_limit = 5MB" >> /etc/npc/conf/npc.conf
- done
复制代码
- 说明:脚本要解决的核心痛点——通过直接修改 `npc` 的配置文件批量创建端口映射规则,避免在网页管理界面手动逐个添加
4. 服务验证方法:
- Web控制台:欣赏器访问 `http://公网IP:80` 或绑定域名
- 关于不绑定域名方案
HTTP服务无域名访问实现
默认演示账户,注意访问该页面需要确保nps客户端在线。
- 用户名: `tenant@thingsboard.org`
- 密码: `tenant`
- 其他演示账户详见[官方账户说明](https://thingsboard.io/docs/getting-started-guide/helloworld/#demo-account)
补充之前配置,不绑定域名方案在NPS中实现方式:端口映射模式
mode = tcp
target_addr = 127.0.0.1:8080
server_port = 18080 # 公网访问端口
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |