如何搭建一个clash订阅服务器用来集成自己的节点呢?

906342a2e47d0831ba0090380f10b9f8.2023-11-06 20.51.48

本教程依托于GitHub两个项目:

同时需要一个已解析到 VPS 的域名,这里以 mytest.com 为例.

前端搭建

安装 Node 和 Yarn

  • 执行下列命令安装

apt update -y
apt install -y curl wget sudo nodejs git
npm install -g yarn
  • 执行下列命令验证是否安装成功

node -v
yarn --version

下载并安装 Sub-Web

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

git clone https://github.com/CareyWang/sub-web.git
cd sub-web
  • 在项目目录中安装构建依赖项,构建的过程稍微有点长

yarn install

tips: 这里安装的时候可能会提示 node.js版本过低,按照要求升级node.js版本即可,这里不再赘述。

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

yarn serve

到目前为止,浏览器访问 http://服务器ip:8080/ 应该可以进行前端 sub-web 的预览了。如下图:

da481253b2ad74e5efb985dd71ba90c2_2023-11-06 21.29.04

a20374ea6175c9fbd27fd735ad8e460_2023-11-06 21.28.11

更换远程规则

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

找到 backendOptions, 将解析好的后端地址输入进去。域名为你刚才准备的后端域名,要将http改成https,并且增加/sub?的后缀。例如:https://mytest.com/sub?

找到 258行 remoteConfig [:

50803524cfc1203a97585b4bc5e31_2023-11-06 23.53.10

插入下面内容:

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

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

7453e7972fd819fc8c61087753b22_2023-11-06 21.40.32

至此,前端搭建完毕,现在需要打包,生成一个发布目录

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

yarn build

在 /root/sub-web 下面会生成一个 dist 目录,这个目录即为网页的发布目录。

092fdffb7dd648d28f11ab8812fa5c45_2023-11-06 21.44.13

然后将dist目录下的文件复制到 web 服务站点的根目录即可~

SubConverter 后台搭建

下载并解压 SubConverter 二进制文件

cd ~
wget https://github.com/tindy2013/subconverter/releases/download/v0.8.1/subconverter_linux64.tar.gz
tar -zxvf subconverter_linux64.tar.gz

完成以后,在根目录下会多出一个 subconverter 的文件夹,这个就是我们的后端程序

修改文件配置及参数

cp pref.example.ini pref.ini

然后编辑 pref.ini 文件:

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

创建服务进程

cd /etc/systemd/system
touch sub.service

然后编辑 sub.service 文件。

[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

检查运行状态以及设置开机自启

systemctl daemon-reload
systemctl start sub
systemctl enable sub
systemctl status sub

后台域名配置反代

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;
}

这样就大功告成了~ 访问前端地址,输入自己的节点,进行转换吧!