Ngrok 服务搭建与客户端编译

今天朋友叫我帮他搭建个ngrok,我自己也是个喜欢折腾的人,所以就应承下了。用了2小时左右搭建成功,中间查看各种资料,都太乱,太不利于大家搭建。所以我准备写一个简单明了的,方便大家参考。中间的踩的坑我就不讲了,直接把成功经验分享给大家。

首先

主要有几个步骤

1.准备材料

  1.一台有公网IP的主机,或者vps等(Linux,如果Windows这篇文章仅供参考)

2.一个域名

3.git,安装。

      apt install git

 4.Golang 最新版 下载到服务器,国内 http://www.golangtc.com/download,国外就是官网。

       wget http://www.golangtc.com/static/go/1.7.3/go1.7.3.linux-amd64.tar.gz

 5.ngrok 源码,去github下载,或者用git拉取,地址(https://github.com/inconshreveable/ngrok)

2.配置环境

1.配置 A 记录指向你的主机IP,类似  * tunnel.yuming.com (我没法截图,打开域名配置你自己就知道怎么做了)。

2.配置 Golang 

    tar -xzvf  go1.7.3.linux-amd64.tar.gz  解压Golang文件

     mv ./go/   /usr/local/   移动go文件夹到 /usr/local/ 文件夹

     mkdir gopath  在用户目录下创建 gopath 用的目录

     vim  .mypath 在用户目录新建文件,存放go的环境信息

          export PATH=$PATH:/usr/local/go/bin

          export GOPATH=~/gopath

          export GOROOT=/usr/local/go

          export GOBIN=$GOPATH/bin

     如果你是bash 就直接在 ~/.bashrc 里面加一句 source ~/.mypath,其他的自己看吧。

     然后执行 source .mypath 把环境变量添加进来

3.配置ngrok

如果是git拉取的就直接 mv ./ngrok/   ~/gopath/src/  把ngrok下的所有文件移动到 gopath 下

其他的也类似,最后效果如下图:(没有bin,和sslkey)


   4.配置SSL证书

建议在 assets 文件夹中执行,我在sshkey里面执行的,最后文件移动的目录层级很多。

把其中的域名替换成你自己的域名就好

$ openssl genrsa -out rootCA.key 2048

$ openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=tunnel.yuming.com" -days 5000 -out rootCA.pem

$ openssl genrsa -out device.key 2048

$ openssl req -new -key device.key -subj "/CN=tunnel.yuming.com" -out device.csr

$ openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

执行完后目录下有六个文件:

device.crt  device.csr  device.key  rootCA.key  rootCA.pem  rootCA.srl

拷贝文件

cp rootCA.pem assets/client/tls/ngrokroot.crt

cp device.crt assets/server/tls/snakeoil.crt

cp device.key assets/server/tls/snakeoil.key

3.编译程序

到gopath 目录下 执行 make release-server  replease-client

执行成功后 在gopath/bin 目录下会有 ngrok(Linux客户端) 和ngrokd(服务端)

执行 unset GOBIN 删除 GOBIN 变量,否则交叉编译报错

执行 GOOS=windows GOARCH=386 make release-client 交叉编译Windows

执行 GOOS=darwin GOARCH=amd64 make release-client 交叉编译 Mac

后台启动 ngrok 服务

setsid ./ngrokd -domain="tunnel.yuming.com" -httpAddr=":80" -httpsAddr=":443" -log ./access.log

4.下载使用

使用下载工具下载客户端到本地,我是mac 我用的scp

scp root@ip:~/gopath/bin/darwin_amd64/ngrok    ./  回车后输入密码开始下载

vim ngrok.cfg 输入

       server_addr: "tunnel.yuming.com:443"

       trust_host_root_certs: false

保存退出(wq)

./ngrok -config=ngrok.cfg -subdomain=test   ip:8000(ip,端口随意你自己定)

test 就是客户端想要绑定的域名,连接成功后截图:


Ngrok 服务搭建与客户端编译_第1张图片
我的是最新版本,不知道为什么没有 web interface 但是 本地 http://localhost:4040/http/in 可以使用

然后 使用 test.tunnel.yuming.com 访问,展示成功。

5.庆祝成功

点赞。

吐槽一下,的编辑功能太难用了。(字数挺喜庆)。

你可能感兴趣的:(Ngrok 服务搭建与客户端编译)