时间:2016年08月09日 | 作者 : liuhui | 分类 : 建站 | 浏览: 14410次 | 评论 0 人
阿里云限量代金券 | 此广告位出租25元/月 |
最近想用树莓派2搭建一个WEB服务器,但身处的网络环境让人堪忧,移动网络,无外网IP,而且树莓派又与无线路由相连,被囚禁与内网中的内网里,如何解救呢?花生壳?NO-IP?各种DDNS?最终都以失败告终,而且要想绑定自己的顶级域名,还得付费使用…
在V2EX中发现了一个内网穿透神器-ngrok,ngrok官方提供的服务貌似被墙掉,还好天朝的子民们不傻,自建了一个国内的ngrok服务器,原文地址:https://www.v2ex.com/t/148279,试了一下,很顺利的通过外网访问到了树莓派的WEB服务,因为只能使用作者提供的二级域名,所以想自己搭建一个服务,使用自己的域名即可。
要搭建自己的ngrok服务,需要一台VPS以及一个外网IP,本人手里闲置的VPS太多,xvmlabs的7IP VPS买来就闲置了大半年,ping了一下稳定性还不错,准备在这上面搭建。
本人选的是Ubuntu 14.04 x86的系统,CentOS的系统也尝试过,编译容易报错,解决起来相对复杂。
1.更新下资源列表
sudo apt-get update
2.安装build工具,Go开发环境,mercurial测试工具,以及git
sudo apt-get install build-essential golang mercurial git
3.下载ngrok资源包并进入ngrok目录
git clone https://github.com/inconshreveable/ngrok.git ngrokcd ngrok
4.生成自签名SSL证书,findhao.com替换为你自己的域名
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=findhao.com" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=findhao.com" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
5.会生成6个文件:
base.key
base.pem
base.srl
server.crt
server.csr
server.key
6.将原始的ngrokroot.crt替换为生成的crt文件
cp base.pem assets/client/tls/ngrokroot.crt
7.开始编译(注意:小内存VPS编译过程中会报错,建议使用512M以上内存的VPS)
make release-server release-client
编译无报错的话,会生成bin目录,里面包含3个文件,其中ngrokd为服务端文件,ngrok为客户端文件
因为树莓派是基于arm架构的系统,所以还得编译一份arm的ngrok文件
进入go编译器
cd /usr/share/go/src
设置编译类型
GOOS=linux GOARCH=arm CGO_ENABLED=0 ./make.bash
回到ngrok目录
cd /root/ngrok
再次编译
GOOS=linux GOARCH=arm make release-server release-client
这样bin文件夹多了linux_arm文件夹,里面就是编译好了的arm版ngrokd和ngrok
8.设置域名解析
把域名解析到VPS上,如果你只需要主机记录@和www,直接设置A记录把他们解析到VPS的IP上,如果需要很多二级域名的话,可以直接把*解析到IP上
9.服务端启动
给权限
chmod +x /root/ngrok/bin/ngrokd
启动服务,注意ngrokd的路径以及key和crt的路径,domain填写自己的域名,http及https端口按实际情况修改
/root/ngrok/bin/ngrokd -tlsKey=/root/ngrok/server.key -tlsCrt=/root/ngrok/server.crt -domain="findhao.com" -httpAddr=":80" -httpsAddr=":443"
这样就算启动成功了
10.客户端启动
将服务器端的ngrok文件(/root/ngrok/bin/linux_arm里)复制到树莓派中,我复制到了root里,同样给权限
chmod +x /root/ngrok
然后新建一个ngrok.cfg文件,编辑以下内容并保存(域名换成你自己的)
server_addr: findhao.com:4443 trust_host_root_certs: false
启动连接,www替换为你要绑定的二级域名-config设置配置文件的路径,80为WEB服务端口
./ngrok -subdomain www -config=ngrok.cfg 80
成功连接ngrok服务器后会显示online
然后打开下面的地址http或者https(自签的SSL证书浏览器不信任),就可以访问树莓派的WEB内容啦
注意,客户端必须使用自己编译的ngrok文件,否则就会出现bad certificate错误,这个问题之前一直困扰我,因为我使用的是官方下载的ngrok
服务器端:
复制启动命令保存为ngrok_start文件
/root/ngrok/bin/ngrokd -tlsKey=/root/ngrok/server.key -tlsCrt=/root/ngrok/server.crt -domain="findhao.com" -httpAddr=":80" -httpsAddr=":443"
放到/etc/init.d目录下
设置文件权限:
sudo chmod 755 /etc/init.d/ngrok_start
将上述脚本放到启动脚本里:
cd /etc/init.d sudo update-rc.d ngrok_start defaults 20
重启后就会自动启动服务了,同理可设置客户端自启动。
附卸载启动脚本方法:
cd /etc/init.d sudo update-rc.d -f ngrok_start remove
参考文章:http://www.svenbit.com/2014/09/run-ngrok-on-your-own-server/
推荐您阅读更多有关于“”的文章
Powered By Z-Blogphp
分享:
支付宝
微信