Container - ThingsBoard MQTT/HTTP server
本页介绍 MikroTik RouterOS 的容器功能,使用户可以直接在路由器上运行 ThingsBoard MQTT/HTTP IoT 平台之类的服务器。它说明如何配置容器模式、网络接口(veth 和 bridge)、传出流量的 NAT 规则以及存储要求。本指南强调 RAM/磁盘空间的考虑,并提供了部署 ThingsBoard 的示例,使用
容器 - ThingsBoard MQTT/HTTP 服务器
容器功能引入 RouterOS,使得在路由器内运行各种任务所需的各种服务器成为可能。这对于希望减少网络中设备数量的人尤其相关。与其在单独的设备/机器上运行服务器,何不在路由器内部运行呢?
许多用户需要一个能够收集数据、存储数据并以易于理解的方式显示数据的服务器。这正是 ThingsBoard 这样的平台可以发挥作用的地方。
它主要定位为 IoT 平台,你可以在链接中找到他们演示的各种用例。
从 RouterOS 用户的角度来看,最吸引人的部分是它可以作为 MQTT 服务器(MQTT broker)或 HTTP 服务器使用,这意味着你可以使用 MQTT 发布或 HTTP post来发布数据。你可以通过此处的链接找到 ThingsBoard MQTT API 指南,并通过此处的链接找到 HTTP API 指南。
简而言之,你可以利用脚本收集 RouterOS 统计信息(如运行时间、GPS 坐标、数据包统计,以及几乎所有你打印到终端的内容),然后将这些信息存储到变量中,并用它们构建出一条 JSON 消息。接着你可以通过 scheduler(在你需要时运行此脚本)使用 MQTT 或 HTTP post 将此消息发送到 ThingsBoard。你可以在本指南中找到实现此功能的基本脚本示例。
ThingsBoard 将借助 widgets 存储并显示数据,这些 widget 可帮助你设置以图表、表格、地图和其他方式可视化数据的仪表板。
例如,下面提到了 2 种可用的 ThingsBoard 实例选项,每种使用不同的数据库:
你可以在 ThingsBoard/docker 文档中找到更多信息。
在我们的示例中,我们将展示 tb-postgres —— 一个用于测试目的的、带 PostgreSQL 数据库的 ThingsBoard 单实例。
本指南将展示 "in-memory" 队列类型的服务,但对于生产环境,请考虑使用其他服务类型。你可以在此处找到更多信息。
概要
子菜单: /container
note: 需要 container 软件包。
低于 v7.8 的 RouterOS 版本将无法运行此场景。
在继续配置之前,请务必研究我们的容器指南。请务必查看免责声明和要求部分,了解所有风险以及你可能需要采取的必要步骤。
在本示例中,我们将在 Cloud Hosted Router, CHR 上运行它。
在本指南发布时,thingsboard/tb-postgres 镜像仅适用于 linux/arm64 和 linux/amd64 操作系统/架构。这意味着你无法在我们的 arm32 位架构 RouterOS 设备上运行此场景。
有几个参数需要牢记:
- 你需要明白这是一个服务器,你需要为存储在那里的数据和镜像本身准备额外空间。在我们的测试中,8 GB 磁盘空间已经足够,但是!对于真实应用,你可能需要考虑增加更多空间,特别是如果你计划运行更多容器。请记住 → 留有储备可能更好。
- 与磁盘空间一样,RAM 内存也很重要。根据 ThingsBoard 文档,在使用带 PostgreSQL 数据库的 ThingsBoard 单实例时,建议至少分配 1GB RAM 并使用最低负载(每秒几条消息)。推荐 2-4GB RAM。换句话说,如果你想在 RouterBoard 设备上运行它,请理解你可能无法在 RAM 少于 1 GB 的设备上实现。这就是为什么 → 考虑使用内存更充裕的设备。
转到提示和技巧部分,了解如何限制 RAM。
配置
容器模式
启用容器模式:
/system/device-mode/update container=yes
如果在 X86 上使用容器,你需要通过按下复位按钮或冷重启来确认 device-mode。
网络
为容器添加 veth 接口
/interface/veth/add name=veth1 address=172.18.0.2/24 gateway=172.18.0.1
为容器创建网桥,为其分配 IP 网络,并将 veth 添加到网桥
/interface/bridge/add name=dockertb
/ip/address/add address=172.18.0.1/24 interface=dockertb
/interface/bridge/port/add bridge=dockertb interface=veth1
为传出流量设置 NAT
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.18.0.0/24
转发 TCP 9090 端口用于 HTTP 管理(根据 ThingsBoard 文档的默认 HTTP 端口)
警告
我们建议仅在本地测试或通过 VPN 访问时(当你确定本地网络安全时)使用 HTTP 访问。
当你希望从互联网(从公共网络/WAN)访问容器 WEB 管理时,请转而考虑使用 HTTPS。
/ip/firewall/nat/add action=dst-nat chain=dstnat dst-address=192.168.88.1 dst-port=9090 protocol=tcp to-addresses=172.18.0.2 to-ports=9090
在上面 DNAT(dst-nat)规则中显示的 dst-address 字段里,我们使用设备的本地 IP 地址。首先,使用本地 IP(本地访问)来设置好一切并确认一切正常工作。
信息
在完成本指南中展示的其余步骤并验证 ThingsBoard 管理门户可在本地正常工作之后 → 进一步加固设置:
- (a) 确保所有默认 ThingsBoard 用户凭据已被更改/移除,并已实施强密码(参考 ThingsBoard 文档);
- (b) 启用 HTTPS(步骤将在本指南后续说明);
- (c) 最好将 HTTPS 端口更改为非标准端口(参考 ThingsBoard 文档)。
只有在你提高了安全性之后,才可以考虑启用来自 WAN 的远程访问(方法是使用你的公网 IP 地址替换上面示例中使用的本地 IP 填入
dst-address字段)。此外,为进一步提高安全性,请使用src-address或src-address-list参数,在其中输入你信任的公网源 IP 地址(一个已知/受信任地址的列表,例如属于你分支机构的地址,你也希望从那里访问服务器)。请理解,只有你自己对安全负责。如果你把门敞开着,就可能有人利用它。在设置此类场景时,你需要具备网络知识并理解相关风险。 转发 TCP 1883 端口用于非 SSL MQTT(根据 ThingsBoard 文档使用的默认 MQTT 端口)
警告
我们建议仅在本地测试或通过 VPN(当你确定本地网络安全时)使用非 SSL MQTT(TCP 1883)通信。
当涉及从互联网(从公共网络)访问时,请考虑使用 SSL MQTT(TCP 端口 8883),而不是非 SSL MQTT(TCP 端口 1883)用于真实应用。如果你使用非 SSL MQTT,客户端(MQTT 发布者)与服务器(MQTT broker)之间的通信很容易被嗅探/数据包捕获,从而泄露认证数据(如 client-id、用户名和密码)。
/ip/firewall/nat/add action=dst-nat chain=dstnat dst-address=192.168.88.1 dst-port=1883 protocol=tcp to-addresses=172.18.0.2 to-ports=1883
与 HTTP 访问一样,在上面 DNAT(dst-nat)规则中显示的 dst-address 字段里,我们使用设备的本地 IP 地址。首先,使用本地 IP(本地访问)来设置好一切并确认一切正常工作。
信息
在完成本指南中展示的其余步骤并验证 ThingsBoard 非 SSL MQTT 通信可在本地正常工作之后 → 进一步加固设置:
- (a) 考虑从 ThingsBoard 安装中移除模板设备;
- (b) 启用 SSL MQTT(步骤将在本指南后续说明);
- (c) 最好将 MQTT 端口更改为非标准端口(参考 ThingsBoard 文档)。
当你启用 SSL MQTT 时,可以考虑从 WAN 打开 TCP 8883(这是默认的 SSL MQTT 端口)(方法是用你的公网 IP 地址替换本地 IP 填入
dst-address字段,并将dst-port和to-ports从 1883 改为 8883)。此外,为进一步提高安全性,请使用src-address或src-address-list参数,在其中设置你信任的公网 IP 地址列表。这样,只有配置的受信任 IP 才能与 ThingsBoard broker 建立 MQTT 连接。
环境变量和挂载
查看 docker-thingsboard 文档,了解需要添加的确切挂载和变量。
环境变量
/container/envs/add list=tb_envs key=TB_QUEUE_TYPE value="in-memory"
挂载
/container/mounts/add list=mytb-data src=tb/mytb-data dst=/data
/container/mounts/add list=mytb-logs src=tb/mytb-logs dst=/var/log/thingsboard
获取镜像
为简化配置,我们将从外部镜像库获取镜像,但你也可以通过 .tar 文件导入。
请确保你已相应设置 "Registry URL"、限制 RAM 使用量(如有必要),并为镜像设置一个目录。
/container/config/set registry-url=https://registry-1.docker.io tmpdir=pull ram-high=2048.0MiB
拉取镜像:
/container/add remote-image=thingsboard/tb-postgres:latest interface=veth1 root-dir=ThingsBoard mountlists=mytb-data,mytb-logs envlists=tb_envs logging=yes
运行命令后,RouterOS 应开始 "extracting"(解压)软件包。检查 "File System" 中新建的文件夹,并使用命令 /container/print 监控容器状态。
启动容器
在你确认容器已添加,并且使用 /container/print 后状态已变为 status=stopped 之后,即可启动它:
/container/start 0
等待几分钟,让容器完全加载。
验证
管理访问
容器启动并安装完成后,使用任意浏览器访问它,方法是转到 → http://192.168.88.1:9090(其中 IP 地址是 DNAT 规则中使用的地址):

