ngrok:
1、下载go语言包
apt-get install golang
2、下载源码
mkdir ngrok
apt-get update
apt-get install git
git clone https://github.com/inconshreveable/ngrok.git
3、更改ngrok域名
切换路径:
cd /opt/server/ngrok
export GOPATH=~/ngrok
export NGROK_DOMAIN="ngrok.6cm.top"
(这里是你自己的域名,要在域名管理里面增加对”ngrok.6cm.top”和”*.ngrok.6cm.top”的解析,ip指向部署ngrok的外网服务器。)
4、为域名生成证书
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 server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
5、替换证书
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
6、编译ngrokd(服务端)
make release-server release-client
7、启动服务
切换路径:
/opt/server/ngrok/bin
输入:
./ngrokd -tlsKey="../assets/server/tls/snakeoil.key" -tlsCrt="../assets/server/tls/snakeoil.crt" -domain="ngrok.6cm.top" -httpAddr=":80" -httpsAddr=":443" &
httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。
浏览器访问ngrok.6cm.top 提示“Tunnel ngrok.6cm.top not found”,即为服务开启成功。
8、编译ngrok(客户端)
32位linux客户端: GOOS=linux GOARCH=386 make release-client
64位linux客户端: GOOS=linux GOARCH=amd64 make release-client
32位windows客户端: GOOS=windows GOARCH=386 make release-client
64位windows客户端: GOOS=windows GOARCH=amd64 make release-client
32位mac平台客户端:GOOS=darwin GOARCH=386 make release-client
64位mac平台客户端:GOOS=darwin GOARCH=amd64 make release-client
ARM平台linux客户端: GOOS=linux GOARCH=arm make release-client
编译好的客户端在:/opt/server/ngrok/bin 目录下。
9、设置本地客户端
windows
(1)在ngrok.exe同级目录下新建一个配置文件ngrok.cfg
server_addr: "ngrok.6cm.top:4443"
trust_host_root_certs: false
(2)同级目录下新建一个启动脚本startup.bat
@echo on
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=zz 8080
其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。8080为本地端口号。
直接用命令启动:
ngrok.exe -log=ngrok_log.txt -subdomain=test -config="ngrok.cfg" 80
linux
(1)在ngrok同级目录下新建一个配置文件ngrok.cfg
server_addr: "ngrok.6cm.top:4443"
trust_host_root_certs: false
(2)使用命令启动:
./ngrok -config=ngrok.cfg -subdomain exam 8866
其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。8080为本地端口号。
10、设置为系统服务,后台运行
在/etc/systemd/system/目录下创建服务ngrok.service,内容为
[Unit]
Description=ngrok
After=network.target
[Service]
ExecStart=/opt/server/ngrok/bin/ngrokd -tlsKey="/opt/server/ngrok/assets/server/tls/snakeoil.key" -tlsCrt="/opt/server/ngrok/assets/server/tls/snakeoil.crt" -domain="ngrok.6cm.top" -httpAddr=":80" -httpsAddr=":443"
[Install]
WantedBy=multi-user.target
通过systemctl start ngrok.service
启动服务