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