最全的订阅转换项目
订阅转换项目部署大全。

前言

目前各个平台的代理软件的格式各不相同,各个服务厂商通常会提供给我们各个软件的订阅链接,但一些比较小的厂商提供的链接有限,或者提供的分流策略组不符合我们的预期,这个时候我们可以通过转换工具转换成我们所用软件的链接格式,或者使用自己修改的策略组实现更加灵活的分流。

准备工作

部署自己的前后端通常需要自己的域名,部分项目使用 Vercel 托管也可,因此最好准备:

  • VPS一台
  • 两个解析的域名,二级域名即可

项目一:subconverter & sub-web

subconvertersub-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,这时候我们需要反向代理。以后端域名新建一个站点,以宝塔为例,新建站点后打开设置,点击 反向代理,设置如下内容

https://pic.imgdb.cn/item/62f5bb0716f2c2beb1f69f76.png

保存后添加 SSL访问,至此后端搭建完成。

前端搭建

首先新建一个前端站点目录,无需数据库,新建后配置好 SSL,这里以 web.domain.com 为例。

前端项目需要用到 NodeYarn ,因此首先安装:

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即可。

https://pic.imgdb.cn/item/62f5c5af16f2c2beb1146e2d.png

如需要修改前端的配置,如加入更多的策略组配置文件,修改 /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 订阅,有如下特点:

  • 可以方便地添加最新协议节点
  • 可以灵活添加国家和地区分组
  • 可以添加自定义规则
  • 可以使用自定义短链接

项目地址:

sub2clash

部署

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_TIMESGet 请求重试次数3
REQUEST_MAX_FILE_SIZEGet 请求订阅文件最大大小(byte)1048576
CACHE_EXPIRE订阅缓存时间(秒)300
LOG_LEVEL日志等级,可选值 debug,info,warn,errorinfo
SHORT_LINK_LENGTH短链长度6

模板

模板的设置可以参考默认,也可以自行设置:

  • <all> 为添加所有节点
  • <countries> 为添加所有国家策略组
  • <地区二位字母代码> 为添加指定地区所有节点,例如 <hk> 将添加所有香港节点

meta 配置也可以参考内核文档的推荐配置:虚空终端GEOSITE目录可以参考 v2fly/domain-list-community

项目四:SubConv

Python 实现的开源 Clash 订阅转换,与 subconverter 相同,接受各种格式的原始订阅,也支持多个订阅。但是使用了 proxy-providerrule-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