使用内网穿透工具NPS,docker容器搭建ThingsBoard服务器

打印 上一主题 下一主题

主题 1994|帖子 1994|积分 5982

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 的配置文件中。以下是配置步骤:
  1. # 创建或编辑 Docker 配置文件
  2. sudo mkdir -p /etc/docker
  3. sudo tee /etc/docker/daemon.json <<EOF
  4. {
  5.     "registry-mirrors": [
  6.         "https://docker.1ms.run",
  7.         "https://docker.m.daocloud.io",
  8.         "https://a.ussh.net",
  9.         "https://dockerproxy.net"
  10.     ]
  11. }
  12. EOF
  13. # 重新加载系统服务配置
  14. sudo systemctl daemon-reload
  15. # 重启 Docker 服务
  16. sudo systemctl restart docker
复制代码
1.2.2实验拉取 Thingsboard 镜像



  • 配置好镜像源后,你可以实验从这些镜像源拉取 Thingsboard 镜像。实行以下下令.
  1. docker pull thingsboard/tb-postgres:latest
复制代码


  • 如果镜像存在于配置的镜像源中,Docker 会从此中一个镜像源下载该镜像;如果全部镜像源都没有该镜像,Docker 会实验从默认的 DockerHub 拉取。
  • 拉取乐成下载镜像页面

2. 部署运行ThingsBoard服务

2.1Linux+Docker安装流程



  • 步骤1:创建数据目次
  1. # 创建数据存储目录
  2. mkdir -p ~/.mytb-data
  3. # 设置目录权限(用户组ID 799是ThingsBoard的默认用户)
  4. sudo chown -R 799:799 ~/.mytb-data
复制代码


  • 步骤2:创建日志目次
  1. # 创建日志存储目录
  2. mkdir -p ~/.mytb-logs
  3. # 设置相同权限
  4. sudo chown -R 799:799 ~/.mytb-logs
复制代码


  • 步骤3:启动Docker容器
    1. docker run -it \
    2.   -p 8080:9090 \ # Web访问端口映射
    3.   -p 7070:7070 \ # HTTP API端口
    4.   -p 1883:1883 \ # MQTT协议端口
    5.   -p 5683-5688:5683-5688/udp \ # CoAP协议端口范围
    6.   -v ~/.mytb-data:/data \ # 数据持久化挂载
    7.   -v ~/.mytb-logs:/var/log/thingsboard \ # 日志持久化
    8.   --name mytb \ # 容器命名
    9.   --restart always \ # 自动重启策略
    10.   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:
  1. server_addr=服务器IP:8024   # 服务端地址和端口
  2. conn_type=tcp               # 连接协议
  3. vkey=客户端唯一密钥          # 在Web界面创建客户端时生成
复制代码


  • 创建隧道 按照上面的端口对照表将本地端口(Docker映射)端口映射到公网服务器端口

    示例,| HTTP | 8080 | 18080 | TCP | 公网端口选大数18080,避免与系统服务冲突 |



  • 其他端口也一样穿透



  • 关于| LwM2M | 5683-5688| 需逐端口创建映射 |的解决方案 LwM2M端口组批量创建脚本
     
    1. #!/bin/bash
    2. for port in {5683..5688}; do
    3.   echo "[lwm2m-$port]
    4.   mode = udp
    5.   target_addr = 127.0.0.1:$port
    6.   server_port = $port
    7.   rate_limit = 5MB" >> /etc/npc/conf/npc.conf
    8. 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

去皮卡多

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表