目前各个平台的代理软件的格式各不相同,各个服务厂商通常会提供给我们各个软件的订阅链接,但一些比较小的厂商提供的链接有限,或者提供的分流策略组不符合我们的预期,这个时候我们可以通过转换工具转换成我们所用软件的链接格式,或者使用自己修改的策略组实现更加灵活的分流。
准备工作#
部署自己的前后端通常需要自己的域名,部分项目使用 Vercel 托管也可,因此最好准备:
项目一:subconverter & sub-web#
subconverter
加 sub-web
是最常用的项目,目前后端仍在更新,并且支持了最新的协议转换。
项目地址:
前端:sub-web
后端:subconverter
一键脚本安装#
网上找到的一键脚本:
1
2
3
4
| # ubuntu
apt-get install -y wget && wget -O install.sh https://cdn.mxlong.com/install/subweb/install.sh && chmod +x ./install.sh && ./install.sh
# centos
yum install -y wget && wget -O install.sh https://cdn.mxlong.com/install/subweb/install.sh && chmod +x ./install.sh && ./install.sh
|
脚本中的后端并不是原作者的后端,如有需要可以自行更换脚本中的下载地址。
手动安装#
后端搭建#
首先解析一个域名用作后端访问,这里以 backend.domain.com
为例,实际以自己的域名为准。
连接VPS后,下载并解压后端程序,可以使用如下命令,也可以使用宝塔面板,下载程序后解压。
1
2
3
| cd /opt # 这里是程序安装目录,可以自行更换
wget https://github.com/tindy2013/subconverter/releases/download/v0.9.0/subconverter_linux64.tar.gz
tar -zxvf subconverter_linux64.tar.gz
|
完成以后在 /opt
文件夹下会出现 subconverter
文件夹,出现如下结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| .
├── subconverter
│ ├── base
│ ├── cache
│ ├── config
│ ├── generate.ini
│ ├── gistconf.ini
│ ├── pref.example.ini
│ ├── pref.example.toml
│ ├── pref.example.yml
│ ├── pref.toml
│ ├── profiles
│ ├── rules
│ ├── snippets
│ └── subconverter
└── subconverter_linux64.tar.gz
|
修改相关配置参数,找到文件:/opt/subconverter/pref.toml
,修改下面两个参数:
1
2
| api_access_token = "密码可以随意更改,也不用记住" # 大概在第7行
managed_config_prefix = "https://backend.domain.com" # 改成解析的后端域名,大概在第149行
|
这里需要注意以下两点:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| cat > /etc/systemd/system/sub.service <<EOF
[Unit]
Description=Subconverter
After=network.target
[Service]
Type=simple
LimitAS=infinity
LimitRSS=infinity
LimitCORE=infinity
LimitNOFILE=65535
ExecStart=/opt/subconverter/subconverter
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
|
如果修改了后端的运行目录,上边命令中第 12
行运行位置也要相应更改。
设置开机自启:
1
2
3
4
| systemctl enable sub # 开机自启
systemctl start sub # 启动
systemctl restart sub # 重启
systemctl status sub # 查看运行状态
|
到这里后端地址是 http://127.0.0.1:25500/sub?
,由于上边修改了 managed_config_prefix
,这时候我们需要反向代理。以后端域名新建一个站点,以宝塔为例,新建站点后打开设置,点击 反向代理
,设置如下内容
保存后添加 SSL
访问,至此后端搭建完成。
前端搭建#
首先新建一个前端站点目录,无需数据库,新建后配置好 SSL
,这里以 web.domain.com
为例。
前端项目需要用到 Node
和 Yarn
,因此首先安装:
1
2
3
4
5
6
| apt update && apt upgrade
apt install nodejs
apt install yarn
# 完成后使用如下命令查看是否安装成功
node -v
yarn --version
|
下载 sub-web
。默认下载到当前目录/root
,下载的位置可以自行选择,可以下载到前端站点目录中下(首先进入/web.domain.com
后再执行如下命令)
1
2
| git clone https://github.com/CareyWang/sub-web.git
cd sub-web
|
安装依赖
修改后端配置及策略组文件。找到/root/sub-web/src/views/Subconverter.vue
文件,打开后在258行找到如下内容并修改,即将本地地址修改为后端地址,也可以添加多个后端地址。
1
2
| - backendOptions: [{ value: "http://127.0.0.1:25500/sub?" }]
+ backendOptions: [{ value: "https://backend.domain.com/sub?" }]
|
随后在下边的 remoteConfig
后修改策略组配置地址,可以根据文件的格式添加,这里给出 ACL4SSR规则
配置,remoteConfig[
后回车复制即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
| {
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: "ACL4SSR 本地 默认版 分组比较全",
value: "config/ACL4SSR.ini"
},
{
label: "ACL4SSR_Mini 本地 精简版",
value: "config/ACL4SSR_Mini.ini"
},
{
label: "ACL4SSR_Mini_NoAuto.ini 本地 精简版+无自动测速",
value: "config/ACL4SSR_Mini_NoAuto.ini"
},
{
label: "ACL4SSR_Mini_Fallback.ini 本地 精简版+fallback",
value: "config/ACL4SSR_Mini_Fallback.ini"
},
{
label: "ACL4SSR_BackCN 本地 回国",
value: "config/ACL4SSR_BackCN.ini"
},
{
label: "ACL4SSR_NoApple 本地 无苹果分流",
value: "config/ACL4SSR_NoApple.ini"
},
{
label: "ACL4SSR_NoAuto 本地 无自动测速 ",
value: "config/ACL4SSR_NoAuto.ini"
},
{
label: "ACL4SSR_NoAuto_NoApple 本地 无自动测速&无苹果分流",
value: "config/ACL4SSR_NoAuto_NoApple.ini"
},
{
label: "ACL4SSR_NoMicrosoft 本地 无微软分流",
value: "config/ACL4SSR_NoMicrosoft.ini"
},
{
label: "ACL4SSR_WithGFW 本地 GFW列表",
value: "config/ACL4SSR_WithGFW.ini"
}
]
},
|
最后执行如下命令可打包网站:
完成后会在 /root/sub-web/
文件夹下生成一个 dist
目录,这个目录就是网站的全部内容,可以将里面所有内容复制到前端站点的目录,如果是将前端下载到了站点目录而不是根目录,可以在宝塔面板中设置网站的运行目录,选择为 /dist
即可。
如需要修改前端的配置,如加入更多的策略组配置文件,修改 /root/sub-web/src/views/Subconverter.vue
文件后,再在 /root/sub-web
目录下执行 yarn build
命令,随后再把 /dist
目录下内容替换到网站目录。
至此前后端都已搭建完毕,打开前端地址即可正常使用。
项目二:subweb#
这个项目是一个前后端加短链的 Docker
整合版,相比较原项目前后端,有如下优点:
Docker Compose
部署十分方便- 前端界面美观
- 远程配置和自定义后端选择框比较明显
项目地址:
同样部署两个网站,并配置好证书,一个用作短链,一个用作订阅转换前后端,如果不需要短链服务,一个二级域名即可。
然后使用 docker compose
直接部署:
1
2
| cd ~ && mkdir subconverter && cd subconverter
wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/sub/docker-compose.yml
|
将下载的 compose
文件中第 16
行的域名改为自己的短链,然后运行:
1
2
| cd /root/subconverter
docker-compose up -d
|
完成后文件夹下会多出两个文件夹,/data & /conf
,在 conf/config.js
文件中修改对应的地址:
1
2
3
| apiUrl: 'http://web.sub.com', # 订阅转换
shortUrl: 'https://a.com', # 短链
# 13行的短链地址也要更换
|
💡 如果不需要短链服务,只需要在 compose
文件中删除第 12-32
行,将默认使用作者短链接,也可以修改 conf/config.js
使用其他短链接服务。
反向代理#
订阅转换前后端的反向代理目标 url
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # 订阅转换前后端的目标url
http://127.0.0.1:18080
# 短链反向代理配置(可直接添加到配置文件):
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:8002;
add_header 'Access-Control-Allow-Origin' '*';
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
}
|
项目三:sub2clash#
这个项目主要是将其他格式转换成 clash
订阅,有如下特点:
- 可以方便地添加最新协议节点
- 可以灵活添加国家和地区分组
- 可以添加自定义规则
- 可以使用自定义短链接
项目地址:
sub2clash
1
2
3
| mkdir -p /opt/sub2clash && cd /opt/sub2clash
wget https://raw.githubusercontent.com/nitezs/sub2clash/main/docker-compose.yml
docker-compose up -d
|
可以自己修改 docker compose
的环境变量,可修改参数如下:
变量名 | 说明 | 默认值 |
---|
PORT | 端口 | 8011 |
META_TEMPLATE | 默认 meta 模板文件名 | template_meta.yaml |
CLASH_TEMPLATE | 默认 clash 模板文件名 | template_clash.yaml |
REQUEST_RETRY_TIMES | Get 请求重试次数 | 3 |
REQUEST_MAX_FILE_SIZE | Get 请求订阅文件最大大小(byte) | 1048576 |
CACHE_EXPIRE | 订阅缓存时间(秒) | 300 |
LOG_LEVEL | 日志等级,可选值 debug ,info ,warn ,error | info |
SHORT_LINK_LENGTH | 短链长度 | 6 |
模板的设置可以参考默认,也可以自行设置:
<all>
为添加所有节点<countries>
为添加所有国家策略组<地区二位字母代码>
为添加指定地区所有节点,例如 <hk>
将添加所有香港节点
meta 配置也可以参考内核文档的推荐配置:虚空终端,GEOSITE
目录可以参考 v2fly/domain-list-community
项目四:SubConv#
Python
实现的开源 Clash
订阅转换,与 subconverter
相同,接受各种格式的原始订阅,也支持多个订阅。但是使用了 proxy-provider
和 rule-provider
特性实现了任意系统上节点和规则的自动更新。为了解决无法访问 GitHub
上的规则集的问题,项目默认开启了对规则集的代理。同时,由于使用 Python
实现,这个项目非常容易运行在 Serverless
服务,例如 Vercel 上。
项目地址:
1
2
3
| cd ~ && mkdir /opt/subconv && cd /opt/subconv
wget https://raw.githubusercontent.com/SubConv/SubConv/main/docker-compose.yml
docker-compose up -d
|
也可以使用 Vercel 部署,成本更低,并且部署也方便,Fork 原项目后在 Vercel 新建项目导入即可,如有需要可以修改配置文件 config.yaml
。
项目五:sublink#
这个项目主要是方便自建用户统一管理节点地址,并生成唯一的链接,同时也支持添加自定义配置,只是添加起来并不是那么方便,此外项目占用较大。
项目地址:
sublink
同样使用 docker-compose
,完成后再反向代理,地址为 http://127.0.0.1:8000
1
2
3
| cd /opt && mkdir sublink && cd sublink
wget https://raw.githubusercontent.com/jaaksii/sublink/master/docker-compose.yml
docker-compose up -d
|