ngrok-server服务端搭建

以下的 ngrok.getcharzp.cn 都替换成自己购买的域名,并将其做好相应的解析,相关的视频教程:www.bilibili.com/video/BV1ZU…

使用docker搭建

需要准备:

域名 + 公网服务器(centos) ,将域名的A记录值映射到公网服务器的IP上 , ngrok、*.ngrok

参考文档: hub.docker.com/r/jueying/n…

在服务器上运行下面的指令

docker run -d --name ngrok-server -p 80:80 -p 8082:8082 -p 443:443 jueying/ngrok-server ngrok.getcharzp.cn 80 8082 443 
复制代码

从ngrok-server中复制对应的操作系统的客户端(PS:复制后进入到对应的/home/ngrok/bin目录下,确认是否已成功生成了windows_amd64目录,若没有生成可以稍等后再重新复制)

docker cp ngrok-server:/usr/local/ngrok/bin/ /home/ngrok 
复制代码

进入到 /home/ngrok/bin/windows_amd64 目录下,复制生成的nginx.exe可执行文件到本地电脑上。在nginx.exe同级的目录下创建一个ngrok.cfg文件

server_addr: "ngrok.getcharzp.cn:443"
trust_host_root_certs: false
复制代码

在nginx.exe同级的目录下创建一个ngrok.bat文件

ngrok.exe -subdomain=test -config=ngrok.cfg 80 
复制代码

双击 ngrok.bat文件,若提示Tunnel Status online ,则说明配置成功了。

使用源文件编译

域名 + 公网服务器(centos)

目前这边golang使用的版本为1.14.15

go version go1.14.15 linux/amd64 安装

cd /root

wget https://storage.googleapis.com/golang/go1.14.15.linux-amd64.tar.gz
tar -C /root -xzf go1.14.15.linux-amd64.tar.gz 
复制代码

/etc/profile文件编辑

vim /etc/profile
# 添加
export GOROOT=/root/go
export PATH=$PATH:$GOROOT/bin
source /etc/profile 
复制代码

下载源文件

git clone https://github.com/inconshreveable/ngrok.git 
复制代码

创建存放key的目录

cd ngrok && mkdir keys && cd keys
复制代码

设置需要映射的域名

export NGROK_DOMAIN="ngrok.getcharzp.cn"
复制代码

生成相关证书

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 
复制代码

将生成的证书替换掉

cp rootCA.pem ../assets/client/tls/ngrokroot.crt
cp device.crt ../assets/server/tls/snakeoil.crt
cp device.key ../assets/server/tls/snakeoil.key 
复制代码

采用国内的镜像

git clone -- https://gitee.com/mirrors/log4go.git src/github.com/alecthomas/log4go
git clone -- https://gitee.com/ngrok-install/websocket.git src/github.com/gorilla/websocket
git clone -- https://gitee.com/ngrok-install/go-vhost.git src/github.com/inconshreveable/go-vhost
git clone -- https://gitee.com/ngrok-install/mousetrap.git src/github.com/inconshreveable/mousetrap
git clone -- https://gitee.com/ngrok-install/go-bindata.git src/github.com/jteeuwen/go-bindata
git clone -- https://gitee.com/mirrors_addons/osext.git src/github.com/kardianos/osext
git clone -- https://gitee.com/ngrok-install/binarydist.git src/github.com/kr/binarydist
git clone -- https://gitee.com/GoLibs/go-runewidth.git src/github.com/mattn/go-runewidth
git clone -- https://gitee.com/ngrok-install/termbox-go.git src/github.com/nsf/termbox-go
git clone -- https://gitee.com/mirrors/go-metrics.git src/github.com/rcrowley/go-metrics 
复制代码

进入ngrok的根目录下,选择对应的服务端和客户端进行编译

cd ..  
#linux服务端
GOOS=linux GOARCH=386 make release-server (32位)
GOOS=linux GOARCH=amd64 make release-server(64位)
#linux客户端
GOOS=linux GOARCH=386 make release-client (32位)
GOOS=linux GOARCH=amd64 make release-client(64位)

#Mac OS服务端
GOOS=darwin GOARCH=386 make release-server
GOOS=darwin GOARCH=amd64 make release-server
#Mac OS客户端
GOOS=darwin GOARCH=386 make release-client
GOOS=darwin GOARCH=amd64 make release-client

#windows服务端
GOOS=windows GOARCH=386 make release-server
GOOS=windows GOARCH=amd64 make release-server
#windows客户端
GOOS=windows GOARCH=386 make release-client
GOOS=windows GOARCH=amd64 make release-client 
复制代码

进入当前目录对应的 bin 目录下,启动服务端

./ngrokd -domain="ngrok.getcharzp.cn" -httpAddr=":80" 
复制代码

进入 windows_amd64目录下载ngrok.exe,当然这里根据具体的客户端平台进行下载

在本地的ngrok.exe同目录下新建ngrok.cfg

server_addr: "ngrok.getcharzp.cn:4443" trust_host_root_certs: false

在本地的ngrok.exe同目录下新建ngrok.bat

ngrok.exe -config=ngrok.cfg -subdomain=test 80
复制代码

双击 ngrok.bat文件运行。