通过VNC远程桌面树莓派并打开树莓派终端

1. 安装docker容器并部署EMQX

sudo su  //切换为root权限

apt-get update  //更新软件版本

curl -sSL https://get.docker.com | sh   //下载docker脚本

docker

docker pull emqx/emqx   //在docker里创建名为emqx的容器

docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx/emqx:latest    //运行emqx

docker start emqx   //启动emqx服务

docker stop emqx   //关闭emqx服务

2. 登录EMQX控制台

<你的树莓派IP地址>:18083

//例如树莓派IP地址是192.168.137.3

//18083是控制台端口

//则访问EMQX控制台的地址是   192.168.137.3:18083
2.1 控制台默认账户:admin
2.2 控制台默认密码:public

3. 访问局限

3.1 此时笔记本和树莓派是连接在同一局域网里的,这是可以实现局域网连接的,但如果第三个设
备不在同一个局域网下时,浏览器键入192.168.137.3:18083是无法访问的。

>>>如何解决在公网下访问局域网下的mqtt服务器呢?<<<

4. 优化连接(通过内网穿透工具来实现公网访问)

4.1 已知的内网穿透工具
4.1.1  cpolar: 免费但公网地址是随机的,影响后续访问
4.1.2   花生壳:貌似收费(不是很了解)
4.1.3    FRP: 需要自己有一个拥有公网IP的服务器
4.1.4: Ngron:免费且平台有一一个静态的域名资源(推荐)

5. 使用Ngrok作为内网穿透工具

https://ngrok.com/
5.1 此操作需要在pi@raspberrypi:~ $ 终端下进行【即打开树莓派终端时的界面】
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-arm64.tgz //下载压缩包

tar -xvzf ngrok-v3-stable-linux-arm64.tgz  //解压这个压缩包获得ngrok文件

./ngrok config add-authtoken <你的令牌> //验证令牌

./ngrok http 18083  //开启内网穿透服务,穿透到局域网的18083端口,即emqx控制台

https://xxxxxxxxxxxx  //获得访问内网网站,类型是动态的,会不定时更新

./ngrok http xxxxxxxxxxxx 18083  //获取ngrok内网穿透的静态ip

https://xxxxxxxxxxxxxxxxxxx  //获取到访问内网的静态网站

5.2 操作须知

5.2.1 登录ngrok注册一个免费的账号(QQ邮箱不行,我用的是163邮箱)
5.2.2 令牌获取
https://dashboard.ngrok.com/

查看自己的令牌:

更改emqtt端口4370 mqtt_服务器

5.2.3 开启内网穿透服务,穿透到局域网的18083端口,即emqx控制台

更改emqtt端口4370 mqtt_服务器_02

5.2.4 官网找到静态域名配置

更改emqtt端口4370 mqtt_更改emqtt端口4370 mqtt_03

5.3.5 点击+号创建一个免费的域名

更改emqtt端口4370 mqtt_内网穿透_04

5.2.6 打开Start a Tunnel获取命令

更改emqtt端口4370 mqtt_内网穿透_05

5.2.7 点击复制,前面加"./"把原先的80端口号改成18083

更改emqtt端口4370 mqtt_docker_06

5.2.8 打开树莓派终端输入命令

更改emqtt端口4370 mqtt_内网穿透_07

可见,此时内网穿透静态域名已经成功!可以通过内网外的设备访问树莓派mqtt服务器上的emqx控制台了。