1、必要条件

(1)服务器,用来搭建ngrok的服务器,必须有公网ip,并且可以正常访问(本次测试使用的是Ubuntu 16.04 64位)。 
(2)域名,用来生成访问域名。

2、安装git 和Golang

apt-get install build-essential golang mercurial git

Golang,Go语言支持,因为Ngrok是基于Go语言编写的

3、下载源码,当然也可以不安装git,但是需要手动上传代码到需要的位置。

此处使用非官方地址,修复了部分包无法获取(摘自网络)

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

4、生成自签名证书 
使用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”。本次测试,由于没有多余的域名,我替换成自己的二级域名“weixin.yangjiace.xyz”。

cd ngrokNGROK_DOMAIN="weixin.yangjiace.xyz"openssl genrsa -out base.key 2048openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pemopenssl genrsa -out server.key 2048openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csropenssl 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

5、编译

make release-server release-client

编译成功后会在bin目录下找到ngrokd和ngrok这两个文件。其中ngrokd 就是服务端程序了。

6、启动服务端

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"

httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。由于微信限制不能出现端口号,因此这个使用了80、443端口。

7、编译客户端

(1)windows

GOOS=windows GOARCH=amd64 make release-client  

(2)mac

GOOS=darwin GOARCH=amd64 make release-client

执行对应的命令会在bin目录下生成相对应的windows、mac目录,ngrok.exe就存放在对应目录下。将对应的ngrok.exe下载到本地。

8、设置本地客户端

(1)在同级目录下新建一个配置文件ngrok.cfg

server_addr: "weixin.yangjiace.xyz:4443"
trust_host_root_certs: false 

(2)同级目录下新建一个启动脚本startup.bat

@echo on
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=yjc 8080

其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。8080为端口号。

(3)启动,点击启动脚本startup.bat完成启动。

9、设置为系统程序,并后台运行。

服务器在运行ngrok时,如果关闭会话窗口,会导致服务中断,很显然这不是我们想要的结果,我们需要服务不断的在后台运行,当需要的时候在停止。

在/etc/systemd/system/目录下创建服务ngrok.service,内容为

[Unit]
Description=ngrok
After=network.target[Service]
ExecStart=/myweb/ngrok/bin/ngrokd -tlsKey=/myweb/ngrok/server.key -tlsCrt=/myweb/ngrok/server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"[Install]
WantedBy=multi-user.target

其中要根据自己的实际目录修改相对应的目录。

这样我们就可以了通过systemctl start ngrok.service启动服务。然后就可以愉快的玩耍了。

本文转自:https://blog.csdn.net/yjc_1111/article/details/79353718

搭建自己的ngrok服务器搭建方式二相关推荐

  1. 一分钟实现内网穿透(ngrok服务器搭建)

    简单来说内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点. 最近公司的花生壳到期了,要续费,发现价格一直在涨,都是5年以上的老用户,旗舰 ...

  2. 内网穿透(ngrok服务器搭建)

    转:https://blog.csdn.net/zhangguo5/article/details/77848658?utm_source=5ibc.net&utm_medium=referr ...

  3. Ubuntu上搭建自己的ngrok服务器

    Ubuntu上搭建自己的ngrok服务器 参考网站:http://www.sunnyos.com/article-show-48.html 上面的内容似乎是sunny大神本人写的,了解的越多,发现自己 ...

  4. ngrok服务器搭建流程

    ngrok服务器搭建流程 微信开发内网测试问题一直是一个困扰开发者的问题,ngrok服务是一个很好的解决方案,网上有类似的工具比如小米球但是不稳定或收费,如果自己有一台公网上的centos服务器,可以 ...

  5. CentOS7 NGROK服务器搭建 无需域名

    CentOS7 NGROK服务器搭建 CentOS7 NGROK服务器搭建 无需域名 看到一些ngrok收费一月9元起,遂花了10元买了腾讯云服务https://curl.qcloud.com/lj0 ...

  6. 内网穿透-----ngrok服务器搭建

    一,需求与ngrok简介 1)需求 有时我们需要进行内网穿透,也就是说我们需要去访问和使用一些内网的机器:比方说,我在实验室有一台机器,而实验室的网络是内网(192.168.0.48),这个时候我想在 ...

  7. 10分钟教你搭建自己的ngrok服务器

    内网穿透想必开发过微信的同志都很了解,大部分人选择网上寻找各种现成的,比如ngrok官网.ittun-ngrok.sunny-ngrok或者花生壳之类的.但是世界上没有免费的午餐,要不就是收费,要不就 ...

  8. 内网穿透、反向代理(ngrok服务器搭建)

    内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点. 一.ngrok ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之 ...

  9. 服务器中搭建OA系统,云服务器搭建oa系统

    云服务器搭建oa系统 内容精选 换一换 云服务器创建后区域固定,不能将云服务器转移到另一个区域,也不能将云服务器转移到另一个帐号.您可以通过镜像迁移方式实现云服务器的跨帐号跨区域迁移.服务器迁移的常见 ...

最新文章

  1. 【C++】new和malloc的区别
  2. OpenCV On Android
  3. 【机器学习算法专题(蓄力计划)】十五、机器学习中玄乎的最大熵原理及模型
  4. python对象模型_[译] 用 Python 实现一个最简单的对象模型
  5. 1个月教你学会用Python实现机器学习
  6. 机器学习线性回归案例讲解_09机器学习实战之简单线性回归
  7. 两间三层小型别墅图片_占地仅120平的现代风别墅,带KTV和健身房,引领时尚新潮流...
  8. 神策分析 1.13 版本用户分群全新升级,为企业打磨­­­­­­­­­精细化运营基石
  9. 论文计算机制图,计算机制图教学设计运用论文
  10. 以后睡觉还是关上手机吧!
  11. [句子成分] 一、主语
  12. 线程局部存储-pthread_getspecific和pthread_setspecific使用
  13. 卡斯卡迪亚社区建设者奖:2017年获胜者公布
  14. echart折线图删除_echart清空折线图数据
  15. 中考计算机上机考试如何操作,全国2021年初中信息技术中招考试上机考试提分技巧...
  16. bzoj 4008 亚瑟王 - 动态规划 - 概率与期望
  17. 【中医学】10 针灸-1
  18. 腾讯优图实验室招聘计算机视觉研究员和实习生
  19. 'wx' is not defined no-undef
  20. matplotlib刻度值使用科学记数法

热门文章

  1. ERP顾问是怎么炼成的
  2. c语言读取一行的前几个字符串,c语言读取文件某一列 c语言 读取文件中某一行的前一行...
  3. 图像风格迁移基础入门及实践案例总结
  4. 未分配利润与利润表不一致_资产负债表未分配利润与利润表不一致怎么处理?...
  5. R语言对完全随机分组实验、拉丁方实验及正交实验进行方差分析(例题,过程+代码)
  6. java毕业设计企业人事信息管理mybatis+源码+调试部署+系统+数据库+lw
  7. NFS(网络文件系统)基于什么协议
  8. 换道超车 区块链是你的捷径
  9. 乌镇关注物联网安全 卡巴斯基重获中国政府投标许可
  10. DHCP_RELAY(Option60与Option82)