1.基础环境
# 安装(同地面控制中心)地面控制中心好吃安装(同groundcontrolcenter)地面控制中心
好吃安装海湾合作委员会
安装戈朗,下载地址在https://studygolang.com/dl中找的,想换版本可以在这里找
wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz
go1.8.linux-amd64.tar.gz
vi /etc/profile #文件中加上环境变量
导出GOROOT=你的去解压地址(如:/root/go)
导出路径=$PATH:$GOROOT/秀丽的面包
来源/etc/profile #使环境生效(或者重启:重新启动)
去版本#查看去是否安装成功
2.下载源码
#安装饭桶用于下载ngrok代码好吃安装饭桶
#克隆代码,文件夹命名为ngrok-服务器,也可以填写,默认就是ngrok
饭桶克隆https://github.com/inconshreveable/ngrok.git恩格罗-服务器
3.ngrok配置
执行一下命令。使用ngrok.com官方服务时,我们使用的是官方的加密套接字协议层证书。自建ngrokd服务,如果不想买加密套接字协议层证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。证书生成过程需要一个NGROK_BASE_DOMAIN。填写我们的域名地址
CD ngrok-服务器#进入安装根目录
NGROK_DOMAIN='ngrok .你的域名网站
OpenSSL gen RSA-out rootka。密钥2048
打开SSL请求-新建-x509-节点-密钥rootka。key-days 10000-subject '/CN=$ NGROK _ DOMAIN '-out rootka。PrivacyEnhancedMail增强的私密电子邮件
OpenSSL gen RSA-out服务器。密钥2048
打开SSL请求-新密钥服务器。key-subject '/CN=$ NGROK _ DOMAIN '-out服务器。企业社会责任
OpenSSL x509-请求输入服务器。CSR-CA rootka。PEM-CAkey rootka。密钥创建连续天数为10000天的服务器。同
4.复制证书
经过以上步骤,证书已经生成,下面复制证书到默认读取目录下#复制rootCA.pem到资产/客户/tls/并更名为ngrokroot.crt
cp rootCA.pem资产/客户端/TLS/ngrockroot。同
#复制服务器。阴极射线管到资产/服务器/tls/并更名为蛇油。阴极射线管
cp服务器. crt资产/服务器/TLS/snail oil . CRT
#复制server.key到资产/服务器/tls/并更名为蛇油。钥匙
cp服务器. key资产/服务器/tls/snakeoil.key
上面会让你提示是否覆盖,输入y即可。如果不想每次都提示,可以使用如下命令,这是一个骚操作。
丙酸纤维素前面加上一个,然后加上-射频即可没有提示,直接覆盖。
cp -rf rootCA.pem资产/客户端/TLS/ngrockroot。同
cp -rf服务器. crt资产/服务器/TLS/snail oil . CRT
CP-射频服务器。关键资产/服务器/TLS/蛇油。键
5.https配置
网站配置加密套接字协议层证书(https),使网站可以通过https访问我们申请的是让我们加密通配符加密套接字协议层证书,因为他是免费的
1.获取Certbot客户端
下载Certbot客户端,并且添加可执行权限
cd /usr/local/
wget https://dl.eff.org/certbot-auto
chmo
d a+x certbot-auto./certbot-auto certonly -d "*.ngrok.你的域名.com" -d "ngrok.你的域名.com" --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
执行到最后一步时,先暂时不要回车。申请通配符证书是要经过DNS认证的,接下来需要按照提示在域名后台添加对应的DNS TXT记录。等个10分钟左右
确认生效后,回车继续执行
更换证书
cd /root/ngrok-server
cp /etc/letsencrypt/live/ngrok.你的域名.com/privkey.pem /root/ngrok-server/assets/server/tls/snakeoil.key
cp /etc/letsencrypt/live/ngrok.你的域名.com/fullchain.pem /root/ngrok-server/assets/server/tls/snakeoil.crt
cp /etc/letsencrypt/live/ngrok.你的域名.com/fullchain.pem /root/ngrok-server/assets/client/tls/ngrokroot.crt
6.生成程序
生成客户端和服务器端
#win服务端
GOOS=windows GOARCH=386 make release-server
#win客户端
GOOS=windows GOARCH=386 make release-client
#linux服务端
GOOS=linux GOARCH=386 make release-server
#linux客户端
GOOS=linux GOARCH=386 make release-client
我只用到linux服务器端和win客户端,我只需要执行如下即可。
根据自己需要生成
#linux服务端
GOOS=linux GOARCH=386 make release-server
#win客户端
GOOS=windows GOARCH=386 make release-client
第一次生成需要点时间,因为golang编译需要下载一些插件。
编译后的软件在秀丽的面包目录下
httpAddr,httpsAddr为访问服务端端口,可以设置为80和443,访问的时候不用加端口号.
tunnelAddr为给客户端提供的连接端口默认4443可自行修改,这里改为8092
### 后台运行
使用服务模式
将以下代码保存为ngrokd.service文件,放在/etc/systemd/system/目录
注意替换路径 root/ngrok-server/秀丽的面包/linux_386/ 为ngrok服务端目录
#/etc/systemd/system/ngrokd.service
[Unit]
Description=ngrok
After=network.target
[Service]
ExecStart=/root/ngrok-server/秀丽的面包/linux_386/ngrokd -tlsKey="/root/ngrok-server/assets/server/tls/snakeoil.key" -tlsCrt="/root/ngrok-server/assets/server/tls/snakeoil.crt" -domain="ngrok.你的域名.com" -httpAddr=":8090" -httpsAddr=":8091" -tunnelAddr=":8092"
LimitNOFILE=1048576
LimitNPROC=1048576
Restart=always
RestartSec=10
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
systemctl enable ngrokd.service#开机启动ngrokd服务
systemctl start ngrokd.service#启动ngrokd服务
注意:阿里云需要配置安全组规则
7.客户端
下载秀丽的面包/windows_386目录下的ngrok.exe文件
http/https
ngrok.cfg
server_addr: ngrok.你的域名.com:8092
trust_host_root_certs: false
start.bat
@echo OFF
set /p clientid= 请输入域名前缀:
echo.
set /p port= 请输入内网端口:
echo.
ngrok -config=ngrok.cfg -proto=http -subdomain=%clientid% %port%
# https使用
# ngrok -config=ngrok.cfg -proto=https -subdomain=%clientid% %port%
运行start.bat
tcp
start.bat
start ngrok.exe -proto=tcp -config=tcp.cfg start vnc ssh
ngrok.cfg
server_addr: ngrok.你的域名.com:8092
trust_host_root_certs: false
tunnels:
ssh:# 名称
remote_port: 33333 #服务器分配tcp转发端口,不填写由服务器随机分配
proto:
tcp: 33333 #映射本地的端口
vnc:# 名称
remote_port: 33339
proto:
tcp: 33339
注意:tcp需要开放对应的端口
8.注意事项
服务器的安全组一定要配置。关闭防火墙。域名泛解析 *.ngrok.你的域名.com