Surgio 自有服务器部署

Surgio 是一个开源的代理规则生成器,其可以将代理服务提供商所提供的的订阅转换为自定义的规则,并保证节点与代理服务提供商的实时同步。使用第三方网站托管平台虽然能够部署 Surgio API,但是存在封号的风险。本文将介绍如何使用自有的服务器部署 Surgio。


尽管 Surgio 官方文档中提供了在 VercelNetlifyRailway 等第三方网站托管平台上部署 Surgio API 的说明,但是此前受制于平台的 TOS,可能存在封号的风险。此前 Vercel 已经明确部署 Surgio 是违反其平台 TOS 中关于代理有关的条款,并进行了封号(笔者也因此被封号)。因此,自行部署 Surgio 可以最大程度的保证 Surgio 服务的可靠性不受到平台的限制。

Surgio 官方提供的文档中有提到自行部署的方式,但是由于说明较少,因此在这里更加详细的说明 Surgio 自有服务器部署的教程。

本地安装、调试 Surgio

在开始在服务器端部署 Surgio 之前,建议现在本地完成 Surgio的仓库的部署和自定义。这一过程可以根据 Surgio 官方提供的教程,在本地完成 Surgio 仓库的初始化,并修改好代理的规则和对应的代理服务商所提供的订阅规则。上述的说明可以在 Surgio 的官方文档中找到对应的说明,并进行修改。

修改完成后,可以在本地的命令行通过 npx surgio generate 命令测试代理规则的生成。生成完成后可以把对应的配置文件导入对应的代理软件进行测试,测试无误后即可继续。

服务器端部署

依赖安装

首先完成对应的依赖的安装。笔者在这里选用的是 Oracle Cloud 的 ARM 服务器,使用的是 Ubuntu 的操作系统,以下的内容是基于以上的安装环境所叙述的。

在通过 SSH 连接到服务器后,安装 Nodejs 和 NPM。可以通过一下两条命令安装对应的依赖。

1
2
sudo apt-get install -y nodejs
sudo apt-get install -y npm

在完成了这两个软件的安装后,就可以正常的运行 Surgio API了。

但是,需要让 Surgio API 能够顺利的在后台中运行还需要安装一些其他的软件才能够使得其在后台运行而不会在 SSH 连接断开后终止。因此,这需要一些其他的插件来进行管理,PM2 就是其中一个选择。

安装 PM2

PM2 是一个管理 Node.js 进程的工具,他可以使得 Surgio API 在 SSH 连接端口后仍然保持在后台运行。可以通过以下的方式在服务器的全局中安装 PM2。

1
npm install pm2 -g

等待其运行完成后就可以继续接下来的步骤了。

上传 Surgio & 配置 PM2

在完成了以上的调试以后,可以将 Surgio 上传到服务器上了。上传完成后,切换到 Surgio 所在的文件夹,使用一下的命令完成 Surgio 的依赖的安装。

1
npm install

随后可以进行 PM2 的配置。在 Surgio 所在的文件夹下,使用一下命令生成 PM2 的配置文件。

1
pm2 init

接着修改对应生成的 ecosystem.config.js。默认生成的 apps 中包含的是 script 和 watch 选项。在这里可以添加 name 和 cwd 参数。其中,name 对应的是在 PM2 中所存储的进程名称,script 对应的是 Surgio 文档中所要求生成的 gateway.js 文件,cwd 所对应的是 Surgio 文件夹的文件地址。

在这里,需要根据自身的实际情况修改 Surgio 的文件地址。以下提供的是笔者所使用的配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module.exports = {
apps : [{
name: 'Surgio',
script: 'gateway.js',
watch: '.',
cwd: '/home/ubuntu/Surgio'
}],

deploy : {
production : {
user : 'SSH_USERNAME',
host : 'SSH_HOSTMACHINE',
ref : 'origin/master',
repo : 'GIT_REPOSITORY',
path : 'DESTINATION_PATH',
'pre-deploy-local': '',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
'pre-setup': ''
}
}
};

在完成了这些设置以后,大部分的设置就已经完成了。随后可以通过下面的命令来启动 PM2 服务。

1
pm2 start

在启动了 Surgio 服务后,建议通过下面的命令来设置 Surgio 的自启动等设置。

1
2
pm2 save
pm2 startup

在运行了第二行命令后,会生成一系列命令。将其复制到命令行后运行,就可以保证 PM2 在重启后自动启动 Surgio API 进程。

最后就可以在当前的服务器对应的 IP 和端口来访问到 Surgio API。端口信息可以在 gateway.js 中设置。

如果在后续需要对 Surgio 的配置文件进行修改的话,修改完成后需要使用 PM2 重启对应的进程。其命令如下所示:

1
pm2 restart Surgio

结语

完成了这些设置以后,就可以正常的使用 Surgio API 了。如果对 IP 加端口的方式来进行访问的方式不满意的话,可以使用 Nginx 等软件对网站进行反向代理的方式,使用网站域名的方式来进行访问。这一部分可以在网络上找到足够多的教程来进行,因此在这里就不再赘述了。

至此,就已经完成了 Surgio API 的自有服务器上的部署。

Author

Shawn Huang

Posted on

2022-07-24

Updated on

2022-07-25

Licensed under

Comments