申请云服务器
由于我是在校生,所以很方便地就申请到了云服务器,只要完成申请流程即可。
搭建Node-red服务
使用Node-red 我可以使用其自带的各种网络协议接口,比如TCP、MQTT、UDP、HTTP等,并且能够直接从本地客户端远程到公网服务器上,非常方便,即使不在内网,使用云服务器,我也能够获取到客户端上的所有数据。
- 首先安装nodejs
在nodejs官方网站:https://nodejs.org/en/download/
选择对应版本的nodejs的链接,下载。我使用的镜像是Ubuntu,所以选择Linux Binaries (x64)
复制下载的链接地址
登录云服务器的终端,使用wget命令下载nodejs软件包
wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
可以看到,免费试用的云服务器的网速也是不错的,下载速度有5M/s
接下来解压文件
xz -d node-v16.14.0-linux-x64.tar.xz
tar -xvf node-v16.14.0-linux-x64.tar
添加软连接到 /usr/local/bin
ln -s /root/node-v16.14.0-linux-x64/bin/node /usr/local/bin
ln -s /root/node-v16.14.0-linux-x64/bin/npm /usr/local/bin
cd
node -v
npm -v
使用npm安装node-red (使用淘宝镜像,安装更加迅速)
sudo npm install -g --unsafe-perm node-red --registry=https://registry.npm.taobao.org
再次进行软连接,然后运行node-red
ln -s /root/node-v16.14.0-linux-x64/bin/node-red /usr/local/bin
node-red
在浏览器输入公网IP地址加端口号1880即可进入node-red的界面
添加账户和密码,这样可以防止匿名用户登录你的node-red控制台
编辑setting.js文件,找到adminAuth,将注释去掉,具体配置可以仿照下图
nano ~/.node-red/settings.js
由于密码使用加密算法,所以我们需要获取你想要设定的密码的hash值,另外开启一个终端,输入命令后输入你设定的密码,回返回密码对应的hash值,将其复制到settings.js中的对应密码位置即可。
node-red admin hash-pw
至此,就完成了node-red的公网服务的配置,并且匿名用户也无法使用。
MQTT broker
使用MQTT协议,主要就是要有自己的客户端和broker,以往都是使用内网的broker,或者能够免费使用的云上broker,但是内网broker在离开内网后就无法使用。云上免费使用的broker具有多种限制。
现在使用云服务器,搭建自己的mqtt broker,我就可以在任何地方监控我自己的传感器设备,并且使用手机的mqtt客户端,实时展示多个客户端的状态。
frp内网穿透服务
由于我有多台设备,如树莓派、实验室服务器。但是我不想花钱购买向日葵等服务,所以我想搭建自己的内网穿透服务,在搜索之后,我使用了frp服务。它能够让我通过一个云服务器,映射多个穿透客户端。
在之前,其实我搭建过一个内网穿透服务,用于远程实验室的深度学习服务器,由于初次使用frp,就仅仅使用了其最简单的ssh服务,没有任何加密,仅仅通过简单的端口映射就可以直接远程访问我的实验室服务器,这样我就开始了远程深度学习。但是过了2周,我发现服务器出现异常GPU使用情况,最后发现该进程竟然是一个挖矿木马。平时就占用GPU5G显存之多,一开始我并不认为是内网穿透服务导致的。但是经过多次测试,断网后杀死该进程,只要联网就发现,该木马立即出现。最后我关闭内网穿透服务,该木马才不再出现。
这个例子也让我知道,进行内网穿透的时候要使用secretSSH,并且一定要在服务端和客户端加上token以及其他加密措施。
当然这个也由于我开放了所有云服务器的防火墙入通道。当时购买的是轻量级应用服务器,在被挖矿木马攻击后,阿里云检测到了该木马,立即关闭了我的服务器,也让我能够及时止损。
总之,使用云服务器还是有特别多好玩的地方的,当然要试错,踩坑。这样才会有收获和经验。