自己搭建ngrok服务

最近国内国外的ngrok的服务都不能用了,国外的是被墙了,国内的服务器停止续费了。但是微信开发不能缺少ngrok啊,所以决定自己搭建一个ngrok服务。

服务环境:阿里云CentOS 6.5 X64

1、首先要安装go环境,参照我前面的文章安装go环境

2、安装git

mkdir ngrok

cd ngrok

git clone https://github.com/inconshreveable/ngrok.git

export GOPATH=/root/ngrok

3、生成证书

export NGROK_DOMAIN="imququ.com"   

 #域名为你自己服务器的域名,需要做泛解析

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


4、编译服务端

export GOOS=linux

export GOARCH=amd64

#如果是32位,则命令为export GOARCH=386

make release-server

在编译过程中出现如下几个问题

1)一个update一直在download中,只好自己下载,然后上传到服务器,根据提示上传到ngrok/src下面对应的文件夹中

2)log4go

/root/ngrok/log/logger.go
第五行import中的 log 包,改为:
log "github.com/keepeye/log4go"

3)yaml.v1

注意前面是L的小写,后面阿拉伯数字1,根据提示从网上下载对应的包,然后上传到服务器ngrok/src下面对应的文件夹,命名也要根据提示命名

重新编译

make release-server

编译成功的话会在bin文件夹下面生成一个ngrokd文件

5、编译客户端

export GOOS=windows

#如果是mac系统则:export GOOS=darwin

编译成功后在bin下面会多一个windows_amd64的文件夹,里面有一个ngrok.exe文件,下载下来。

6、启动服务端,在ngrok目录下面打命令

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="$NGROK_DOMAIN" -httpAddr=":80" -httpsAddr=":8082"

#-httpAddr=":80"为监听网络端口,因为微信目前只支持80端口,所以我的服务器只能用80端口

7、启动客户端

1)把编译好的客户端下载下来,在客户端同级文件夹中,新建一个ngrok.cfg文件

内容如下

server_addr: "imququ.com:4443"
trust_host_root_certs: false

#4443为ngrok服务端监听客户端链接端口

2)进入dos界面,进入到ngrok.exe文件所在位置,输入命令

ngrok -config ngrok.cfg -subdomain hch8080

#hch为域名访问前缀

#8080为本地服务端口


这样就大功告成,外网就可以通过访问hch.imququ.com来访问本机的服务了

参考链接

http://tonybai.com/2015/03/14/selfhost-ngrok-service/

https://imququ.com/post/self-hosted-ngrokd.html

http://www.ekan001.com/articles/38

http://www.jinglingshu.org/?p=10444

### 回答1: 要搭建 ngrok 服务器,首先需要在本地安装 ngrok,安装完成后在命令行中输入 `ngrok authtoken <YOUR_AUTH_TOKEN>` 来设置认证令牌。 接下来,使用 `ngrok http <port>` 来启动服务,其中 <port> 是您要映射到公网的本地端口号。 例如,如果您的本地服务器运行在 80 端口上,则可以使用 `ngrok http 80` 启动服务。 启动后,将会得到一个公网 URL,可以将这个 URL 分享给其他人访问您的本地服务器。 注意:如果要使用自定义域名,需要购买 ngrok 高级版本。 ### 回答2: 搭建ngrok服务器是一种将内网服务暴露到公网的方法。首先需要在服务器上安装ngrok软件,可以通过官方网站下载对应的二进制文件。得到二进制文件后,解压并将可执行文件复制到系统的可执行路径下。 在服务器上创建一个用于存放ngrok配置文件和证书的目录,例如/opt/ngrok。在该目录下创建一个自定义的域名配置文件,例如ngrok.yml,用于配置需要暴露的服务和域名信息。在该文件中,我们需要配置tunnels部分,指定需要暴露的服务和端口号。 接下来,生成SSL证书用于支持HTTPS协议。运行以下命令: ``` # 生成CA私钥并自签名CA证书 $ openssl genrsa -out rootCA.key 2048 $ openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok" -days 3650 -out rootCA.pem # 生成服务器私钥和证书签名请求(CSR文件) $ openssl genrsa -out server.key 2048 $ openssl req -new -key server.key -subj "/CN=your-domain.com" -out server.csr # 使用CA私钥和签名请求生成服务器证书 $ openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 3650 ``` 将生成的证书文件(rootCA.pem和server.crt)放入ngrok服务器目录。 接下来需要配置ngrok客户端,将ngrok服务器的域名、端口和SSL证书配置到ngrok客户端中。在本地机器上下载和配置ngrok客户端,根据服务器上的域名和端口号进行配置。将生成的根证书rootCA.pem放入客户端的.ngrok文件夹里,并运行以下命令启动ngrok客户端: ``` $ ngrok client -config=ngrok.cfg -subdomain=subdomain your-service-host:port ``` 通过以上步骤,即可成功搭建ngrok服务器,实现将内网服务暴露到公网。接下来可以通过ngrok客户端访问公网上的服务,使用域名和端口号即可访问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值