前言
通常我们于机场获取订阅链接时都会直接导入进客户端进行使用,但是部分机场的订阅配置可能不支持你正在使用的客户端,通过订阅转换功能我们就能在Clash、V2ray、shadowrocket等客户端进行转换使用,此外,订阅转换允许你加入分流规则配置,极大地增加了代理客户端的分流体验。
开始搭建
准备工作
- VPS一台并装好主流的系统(演示用CentOS)
- 域名托管
- 解析两个域名(一个用于前端,一个用于后端)
域名解析
首先我们解析两个域名到自己的vps
前端,我们使用sub.itleaf.xyz
后端,我们使用suc.itleaf.xyz
搭建Sub-web前端
更新系统并安装 Node 与 Yarn
依次运行下面四行代码,若是 Debian/Ubuntu 系统,请自行替换下面前两行命令中的 yum
为 apt
yum update -y
yum install -y curl wget sudo nodejs git
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g yarn
命令执行完毕以后,请运行下面的代码查询 Node 与 Yarn 是否安装成功,若是成功会返回版本号,如下图。
node -v
yarn --version
安装 Sub-Web
拉取 sub-web 程序,并进入 sub-web 文件夹
cd /root
git clone https://github.com/CareyWang/sub-web.git
cd sub-web
在项目目录中安装构建依赖项
yarn install
使用 webpack 运行 Web 客户端以进行本地开发。
yarn serve
浏览器访问http://服务器ip:8080/即可预览sub-web
修改默认后端地址及配置
我们需要找到 Subconverter.vue 文件修改一下默认后端地址
cd /root/sub-web/src/views
然后打开Subconverter.vue
vi Subconverter.vue
大概在250行附近,找到backendOptions,将其改为你刚刚解析的后端的地址,需要加上https
此外你还可以修改并添加更多的后端地址,格式如下比如:
customBackend: {
"我的专属后端": "https://suc.itleaf.xyz/sub?",
"id9.cc (品云提供)": "https://v.id9.cc",
"api.v1.mk(肥羊提供-四端八核负载)": "https://api.v1.mk/sub?",
},
backendOptions: [
{ value: "https://suc.itleaf.xyz/sub?" },
{ value: "https://v.id9.cc" },
{ value: "https://api.v1.mk/sub?" },
],
更换远程规则
remoteConfig: [
{
label: "fl0w1ndの专属规则",
options: [
{
label: "fl0w1ndの自用分组",
value:
"https://raw.githubusercontent.com/fl0w1nd/clash/main/%E4%B8%AA%E4%BA%BA%E8%87%AA%E7%94%A8%E8%A7%84%E5%88%99/leaf.ini"
},
{
label: "全分组-地区自动选择",
value:
"https://cdn.jsdelivr.net/gh/lhl77/sub-ini@main/tsutsu-full-urltest.ini"
},
{
label: "超精简分组-含国内分流",
value:
"https://cdn.jsdelivr.net/gh/lhl77/sub-ini@main/tsutsu-mini-gfw.ini"
},
]
},
{
label: "ACL4SSR",
options: [
{
label: "ACL4SSR_Online 默认版 分组比较全 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online.ini"
},
{
label: "ACL4SSR_Online_AdblockPlus 更多去广告 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_AdblockPlus.ini"
},
{
label: "ACL4SSR_Online_NoAuto 无自动测速 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_NoAuto.ini"
},
{
label: "ACL4SSR_Online_NoReject 无广告拦截规则 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_NoReject.ini"
},
{
label: "ACL4SSR_Online_Mini 精简版 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini.ini"
},
{
label: "ACL4SSR_Online_Mini_AdblockPlus.ini 精简版 更多去广告 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_AdblockPlus.ini"
},
{
label: "ACL4SSR_Online_Mini_NoAuto.ini 精简版 不带自动测速 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_NoAuto.ini"
},
{
label: "ACL4SSR_Online_Mini_Fallback.ini 精简版 带故障转移 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_Fallback.ini"
},
{
label: "ACL4SSR_Online_Mini_MultiMode.ini 精简版 自动测速、故障转移、负载均衡 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_MultiMode.ini"
},
{
label: "ACL4SSR_Online_Full 全分组 重度用户使用 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full.ini"
},
{
label: "ACL4SSR_Online_Full_NoAuto.ini 全分组 无自动测速 重度用户使用 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_NoAuto.ini"
},
{
label: "ACL4SSR_Online_Full_AdblockPlus 全分组 重度用户使用 更多去广告 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_AdblockPlus.ini"
},
{
label: "ACL4SSR_Online_Full_Netflix 全分组 重度用户使用 奈飞全量 (与Github同步)",
value:
"https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_Netflix.ini"
}
]
},
{
label: "特殊",
options: [
{
label: "基础无规则",
value:
"https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/basic.ini"
}
]
}
]
},
复制代码并替换从remoteConfig开始直到出现form:{间的内容
全部替换完后保存,刷新刚刚的预览网页,即可实时显示效果,确认自己的配置没有问题后,按 ctrl+c
停止调试,然后输入以下代码构建程序
yarn build
随后会在 /root/sub-web
目录下生成dist文件夹,网页信息就都在里面了。如果需要修改配置可以直接在该文件下改,或者删除改目录,然后 build 重建
宝塔搭建网站
点击添加站点,输入前端域名,其它设置如图所示
然后等待片刻网站创建完毕后,进入网站根目录,删除所有文件,user.ini 的防跨站文件不用管他
然后去 /root/sub-web/dist目录下复制所有文件粘贴到网站根目录
随后即可通过域名访问你的前端
后端搭建
安装并修改配置文件
放置于/root目录下,目前是0.7.2最新版本,若有更新请前往github项目Release查看并替换地址
cd /root
wget https://github.com/tindy2013/subconverter/releases/download/v0.7.2/subconverter_linux64.tar.gz
tar -zxvf subconverter_linux64.tar.gz
然后用 vi\ 宝塔 \finashell等文本编辑功能打开 /root/subconverter/pref.ini
文件
修改 api_access_token
和 managed_config_prefix
和 listen
应该在第 6 行和第 130 行和 249 行
改为
api_access_token= #随意设置
managed_config_prefix=https://suc.itleaf.xyz #后端地址
listen=127.0.0.1 ##这里改成 127.0.0.1 进行反代
创建服务进程并启动
接下来我们需要创建一个服务,让VPS每次重启或是开机自动运行后端程序
找到VPS目录 /etc/systemd/system
,创建一个名为 sub.service
的文件
打开文件,贴入以下内容,保存。
[Unit]
Description=A API For Subscription Convert
After=network.target
[Service]
Type=simple
ExecStart=/root/subconverter/subconverter
WorkingDirectory=/root/subconverter
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
检查运行状态以及设置开机自启
systemctl daemon-reload
systemctl start sub
systemctl enable sub
systemctl status sub
显示active即为成功
宝塔反代
新建一个站点,域名为刚刚解析的后端域名,其它设置不变
提交后点击网站名,选择反向代理,添加如下所示的反向代理
随后访问你的后端域名,显示如下即可说明后端搭建成功
到此为此,前端与后端都搭建成功,现在访问前端即可进行订阅转换