1.准备gcc
2.安装git和go环境、修改环境变量
参考https://www.jianshu.com/p/9c825405d851
3.下载ngrok,生成证书
cd /usr/local/src/ngrok
export NGROK_DOMAIN="ng.lvkerry.com"
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
4.便编译生成服务端
#这里是交叉编译,linux系统GOOS=linux,64位系统GOARCH=amd64,32位系统GOARCH=386
#当前系统可用go env查看
cd /usr/local/src/ngrok
GOOS=linux GOARCH=amd64
make release-server
5.编译生成客户端
凭据平台编译生成对应的用户端
$ GOOS=linux GOARCH=amd64 make release-client $ GOOS=windows GOARCH=amd64 make release-client $ GOOS=linux GOARCH=arm make release-client
6.编写生成start.sh脚本
nohup ./bin/ngrokd -tlsKey=device.key -tlsCrt=device.crt -domain="ngrok.liruyan.com" -httpAddr=":9201" -httpsAddr=":9202" -tunnelAddr=":9203" &
遇见的问题
1.control recovering from failure dial tcp。这个问题是因为我在防火墙上开错了端口号,本来程序用的是9203,firewalld中写成了9103.也有人说是因为dns的问题。