1 安裝git 和Golang
apt-get install build-essential golang mercurial git
2 下載源碼,當然也可以不安裝git,但是需要手動上傳代碼到需要的位置。
此處使用非官方地址,修複了部分包無法擷取(摘自網路)
git clone https://github.com/tutumcloud/ngrok.git ngrok
3 產生自我簽署憑證
使用ngrok.com官方服務時,我們使用的是官方的SSL認證。自建ngrokd服務,如果不想買SSL認證,我們需要產生自己的自我簽署憑證,並編譯一個攜帶該認證的ngrok用戶端。
認證產生過程需要一個NGROK_BASE_DOMAIN。 以ngrok官方隨機產生的地址xxx.ngrok.com為例,其NGROK_BASE_DOMAIN就是“ngrok.com”,
如果你要提供服務的地址為“example.ngrok.xxx.com”,那NGROK_BASE_DOMAIN就應該 是“ngrok.xxx.com”。
本次測試,由於沒有多餘的網域名稱,我替換成自己的次層網域“risk001.cn”。
cd ngrok
NGROK_DOMAIN="risk001.cn"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
執行完成後需要替換認證
cp base.pem assets/client/tls/ngrokroot.crt
編譯
make release-server release-client
編譯成功後會在bin目錄下找到ngrokd和ngrok這兩個檔案。其中ngrokd 就是服務端程式了。
啟動服務端
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="risk001.cn" -httpAddr=":80" -httpsAddr=":443"
編譯用戶端
(1)windows
GOOS=windows GOARCH=amd64 make release-client