阿里云部署ngrok服务端

版权声明:本文为博主原创文章,供大家交流学习使用,未经博主允许不得转载。谢谢! https://blog.csdn.net/ZHJ123CSDN/article/details/87886424

阿里云部署ngrok服务端 @zhj

阿里云部署ngrok服务端

前段时间在玩3D打印机,需要用ngrok把octoprint映射到公网上,经过不懈努力终于实现了目标,在此我将主要过程写下来与大家分享。

服务器类型 阿里云轻量应用服务器
服务器系统 Ubuntu16.04
树莓派类型 树莓派3B+

1.安装go编译器和git

apt install golang
apt install git

2.下载ngrok源码

git clone https://github.com/inconshreveable/ngrok.git

3.生成签名

 将ngrok文件夹放到/usr/local目录下,进入ngrok目录生成签名

NGROK_DOMAIN="forever305.cn"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt

 注意:这里我把NGROK_DOMAIN定义成了自己阿里云的域名forever305.cn

4.拷贝签名证书

cp base.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key

5.编译服务端

 服务器安装的系统版本是Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-141-generic x86_64),我在网上搜了搜,最后使用下面的命令编译生成了ngrok服务器端。

GOOS=linux GOARCH=386 make release-server

6.编译客户端

 编译树莓派客户端使用了如下命令

export GOARCH=arm
make release-client

7.拷贝文件

 在/usr/local/ngrok/bin目录下,就会在linux_386和linux_arm目录分别生成服务端ngrokd和客户端ngrok,再把ngrok客户端拷贝到树莓派。

8.服务端测试

 先在阿里云防火墙添加一些需要的端口
图1 防火墙端口设置

图1 防火墙端口设置

 然后在域名的解析界面中,添加*.forever305.cn这条记录
图2 域名解析设置

图2 域名解析设置

 在cmd里面用ping命令测试网络
图3 测试网络

图3 测试网络

 这样域名已经解析成功了,而且输入任意的二级域名都可以指向服务器公网IP。然后运行服务器端的ngrokd进行测试

/usr/local/ngrok/bin/linux_386/ngrokd -domain="forever305.cn" -httpAddr=":8080" -httpsAddr=":4433" -tunnelAddr=":4443"

 在地址栏输入http://47.95.13.239:8080/,网页中出现"Tunnel 47.95.13.239:8080 not found",这样说明服务端应该是没有问题了,出现这一行内容是因为现在服务器的8080端口还没有内容。图4 服务端测试

图4 服务端测试

9.客户端测试

 刚才已经把编译生成的客户端拷贝到了树莓派的/home/pi/ngrok/aliyun目录下,然后写一个ngrok.cfg文件,其内容如下

server_addr: "forever305.cn:4443"  /**一定要注意这里的空格**/
trust_host_root_certs: false       /**我就是因为没加空格卡住了***(⊙﹏⊙)*****/ 

 在树莓派~/ngrok/aliyun目录下,执行如下命令测试客户端:

ngrok -subdomain pi -config=ngrok.cfg 80

 执行上面的命令之后,在树莓派端既可以看到如下界面
图5 客户端测试

图5 客户端测试

 可以看到,现在它映射了127.0.0.1:80http://pi.forever305.cn:8080,所以已经可以把octoprint放到公网上去了。在浏览器地址栏输入http://pi.forever305.cn:8080即可实现公网访问。
 在实现的过程中,我也参考了很多资料,在此也列出来供大家参考。

  1. https://ngrok.com/docs
  2. 阿里云搭建自己的ngrok服务-实现内网穿透 https://blog.csdn.net/u010444106/article/details/80457985
  3. 树莓派使用ngrok内网转发搭建教程【各种问题终极解决方案】http://www.vuln.cn/8634
  4. 自己搭建ngrok服务把树莓派放到公网上去 https://studygolang.com/articles/11326?from=singlemessage
  5. ngrok内网转发 https://www.jianshu.com/p/bac99dd98c4a
  6. 搭建自己的ngrok服务 https://blog.csdn.net/gebitan505/article/details/48176763
  7. Ngrok 编译的坑 https://www.jianshu.com/p/d0b00d233d09
  8. Ngrok搭建自己的内网穿透 https://my.oschina.net/u/3294768/blog/1556062
  9. 搭建Ngrok实现树莓派内网穿透 https://blog.csdn.net/sinat_27938829/article/details/72084757

猜你喜欢

转载自blog.csdn.net/ZHJ123CSDN/article/details/87886424
今日推荐