TypechoJoeTheme

香草物语

统计
登录
用户名
密码
/
注册
用户名
邮箱
输入密码
确认密码

自建ngrok服务器,实现树莓派内网穿透

Laughing博主
2020-11-11
/
0 评论
/
1,570 阅读
/
822 个字
/
百度已收录
11/11
本文最后更新于2024年03月18日,已超过184天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

一、前言

最近买了个树莓派4b 8g版本的,想着当作个人网盘使用。正好平时开发用的MySQL、nginx、redis等软件也可以放到树莓派上面跑了。

二、准备材料

  1. 服务器,用来搭建ngrok的服务器,必须有公网IP能正常访问。我用的是centos7.5
  2. 域名,用来做映射。

两个条件缺一不可。如何无法满足上述条件,只能去买别人搭建好的了,但是费用也不低。某网的是10元/月,但是现在腾讯云搞活动,云服务器平均一个月最低才7.3,而且不限制老用户。我其实也是今天薅了个羊毛。

三、搭建

  1. 配置域名

    比如我用lisen.me做映射,那么必须要配置好lisen.me还有*.lisen.me,将域名指向公网IP。

  2. 安装git和Golang

    这个比较简单,直接执行下面的命令即可

    apt-get install build-essential golang mercurial git
  3. 下载源码

    此处使用非官方地址,修复了部分包无法获取

    git clone https://github.com/tutumcloud/ngrok.git ngrok
  4. 生成签名证书

    使用ngrok.com官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,如果不想买SSL证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。

    cd ngrok
    
    NGROK_DOMAIN="lisen.me"
    
    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

    注意替换域名:将lisen.me替换成自己的域名

  5. 替换默认证书

    执行完成后需要替换证书

    cp base.pem assets/client/tls/ngrokroot.crt

    执行完命令后,会提示是否覆盖,输入y回车即可。

  6. 编译服务端

    make release-server release-client
  7. 运行服务端

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

    ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="lisen.me" -httpAddr=":80" -httpsAddr=":443"

    注意替换域名

    httpAddrhttpsAddr 分别是 ngrok 用来转发 httphttps 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。

  8. 编译客户端

    不同客户端编译方法不一样,我这里只介绍win和树莓派的

    8.1 windows 64位

    GOOS=windows GOARCH=amd64 make release-client 

    8.2 树莓派

    GOOS=linux GOARCH=arm make release-client

    执行对应的命令会在bin目录下生成相对应的windows和linux_arm的目录,客户端分别放到两个目录中。

  9. 下载客户端到要穿透的电脑并配置

    因为我使用树莓派运行,所以下载linux_arm目录下的ngrok,然后上传到树莓派系统。

    1. 配置客户端

      在ngrok同级目录创建文件ngrok.cfg,并配置信息,我配置的比较多,按需配置即可

      server_addr: lisen.me:4443
      
      trust_host_root_certs: false
      
      tunnels:
      
       weixin:
      
        subdomain: www
      
        proto:
      
         http: 80
      
       about:
      
        subdomain: seafile
      
        proto:
      
         http: 8000
      
       ssh:
      
        remote_port: 222
      
        proto:
      
         tcp: 22
      
       vnc:
      
        remote_port: 5900
      
        proto:
      
         tcp: 5900
      
       mysql:
      
        remote_port: 3306
      
        proto:
      
         tcp: 3306
      
       redis:
      
        remote_port: 6379
      
        proto:
      
         tcp: 6379
      
      

      采用严格的单空格缩进,可以代理其他主机,直接跟端口默认是本主机,还要注意防火墙的配置。

    2. 运行客户端

      ./ngrok -config ngrok.cfg start-all

      启动后出现online字样说明内网穿透成功。

四、配置服务端开机自启

  1. 思路很简单,就是在/etc/systemd/system/目录下创建一个叫做ngrok.service的文件,然后写入一下代码:
[Unit]
Description=ngrok
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/ngrok/bin/ngrokd -tlsKey=/usr/bin/ngrok/server.key -tlsCrt=/usr/bin/ngrok/server.crt -domain="lisen.me" -httpAddr=:80 -httpsAddr=:443 > /dev/null 2>&1 &
[Install]
WantedBy=multi-user.target

这样的话系统就会把我们的脚本识别为服务,然后我们就可以用systemctl这个工具来轻松管理ngrok的运行与启动。

  1. 运行ngrok

    systemctl start ngrok
  2. 查询ngrok状态

    systemctl status ngrok
  3. 实现开机启动

    systemctl enable ngrok

五、配置客户端开机自启

  1. 思路很简单,就是在/etc/systemd/system/目录下创建一个叫做ngrok.service的文件,然后写入一下代码:
[Unit]
Description=ngrok
After=network.target
[Service]
Type=simple
ExecStart=/home/pi/ngrok/ngrok -config /home/pi/ngrok/ngrok.cfg start-all                                                  
[Install]
WantedBy=multi-user.target

这样的话系统就会把我们的脚本识别为服务,然后我们就可以用systemctl这个工具来轻松管理ngrok的运行与启动。

  1. 运行ngrok

    systemctl start ngrok
  2. 查询ngrok状态

    systemctl status ngrok
  3. 实现开机启动

    systemctl enable ngrok
Nginxngrok
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

香草物语

评论 (0)
  1. mee 闲逛
    Windows 10 · Google Chrome

    楼主辛苦了。

    2018-02-10 回复