本文要在 Ubuntu 中安装 ngrok 并配置连接。
ngrok 默认服务器在美国,速度太慢,只好自己搭了。
首先要安装 go 语言环境,我们从官方网站下载最新版本。
wget https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gz
tar -zxvf go1.4.2.linux-amd64.tar.gz -C /usr/local
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
# vi /etc/rc.local
echo $GOROOT
# /usr/local/go
echo $PATH
# /usr/local/go/bin:...
go version
# go version go1.7.3 linux/amd64
确认 go 语言版本在 1.6 以上。(此处不可用apt-get,默认安装的 golang 版本是 1.2,不满足要求)
下载 ngrok
mkdir ngrok
apt-get update
apt-get install git
git clone https://github.com/inconshreveable/ngrok.git
为你的域名生成证书
cd ngrok
export NGROK_DOMAIN="ngrok.yourdomain.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 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
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
编译 ngrok
cd ngrok
make release-server release-client
GOOS=windows GOARCH=amd64 make release-client
编译成功后可以在 bin 目录下找到 ngrokd 和 ngrok.exe,ngrokd 是服务端,ngrok.exe 是客户端
启动服务端
./bin/ngrokd -domain=ngrok.yourdomain.com -tlsKey=server.key -tlsCrt=server.crt -httpAddr=:81
浏览器访问:http://ngrok.yourdomain.com:81/ 得到如下回复:
Tunnel ngrok.yourdomain.com:81 not found
这表示服务启动成功。
下载 ngrok.exe 到 windows 系统,添加并编辑一个 ngrok.cfg 文件
server_addr: "ngrok.yourdomain.com:4443"
trust_host_root_certs: false
用以下命令行启动客户端
ngrok.exe -subdomain=abc -config=ngrok.cfg 5000
如果看到 Tunnel Status: online,就说明连接成功了。
此时访问 http://ngrok.yourdomain.com:81/,得到的就是本机 5000 端口的程序返回。