默认凭据为(用户名/密码):
- System Administrator:sysadmin@thingsboard.org / sysadmin
- Tenant Administrator:tenant@thingsboard.org / tenant
登录提示应确认服务器正在运行。
MQTT 测试
使用 tenant 登录并创建一个新设备。转到 "Devices" 菜单,点击 "+"(Add Device)按钮,然后选择 "Add new device" 选项:

按你的喜好为其命名,然后点击 "Add":

通过点击你刚创建的设备并选择 "Manage credentials" 设置来查看你的设备访问令牌(复制生成的访问令牌或输入你自己的 → "YOUR_TOKEN"):

完成这些步骤后,转到 RouterOS 设置(回到 CHR 设置)并创建一个新的 MQTT broker(务必确保你已安装 IoT 软件包,否则你将没有此菜单):
/iot/mqtt/brokers/add name=tb address=172.18.0.2 port=1883 username=YOUR_TOKEN
以 JSON 格式发布一条静态测试 MQTT 消息:
/iot/mqtt/publish broker="tb" topic="v1/devices/me/telemetry" message="{\"test\":\"123\"}"
确认消息已被发布:

启用 HTTPS 和 SSL MQTT
默认情况下使用 HTTP 和 MQTT 协议。正如前面在 "Networking" 部分提到的,使用非 SSL HTTP 和非 SSL MQTT 不太安全(除非在配置良好的防火墙/受限访问的严密保护网络内使用),我们建议启用 HTTPS 和 SSL MQTT。
请查看 ThingsBoard 文档以获取更多信息 → HTTP over SSL 和 MQTT over SSL 指南。
首先,没有证书就没有 SSL,需要制作(或购买)一个。
简而言之,本节将演示如何为 HTTPS 和 SSL MQTT 生成自签名证书。然后,你需要将它们上传到 ThingsBoard 安装中的正确文件夹,并相应地修改 ThingsBoard 配置文件。
在我们的指南中,我们将使用 RouterOS 生成这两个证书(但你也可以使用 OpenSSL 或你想要的任何其他工具)。
创建证书
为 HTTPS 创建证书:
/certificate/add name=TBhttps common-name=172.18.0.2
/certificate/sign TBhttps
为 MQTT 创建证书:
/certificate/add name=TBmqtt common-name=172.18.0.2
/certificate/sign TBmqtt
使用 /certificate/print 命令确认它们已被添加:
[admin@MikroTik] > /certificate/print
Flags: K - PRIVATE-KEY; A - AUTHORITY; T - TRUSTED
Columns: NAME, COMMON-NAME, FINGERPRINT
# NAME COMMON-NAME FINGERPRINT
0 KAT TBhttps 172.18.0.2 863f4547c74ce3ec70c3e82172502711517b52bbc055d18c24ba4aafec46152c
1 KAT TBmqtt 172.18.0.2 ebf3ff5d03ed4cc73546e058da9bc414cdaf24ce45da29b203348045fbbd21ae
使用 PKCS12 格式导出证书并为其设置密码/口令:
/certificate/export-certificate file-name=keystore export-passphrase=thingsboard_cert_password type=pkcs12 numbers=0
/certificate/export-certificate file-name=mqttserver export-passphrase=thingsboard_mqttcert_password type=pkcs12 numbers=1
使用你自己的 export-passphrase 并记住它。
上述命令的输出将创建证书文件 keystore.p12 和 mqttserver.p12,你可以从 "File List" 菜单下载它们:
[admin@MikroTik] > /file/print
Columns: NAME, TYPE, SIZE, CREATION-TIME
# NAME TYPE SIZE CREATION-TIME
0 tb/mytb-data container store 2023-01-19 13:43:16
1 container-log.0.txt .txt file 2240.5KiB 2023-01-27 15:37:41
2 skins directory 2023-01-18 15:12:22
3 tb/mytb-logs container store 2023-01-27 12:24:30
4 pull directory 2023-01-19 13:41:01
5 pub directory 2023-01-18 16:15:29
6 tb directory 2023-01-23 15:46:39
7 tb/data container store 2023-01-18 16:50:08
8 tb/logs container store 2023-01-18 16:50:08
9 mqttserver.p12 .p12 file 2438 2023-01-27 15:36:26
10 keystore.p12 .p12 file 2448 2023-01-27 15:08:07
11 ThingsBoard container store 2023-01-19 13:40:50
将这两个文件从路由器下载到你 PC 上的任意目录。例如,我们将它们下载到了 C:\Users\Admin\Desktop\ThingsBoard 文件夹。
下载 ThingsBoard 的配置文件
打开你的命令终端(Windows 用户以管理员身份打开 "CMD",Linux 用户打开 "Linux Shell 或命令终端"),并导航到证书所在的目录:
C:\Windows\System32>cd c:\Users\Admin\Desktop\ThingsBoard
C:\Users\Admin\Desktop\ThingsBoard>dir
Directory of C:\Users\Admin\Desktop\ThingsBoard
27.01.2023 15:36 <DIR> .
27.01.2023 15:36 <DIR> ..
27.01.2023 15:09 2 448 keystore.p12
27.01.2023 15:36 2 434 mqttserver.p12
2 File(s) 4 882 bytes
2 Dir(s) 51 380 154 368 bytes free
在此目录下,你需要通过 SFTP 连接到路由器的 IP(这允许你使用 SSH 协议传输文件,因此你需要确保事先已启用 SSH 服务):
c:\Users\Admin\Desktop\ThingsBoard>sftp admin@192.168.88.1
The authenticity of host '192.168.88.1 (192.168.88.1)' can't be established.
RSA key fingerprint is SHA256:/WmmZErqWL51SOlS4EaGvSQ0i4HPnSIHCEjnc8AmP2c.
Are you sure you want to continue connecting (yes/no/[fingerprint])?yes
admin@192.168.88.1's password:
Connected to 192.168.88.1.
sftp>
在容器运行时,转到 ThingsBoard 配置文件所在文件夹(使用 dir 或 ls 命令查看当前所在文件夹的内容,使用 cd 命令转到你选择的文件夹)。默认情况下,它应该是包含 "thingsboard.yml" 配置文件的文件夹。在我们的示例中,我们可以在以下位置找到它:
sftp> cd ThingsBoard/usr/share/thingsboard/conf
sftp> dir
banner.txt i18n logback.xml templates thingsboard.conf thingsboard.yml
使用 get 命令下载 "thingsboard.yml" 配置。这会将默认的 ThingsBoard 配置文件下载到你的机器上(下载到你发起 SFTP 的目录):
sftp> get thingsboard.yml
Fetching /ThingsBoard/usr/share/thingsboard/conf/thingsboard.yml to thingsboard.yml
/ThingsBoard/usr/share/thingsboard/conf/thingsboard.yml 100% 67KB 2.0MB/s 00:00
sftp> quit
c:\Users\Admin\Desktop\ThingsBoard>dir
Directory of c:\Users\Admin\Desktop\ThingsBoard
30.01.2023 10:59 <DIR> .
30.01.2023 10:59 <DIR> ..
27.01.2023 15:09 2 448 keystore.p12
27.01.2023 15:36 2 434 mqttserver.p12
30.01.2023 10:59 68 846 thingsboard.yml
3 File(s) 73 728 bytes
2 Dir(s) 50 901 626 880 bytes free
修改 ThingsBoard 的设置
通过你常用的文本编辑器(Notepad 或其他)打开 "thingsboard.yml",并修改几行。你可以备份此文件并用不同的名称保存,以便在配置错误时保留一份默认设置副本。
HTTPS 相关设置
- 启用 SSL → 将 "SSL_ENABLED:false" 改为 "SSL_ENABLED:true"。
- 更改凭据类型 → 从 "SSL_CREDENTIALS_TYPE:PEM" 改为 "SSL_CREDENTIALS_TYPE:KEYSTORE"。
- 更改路径 → 从 "SSL_KEY_STORE:classpath:keystore/keystore.p12" 改为 "SSL_KEY_STORE:keystore.p12"(可选)。
- 禁用 key alias 设置 → 将其注释掉 → 只需在
key_alias: "${SSL_KEY_ALIAS:tomcat}"行前放置 "#" 符号。 - 输入你在 RouterOS 中使用的自己的证书密码 → 从 "SSL_KEY_STORE_PASSWORD:thingsboard" 改为 "SSL_KEY_STORE_PASSWORD:thingsboard_cert_password",并从 "SSL_KEY_PASSWORD:thingsboard" 改为 "SSL_KEY_PASSWORD:thingsboard_cert_password"。
ssl:
# Enable/disable SSL support
enabled: "${SSL_ENABLED:true}"
# Server SSL credentials
credentials:
# Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
type: "${SSL_CREDENTIALS_TYPE:KEYSTORE}"
# Keystore server credentials
keystore:
# Type of the key store (JKS or PKCS12)
type: "${SSL_KEY_STORE_TYPE:PKCS12}"
# Path to the key store that holds the SSL certificate
store_file: "${SSL_KEY_STORE:keystore.p12}"
# Password used to access the key store
store_password: "${SSL_KEY_STORE_PASSWORD:thingsboard_cert_password}"
# Key alias
#key_alias: "${SSL_KEY_ALIAS:tomcat}"
# Password used to access the key
key_password: "${SSL_KEY_PASSWORD:thingsboard_cert_password}"
MQTT 相关设置
- 启用 SSL → 将 "MQTT_SSL_ENABLED:false" 改为 "MQTT_SSL_ENABLED:true";
- 更改凭据类型 → 从 "MQTT_SSL_CREDENTIALS_TYPE:PEM" 改为 "MQTT_SSL_CREDENTIALS_TYPE:KEYSTORE";
- 更改密钥类型 → 从 "MQTT_SSL_KEY_STORE_TYPE:JKS" 改为 "MQTT_SSL_KEY_STORE_TYPE:PKCS12";
- 更改路径(扩展名)→ 从 "MQTT_SSL_KEY_STORE:mqttserver**.jks**" 改为 "MQTT_SSL_KEY_STORE:mqttserver**.p12**"。
- 禁用 key alias 设置 → 将其注释掉 → 只需在
key_alias: "${MQTT_SSL_KEY_ALIAS:}"行前放置 "#" 符号; - 输入你在 RouterOS 中使用的自己的证书密码 → 从 "MQTT_SSL_KEY_STORE_PASSWORD:server_ks_password" 改为 "MQTT_SSL_KEY_STORE_PASSWORD:thingsboard_mqttcert_password",并从 "MQTT_SSL_KEY_PASSWORD:server_key_password" 改为 "MQTT_SSL_KEY_PASSWORD:thingsboard_mqttcert_password"。
ssl:
# Enable/disable SSL support
enabled: "${MQTT_SSL_ENABLED:true}"
# Server SSL credentials
credentials:
# Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
type: "${MQTT_SSL_CREDENTIALS_TYPE:KEYSTORE}"
# Keystore server credentials
keystore:
# Type of the key store (JKS or PKCS12)
type: "${MQTT_SSL_KEY_STORE_TYPE:PKCS12}"
# Path to the key store that holds the SSL certificate
store_file: "${MQTT_SSL_KEY_STORE:mqttserver.p12}"
# Password used to access the key store
store_password: "${MQTT_SSL_KEY_STORE_PASSWORD:thingsboard_mqttcert_password}"
# Optional alias of the private key; If not set, the platform will load the first private key from the keystore;
#key_alias: "${MQTT_SSL_KEY_ALIAS:}"
# Optional password to access the private key. If not set, the platform will attempt to load the private keys that are not protected with the password;
key_password: "${MQTT_SSL_KEY_PASSWORD:thingsboard_mqttcert_password}"
信息
其余设置保持默认值。除非你知道自己在做什么,否则不要删除/更改上面示例中未显示的行。 将更改应用到 "thingsboard.yml" 文件(编辑后重新保存它)。
上传修改后的 ThingsBoard 配置文件
剩下要做的就是用一个修改后的文件覆盖当前配置文件,并上传两个证书。
再次确保你的终端指向正确的文件夹(3 个文件所在的位置 → 两个证书和一个修改后的 "thingsboard.yml" 文件),然后从那里 SFTP 进入容器的配置文件目录:
c:\Users\Admin\Desktop\ThingsBoard>dir
Directory of c:\Users\Admin\Desktop\ThingsBoard
30.01.2023 10:59 <DIR> .
30.01.2023 10:59 <DIR> ..
27.01.2023 15:09 2 448 keystore.p12
27.01.2023 15:36 2 434 mqttserver.p12
30.01.2023 10:59 68 846 thingsboard.yml
3 File(s) 73 728 bytes
2 Dir(s) 50 901 626 880 bytes free
c:\Users\Admin\Desktop\ThingsBoard>sftp admin@192.168.88.1
admin@192.168.88.1's password:
Connected to 192.168.88.1.
sftp> cd ThingsBoard/usr/share/thingsboard/conf
sftp> dir
banner.txt i18n logback.xml templates thingsboard.conf thingsboard.yml
使用 put 命令上传这些文件:
sftp> put thingsboard.yml
Uploading thingsboard.yml to /ThingsBoard/usr/share/thingsboard/conf/thingsboard.yml
thingsboard.yml 100% 67KB 2.2MB/s 00:00
sftp> put keystore.p12
Uploading keystore.p12 to /ThingsBoard/usr/share/thingsboard/conf/keystore.p12
keystore.p12 100% 2448 1.2MB/s 00:00
sftp> put mqttserver.p12
Uploading mqttserver.p12 to /ThingsBoard/usr/share/thingsboard/conf/mqttserver.p12
mqttserver.p12 100% 2434 608.5KB/s 00:00
sftp> dir
banner.txt i18n keystore.p12 logback.xml mqttserver.p12 templates
thingsboard.conf thingsboard.yml
重启容器:
[admin@MikroTik] > /container/stop 0
[admin@MikroTik] > /container/start 0
请确保等待容器停止(使用 /container/print 命令后应显示 status=stopped),然后再重新启动它。
确认 HTTPS 访问
现在,你应该能够访问 https://your_IP:9090(其中 IP 地址是 DNAT 规则中使用的地址):

