1184 字
6 分钟
自建 Clash 订阅转换

本文主要说明Clash订阅转换:Docker搭建后端处理subconverter,以及前端Sub-Web,并利用Nginx反代

2020年12月23日更新:利用Docker-compose一键部署

一、准备工作#

首先,你需要两个域名,一个给前端,一个给后端使用,本文举例后端:suc.test.com,前端:sub.test.com

二、搭建后端subconverter#

原始项目地址:https://github.com/tindy2013/subconverter

修改项目地址:https://github.com/stilleshan/subconverter

后者相对于原版修改了以下部分:

  • 去除自动选择 url-test以解决连接数爆涨问题.
  • 全球拦截增加节点选择,以解决Google Analytics的访问需求.
  • 修改时区 镜像默认时区为Asia/Shanghai

Docker启动#

Clone至本地

Terminal window
git clone https://github.com/stilleshan/subconverter.git

修改 pref.ini

Terminal window
api_access_token=123456 #随意设置
managed_config_prefix=https://suc.test.com #设置成后端域名
listen=127.0.0.1 #这里改成 127.0.0.1 进行反代

重新构建、启动

Terminal window
docker build -t stilleshan/subconverter:latest .
docker run -d --name=subconverter --restart=always -p 25500:25500 stilleshan/subconverter:latest

Nginx反代#

将以下配置写入你的网站conf中,本文例子为:suc.test.com.conf,Oneinstack默认网站配置路径为/usr/local/nginx/conf/vhost

location / {
proxy_pass http://0.0.0.0:25500;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

然后重载Nginx:service nginx reload 最后打开测试:https://suc.test.com/sub?target=clash&url=sub_url 实际上转换只使用后端就足够了,但为了偷懒以及方便选择不同配置还是继续搭建前端

三、搭建前端Sub-Web#

项目地址:https://github.com/CareyWang/sub-web

这里主要说一下如何添加ACL4SSR配置、自定义配置,简要说明安装过程

下载#

Clone至本地

Terminal window
git clone https://github.com/CareyWang/sub-web.git

修改相关配置#

修改/sub-web/src/views/Subconverter.vue文件 找到大约在257行 backendOptions:,替换后面的 http://127.0.0.1:25500/sub?为https://sub.test.com/sub? 找到下面RemoteConfig:[,这是自定义规则地址的地方其结构为:

{
label: "第一个label",
options: [
{
label: "第二个label",
value:
"第二个label的具体地址"
}
]
},

对应下图: 这里添加ACL4SSR的规则配置,只需要将以下配置粘贴过来即可,也可以参照上面结构加入自定义配置

{
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"
}
]
},

安装依赖与打包发布#

这里需要安装 Node 与 Yarn 你可以通过以下命令查看是否安装成功

node -v
yarn -v

安装构建依赖项

Terminal window
yarn install

使用 webpack 运行 Web 客户端以进行本地开发

Terminal window
yarn serve

浏览器访问 http://服务器ip:8080/ 应该可以进行前端 sub-web 的预览了。

打包

Terminal window
yarn build

将生成的 dist 目录复制到你的网站目录下,修改网站 conf的 root位置,后加 /dist

Terminal window
root /root/sub-web/dist;

四、Docker-compose一键部署#

参考Yohane聚聚博客:https://yohane.art/development%20notes/2020/12/23/subc.html

创建配置文件#

新建/root/nginx/conf.d/server.conf文件,写入以下配置

!/root/nginx/conf.d/server.conf
# vhost of subc with proxy
server {
listen 80;
server_name <domain>;
location / {
proxy_pass http://subc:25500;
}
}
server {
listen 80;
server_name <domain>;
location / {
proxy_pass http://subweb;
}
}

新建/root/subconverter/docker-compose.yml文件,写入以下配置

!/root/subconverter/docker-compose.yml
version: "3"
services:
subc:
hostname: subc
restart: always
container_name: subc
image: tindy2013/subconverter:latest
subweb:
hostname: subweb
restart: always
container_name: subweb
image: careywong/subweb:latest
nginx:
hostname: nginx
restart: always
container_name: nginx
image: nginx:latest
ports:
- "80:80"
- "443:443"
links:
- "subc:subc"
- "subweb:subweb"
volumes:
- /root/nginx/conf.d:/etc/nginx/conf.d

启动#

docker-compose -d

五、总结#

至此,你的Clash订阅转换就搭建好了,如果觉得ALC4ALL默认的配置文件不适合你,也可以在此基础上魔改出适合自己的规则,并时刻与ALC4ALL更新的规则同步,这将在后续文章中讲述。

自建 Clash 订阅转换
https://lwnlh.com/posts/14_self-built_clash_subscription_conversion/
作者
ResidualBlood
发布于
2020-12-22
许可协议
CC BY-NC-SA 4.0