文章

Clash订阅转换服务搭建

想把V2ray的订阅节点放在Clash中使用,需要使用Github上的开源转换面板,但是在使用别的现成面板担心数据隐私的泄露,于是自己着手搭建一个前端面板。
Sub-Web前端
SubConverter后端

Sub-Web前端搭建

更新系统并安装 Node 与 Yarn

Centos

1
2
3
4
5
6
yum update -y
yum install -y curl wget sudo nodejs git npm
npm install -g cnpm --registry=https://registry.npm.taobao.org
#若提示npm can not found请使用下列命令安装npm后执行上面命令
yum install npm –enablerepo=epel
cnpm install -g yarn

Debian/Ubuntu

1
2
3
sudo apt-get update -y
sudo apt-get install -y curl wget sudo nodejs git npm
sudo npm install -g yarn

命令执行完毕以后,请运行下面的代码查询 Node 与 Yarn 是否安装成功,若是成功会返回版本号。

1
2
3
node -v
#yum install npm –enablerepo=epel
yarn --version

下载并安装 Sub-Web

拉取 sub-web 程序,并进入 sub-web 文件夹

1
2
git clone https://github.com/CareyWang/sub-web.git
cd sub-web

在项目目录中安装构建依赖项,构建的过程稍微有点长

1
yarn install

如果报错node版本不符,可以更新node版本

1
2
3
4
5
6
# 首先,清除npm缓存:
npm cache clean -f
# 安装n, Node的版本管理器:
npm install -g n
# 安装了n模块后,用他来安装指定版本[version.number],此处用node 14
sudo n 14

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

1
yarn serve

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

记住8080端口的防火墙和安全组要开放,不可以使用域名

修改默认后端地址 && 增加远程规则

找到 VPS /root/sub-web/src/views/Subconverter.vue 文件

找到 backendOptions: 将你解析好的后端地址输入进去。域名为你刚才准备的后端域名,要将http改成https,并且增加/sub?的后缀。
这是为了后续不用每次都手动填写后端地址

因为这个版本更新以后,规则方面很少,经常用到的一些经典的 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
111
112
113
114
115
116
117
118
119
{
    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"
      }
    ]
  },

配置完毕后打包网站

配置完毕以后,程序会自动更新,再次刷新前端网页,会出现刚才添加的相关规则

至此,我们的前端调试完毕,我们现在需要打包,生成一个发布目录并将他发布了。

首先停止调试程序,CTRL+C ,退出当前调试,然后执行下面的命令进行打包:

1
yarn build

若是不会停止,请断开VPS,重新连接VPS以后,输入 cd sub-web 再执行

执行以下打包命令,在 /root/sub-web 下面会生成一个 dist 目录,这个目录即为网页的发布目录。

将这个目录的里面的文件复制到你站点的根目录即可。

将前端发布

在宝塔面板中点击增加站点分别将前端站点增加上去,并配置好ssl证书。

/root/sub-web/dist 文件夹内的所有文件复制到前端站点的根目录下即可。

添加重定向规则,这是为了用/sub代替25500端口

1
2
3
4
5
6
7
8
9
10
11
location /sub{
    proxy_pass http://127.0.0.1:25500;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache
    add_header Cache-Control no-cache;
    expires 12h;
}

SubConverter后端搭建

下载对应的 subconverter版本

1
2
wget https://github.com/tindy2013/subconverter/releases/download/v0.7.2/subconverter_linux64.tar.gz
tar zxvf subconverter_linux64.tar.gz

修改配置文件参数(这一步可不操作)

现在我们需要修改后端配置文件中的一些参数

找到VPS文件 /root/subconverter/pref.ini,找到如下参数进行修改

1
2
3
api_access_token=123123dfsdsdfsdfsdf            #随意设置自己知道就行
managed_config_prefix=https://sub.yourdomin.com  #设置成我们刚刚解析的后端域名
listen=127.0.0.1                                #这里改成 127.0.0.1 进行反代

注意不同的用户文件的路径会不同

创建服务进程

编辑 subconverter.service

1
sudo vi /etc/systemd/system/subconverter.service
1
2
3
4
5
6
7
8
9
10
11
12
13
[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

注意修改 ExecStartWorkingDirectory 路径

设置跟随系统启动

1
2
sudo systemctl enable subconverter
sudo systemctl start subconverter

查看日志

1
journalctl -fu subconverter

在线生成转换地址

前端我们也可以搭建,但是没必要,下面分享一些三方的前端,当然你如果不在意隐私前后端都可以用别人的。

页面后端地址填写我们的地址就可以 https://你的主机ip:25500/sub?

节点转换器(支持VLESS)

因为SubConverter不支持VLESS,如果有VLESS需求可以使用节点转换器,使用前端生成,可断网使用。


本文参考

  1. 订阅转换服务 subconverter 后端搭建
  2. sub-web订阅转换面板的搭建教程
  3. Sub-Web搭建教程
本文由作者按照 CC BY 4.0 进行授权