信息
由于我们使用的是不是由受信任机构签发的自签名证书,可能会出现提示连接不安全的错误,但你可以通过浏览器查看证书(确认就是这一个),接受风险并继续。
确认 SSL MQTT 连接
信息
别忘了修改 "Networking" 部分中显示的端口转发规则,将
dst-port和to-ports从 1883(标准非 SSL MQTT 端口)改为 8883(SSL MQTT 端口)。 在本示例中,我们将测试单向 SSL 通信访问令牌场景。
使用运行容器的设备进行测试
信息
MQTT 证书应该已经安装到设备的系统中(因为它是生成该证书的设备)。 添加 MQTT broker:
/iot/mqtt/brokers/add name=tbssl address=172.18.0.2 port=8883 username=YOUR_TOKEN ssl=yes
以 JSON 格式发布一条静态测试 MQTT 消息:
/iot/mqtt/publish broker="tbssl" topic="v1/devices/me/telemetry" message="{\"test\":\"123\"}"
确认它已被 MQTT broker 接收:

使用另一台设备进行测试
当你有两台 RouterOS 设备,一台运行容器(在我们的示例中,它也是生成证书的同一台设备),另一台你希望从中测试 MQTT 连接(比如说,一台 LTAP 或任何其他已安装 IoT 软件包的 RouterOS 设备)→ 你需要将证书导入到第二台设备。
将导出的证书(mqttserver.p12)拖放到设备的 "File List" 中:
[admin@LTAP] > /file/print
Columns: NAME, TYPE, SIZE, CREATION-TIME
# NAME TYPE SIZE CREATION-TIME
0 mqttserver.p12 .p12 file 2438 2023-01-30 13:28:11
1 flash disk 2021-07-06 14:51:53
2 flash/pub directory 2021-07-06 14:51:53
3 flash/skins directory 1970-01-01 02:00:07
[admin@LTAP] >
导入证书:
[admin@LTAP] > /certificate/import file-name=mqttserver.p12 passphrase=thingsboard_mqttcert_password
添加 MQTT broker,其中地址是 ThingsBoard 容器路由器上 TCP 8883 端口转发规则中使用的 dst-address IP 地址:
/iot/mqtt/brokers/add name=tbssl address=192.168.88.1 port=8883 username=YOUR_TOKEN ssl=yes
以 JSON 格式发布一条静态测试 MQTT 消息:
/iot/mqtt/publish broker="tbssl" topic="v1/devices/me/telemetry" message="{\"test\":\"123\"}"
并确认 broker 已收到它 → 在 ThingsBoard 的 "Latest Telemetry" 部分下。