自己搭建ngrok服务器

自己搭建ngrok服务器

参考docker搭建:https://cloud.tencent.com/developer/article/1563108

需要有一个公网的vps

1、GO环境安装

wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.4.1.linux-amd64.tar.gz
sudo echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
sudo echo "export GOROOT=/usr/local/go" >> /etc/profile
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
sudo chmod 755 /usr/local/go -R
sudo chown `whoami`:root /usr/local/go -R
source /etc/profile

2. ngrok下载

cd /usr/local/src
git clone https://github.com/inconshreveable/ngrok.git
sudo chmod 755 /usr/local/src/ngrok -R
sudo chown `whoami`.root /usr/local/src/ngrok -R
3.证书生成
domain=ubuntu.local
export GOPATH=/usr/local/src/ngrok
cd $GOPATH
mkdir $GOPATH/ssl
cd $GOPATH/ssl
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=${domain}/CN=ng.${domain}" -days 3650 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=${domain}/CN=ng.${domain}" -out device.csr
sudo openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 730
cp rootCA.pem $GOPATH/assets/client/tls/ngrokroot.crt
cp device.crt $GOPATH/assets/server/tls/snakeoil.crt 
cp device.key $GOPATH/assets/server/tls/snakeoil.key

4.编译

1)编译server端

下面中编译服务端只选择一种就可以了

GOOS:是目标的OS
GOARCH:是目标的架构

GOOS=linux GOARCH=386 ./make.bash是更换 交叉编译环境

cd $GOROOT/src
GOOS=linux GOARCH=386 ./make.bash
cd $GOPATH
GOOS=linux GOARCH=386 make release-server

cd $GOROOT/src
GOOS=linux GOARCH=amd64 ./make.bash
cd $GOPATH
GOOS=linux GOARCH=amd64 make release-server

cd $GOROOT/src
GOOS=linux GOARCH=arm ./make.bash
cd $GOPATH
GOOS=linux GOARCH=arm make release-server

cd $GOROOT/src
GOOS=darwin GOARCH=386 ./make.bash
cd $GOPATH
GOOS=darwin GOARCH=386 make release-server

cd $GOROOT/src
GOOS=darwin GOARCH=amd64 ./make.bash
cd $GOPATH
GOOS=darwin GOARCH=amd64 make release-server
  • 错误ErrorGOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata

    • 方法1: $GOPATH没有权限,执行sudo chown vk:root $GOPATH -R
    • 方法2:或者就去github.com/jteeuwen/go-bindata中下载,按照
    • 执行命令 :
          > cd $GOPATH
          > go get -u github.com/jteeuwen/go-bindata/go-bindata
      

    你会发现在$GOPATH/src中有了github.com/jteeuwen/go-bindata目录
    https://github.com/jteeuwen/go-bindata

  • 错误:package code.google.com/p/log4go: exec: “hg”: executable file not found in $PATH

    • 原因:code.google.com的东西转移到了github上面,code.google.com上没有了log4go酷
    • 找到code.google.com/p/log4go的字符串grep -Rn code.google.com/p/log4go $GOPATH,修改/log/logger.go,替换为:github.com/V-KING/log4go
  • 看看bin目录:有了ngrokd

2)编译client端

选择下面的一种

cd $GOROOT/src
GOOS=windows GOARCH=386 ./make.bash
cd $GOPATH
GOOS=windows GOARCH=386 make release-client

cd $GOROOT/src
GOOS=windows GOARCH=amd64 ./make.bash
cd $GOPATH
GOOS=windows GOARCH=amd64 make release-client

cd $GOROOT/src
GOOS=linux GOARCH=386 ./make.bash
cd $GOPATH
GOOS=linux GOARCH=386 make release-client

cd $GOROOT/src
GOOS=linux GOARCH=amd64 ./make.bash
cd $GOPATH
GOOS=linux GOARCH=amd64 make release-client

cd $GOROOT/src
GOOS=linux GOARCH=arm ./make.bash
cd $GOPATH
GOOS=linux GOARCH=arm make release-client

cd $GOROOT/src
GOOS=darwin GOARCH=386 ./make.bash
cd $GOPATH
GOOS=darwin GOARCH=386 make release-client

cd $GOROOT/src
GOOS=darwin GOARCH=amd64 ./make.bash
cd $GOPATH
GOOS=darwin GOARCH=amd64 make release-client

5. 服务端ngrokd后台启动运行

例如1:系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了.
例如2:执行一个程序的时候如果窗口关闭,或者按住了ctrl+c就会中中止。

  1. 输入下面命令
sudo apt-get install screen
screen -S keepNgrok
sudo /usr/local/src/ngrok/bin/ngrokd -domain="ng.vkingman.tk" -httpAddr=":8888" -httpsAddr=":8800" -tunnelAddr=":8080"
  1. 按住组合键(多按几次):
    CTRT + A + D

6. 内网ngrok来连接ngrokd服务端

1. 创建一个配置文件ngrok.cfg,内容如下

server_addr: "ng.vkingman.tk:8080"
trust_host_root_certs: false
tunnels:
  pi:
    proto:
      http: "192.168.7.91:80"
  ssh:
    remote_port: 8022
    proto:
      tcp: "22"

  httpstun:
      remote_port: 8888
      subdomain: "www.test"
      proto:
        https: 192.168.1.1:80

注意:http的地址,可以本地的任何一台ip

2. 执行ngrok:

ngrok -config ngrok.cfg start pi ssh

如何在本地调试ngrok?

很多人没有公网上的服务器,没有买域名,没有域名解析服务器怎么办?

答案: 不用担心,ngrok的搭建可以在本地的ubuntu虚拟机中进行的。

只需要解决域名的问题

 

域名

本地域名可以编辑:/etc/hosts

加入

127.0.0.1	ubuntu.local
127.0.0.1	ng.ubuntu.local
127.0.0.1	pi.ng.ubuntu.local
127.0.0.1	pis.ng.ubuntu.local

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答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、付费专栏及课程。

余额充值