必要前提条件
- 公网可访问域名
- 公网IP地址的服务器
软件环境
- Ubuntu 18 LTS
- NGINX
- acme.sh
- Go
- 开启服务器TCP端口 4443,8080,8443
示例说明
示例域名以本站域名为例。
记得把 dapeng.me 换成自己的域名
# 井号代表在sudo用户权限下的命令窗口运行
# [包含在方括号中的内容,表明需要替换]
基础安装
$ sudo su
# cd ~
# apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
# apt-get install build-essential golang mercurial git nginx -y
配置NGINX
# systemctl start nginx
# systemctl enable nginx
# mkdir /etc/nginx/ssl
生成网站证书
证书使用acme.sh生成,可用于ngrok服务端和客户端生成,以及网站开启HTTPS使用。
需要在root 用户根目录下操作
安装 acme.sh
# cd ~
# curl https://get.acme.sh | sh
# alias acme.sh=~/.acme.sh/acme.sh
生成证书
# acme.sh --issue -d dapeng.me -d www.dapeng.me --webroot /var/www/html/
.me, .top 等不常见后缀域名,可尝试去除 -d www.[mydomain.com]
copy 证书到 NGINX
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/dapeng.me.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "systemctl force-reload nginx | cp /root/.acme.sh/dapeng.me/dapeng.me.cer /root/ngrok/assets/client/tls/ngrokroot.crt"
此处 –reloadcmd命令后的双引号中可以添加其他内容。
- 自动生成新证书的服务器添加 “| cd /root/ngrok && make release-server release-client“
下载ngrok源码
源代码地址根据服务器实际情况选择
回到root用户的主目录
# cd ~
服务器在境外
# git clone https://github.com/inconshreveable/ngrok.git ngrok
服务器在境内
# git clone https://github.com/tutumcloud/ngrok.git ngrok
以上源码二选一,根据自己的实际情况
# cd ngrok
# cp /root/.acme.sh/dapeng.me/dapeng.me.cer assets/client/tls/ngrokroot.crt
编译生成ngrok服务端和客户端
为保证证书验证可用,执行如下命令生成客户端 ngrokd 文件。
文件位于 /root/ngrok/bin/
# cd /root/ngrok
# make release-server release-client
验证ngrok服务端
# ./root/ngrok/bin/ngrokd -tlsKey=/etc/nginx/ssl/dapeng.me.key -tlsCrt=/etc/nginx/ssl/fullchain.cer -domain="dapeng.me" -httpAddr=":8080" -httpsAddr=":8443"
编译Windows客户端,/root/ngrok/bin 目录下生成 windows_amd64/ 文件夹
# cd /root/ngrok
# GOOS=windows GOARCH=amd64 make release-client
编译macOS客户端,/root/ngrok/bin 目录下生成 darwin_amd64/ 文件夹
# cd /root/ngrok
# GOOS=darwin GOARCH=amd64 make release-client
配置ngrok客户端
下载上一步生成的客户端文件,并在客户端执行文件的同目录创建配置文件。
保存文件名为 ngrok.cfg
server_addr: "weixin.dapeng.me:4443"
trust_host_root_certs: false
命令行中启动输入以下命令启动客户端
Windows
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=weixin 8080
macOS
./ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=weixin 8080
收尾工作
将服务器端 ngrokd设置为系统服务
# vim /etc/systemd/system/ngrok.service
输入以下内容,记得改成自己的域名