| 2025-03-16
在进行内网穿透时,自行搭建 ngrok 服务器可以带来诸多便利,比如拥有更自主可控的环境以及可能获得更好的性能表现等。以下为您详细介绍 ngrok 服务器搭建的步骤。
准备工作
1.服务器一台:推荐选择配置适中、网络稳定且带宽充足的云服务器,例如常见的阿里云、腾讯云等平台的云服务器。您需要确保对服务器拥有 root 权限,以便进行后续的安装和配置操作。
2.备案域名一个:根据相关规定,在国内使用域名进行网络服务需要进行备案。您可以在域名注册商处进行域名注册,并按照其提供的备案流程完成备案。例如,在腾讯云注册域名后,可在其备案系统中提交相关资料进行备案。
3.远程连接工具:如 xshell 或者 putty。这些工具能够帮助您通过本地计算机远程连接到服务器,进行命令行操作。您可以根据个人习惯选择,xshell 在功能丰富度和界面友好性方面表现出色,而 putty 则较为轻量级。
4.下载工具:这里推荐 winscp,它可以方便地在本地计算机和服务器之间进行文件传输。当然,您也可以使用命令行方式进行文件下载,例如使用 wget 命令。
安装过程
1.安装 git:在服务器上执行以下命令安装 git,该命令会安装一系列与 git 相关的依赖包。
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++
如果执行过程中出现问题,您可以参考相关的 git 安装教程,确保安装成功。因为 ngrok 是基于 go 语言开发的,而 git 在获取 ngrok 源代码等后续操作中起着重要作用。
2.安装 go:由于在服务器上直接下载 go 语言安装包速度可能较慢,您可以先在本地下载对应版本的 linux 版 go 安装包,注意选择与服务器位数匹配的版本。例如,如果服务器是 64 位系统,应下载 64 位的安装包。下载完成后,使用 winscp 将安装包上传到服务器的 /usr/local/ 目录下,然后执行解压命令:
tar -zxvf go1.12.4.linux-amd64.tar.gz /usr/local/
解压后,在 /usr/local/ 目录下会出现 go 的目录。接下来需要做一个软连接,执行以下命令:
ln -s /usr/local/go/bin/* /usr/bin/
最后设置全局环境变量,在终端中输入:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin
执行 source /etc/profile 使环境变量生效。通过执行 go version 或者 go env 命令来检测 go 是否安装成功,如果出现相应的版本信息等内容,则代表安装成功。
3.安装 ngrok:为了便于管理,将 ngrok 安装到 /usr/local/ 目录下,执行以下命令克隆 ngrok 的源代码:
cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
克隆完成后,在 /usr/local/ 目录下会出现 ngrok 文件夹。然后配置 ngrok 的环境变量,在终端中输入:
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="abc.club"
生成 ngrok 证书并覆盖原有的证书
进入到 /usr/local/ngrok 目录下,执行以下一系列命令生成证书:
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
生成证书后,需要将新生成的证书覆盖原有的证书,依次执行以下命令,每执行完一条命令,系统提示确认时按 y:
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
至此,ngrok 的安装和配置初步完成。
生成服务端
进入 ngrok 的目录,执行以下命令生成服务端,其中 amd64 代表 64 位的 linux 系统,如果您的服务器是 32 位系统,将 GOARCH 的值改为 386:
cd /usr/local/ngrok/
GOOS=linux GOARCH=amd64 make release-server
生成成功后,会在 ngrok 的 bin 目录下出现一个 ngrokd 文件夹,这就表示服务端生成成功。
生成客户端
生成客户端的步骤与生成服务端类似,进入 ngrok 目录后执行:
cd /usr/local/ngrok/
GOOS=windows GOARCH=amd64 make release-client
生成成功后,会在 ngrok 的 bin 目录下出现一个 windows_amd64 文件夹。不同系统生成客户端时,只需替换 GOOS 和 GOARCH 的值即可,例如:
通过以上详细步骤,您就可以成功搭建属于自己的 ngrok 服务器,为后续的内网穿透应用提供基础支持。在实际操作过程中,如果遇到任何问题,可参考相关技术文档或社区论坛进行解决。
拓展阅读
-云服务器如何选择配置:根据使用场景和预计访问量确定 CPU、内存、硬盘和带宽等配置。如小型网站测试,可选择基础配置;大型应用则需更高配置。
-域名备案流程详解:一般需在域名注册商处提交备案申请,填写网站信息、上传相关证件资料,等待管局审核,审核周期通常为 1 - 20 个工作日。
-openssl 命令详解:openssl 是一个加密工具包,genrsa 用于生成 RSA 私钥,req 用于创建证书签名请求等,可通过 man openssl 命令查看详细文档。