Clash 节点聚合管理

对于使用科学上网的用户来说，购买的机场可能不止一个，因此他们通常会拥有多个订阅地址。如下图所示：

一个机场对应一个订阅地址会带来以下弊端：

订阅地址变更成本高
当机场更改订阅地址时，Clash 客户端需要手动更新订阅地址。如果同时使用多个订阅地址，修改的工作量会成倍增加。尤其当订阅在多个设备上使用时，每台设备都需要单独修改，操作更加繁琐。

订阅切换不便
Clash 客户端每次只能选择一个订阅，尽管不同订阅可能有更优质的节点，但需要切换订阅才能使用，过程较为麻烦且效率低下。

针对以上问题，我们迫切需要一种方案，能够将多个订阅中的节点合并到一个订阅中。这样，用户只需面对一个统一的订阅地址即可使用，极大简化操作。

Sub-Store

Sub-Store 正是为了解决这一问题而设计的一款工具。它可以将多个订阅中的节点合并到一个统一的订阅中，用户只需使用这个统一的订阅地址即可方便地管理和使用所有节点。通过 Sub-Store，大幅降低了订阅地址变更的复杂性，同时无需频繁切换订阅，轻松实现最优节点的灵活使用。

搭建

准备目录结构

Copy
.
├── docker-compose.yaml
├── .env
└── redis
└── redis.conf

.env

Copy
#容器名称前缀
COMPOSE_PROJECT_NAME=sub-store
#容器数据根目录
PROJECT_HOME=/opt/sub-store
#订阅定时更新周期
SUB_STORE_BACKEND_SYNC_CRON='55 23 * * *'
#安全密钥（勿泄露）
SUB_STORE_FRONTEND_BACKEND_PATH=/h1j2k3l4m5n6o7p8q9r0s1t2u3v

.redis.conf

Copy
# Redis configuration file example

# Enable RDB persistence
save 900 1
save 300 10
save 60 10000

# Enable AOF persistence
appendonly yes

docker-compose.yaml
假设我们的服务器 IP 为：198.22.145.117

Copy
services:
# 订阅转换服务
sub:
image: stilleshan/sub
restart: always
environment:
- API_URL=http://198.22.145.117:13001
- SHORT_URL=http://198.22.145.117:13003
- SITE_NAME=SigeShuo
ports:
- "13001:80"
# Sub-Store 订阅管理服务
app:
image: xream/sub-store
restart: always
environment:
- SUB_STORE_BACKEND_SYNC_CRON=${SUB_STORE_BACKEND_SYNC_CRON}
- SUB_STORE_FRONTEND_BACKEND_PATH=${SUB_STORE_FRONTEND_BACKEND_PATH}
ports:
- "13002:3001"
volumes:
- ${PROJECT_HOME}/data:/opt/app/data
# 短链服务
myurls:
image: stilleshan/myurls:latest
restart: always
environment:
- MYURLS_DOMAIN=198.22.145.117:13003
- MYURLS_PROTO=http
volumes:
- ${PROJECT_HOME}/myurls/logs:/app/logs
ports:
- "13003:8080"
depends_on:
- redis
# 短链缓存服务
redis:
image: redis:latest
restart: always
volumes:
- ${PROJECT_HOME}/redis:/data
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
# 容器自己更新监听服务
watchtower:
image: containrrr/watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock

Copy
# docker-compose.yaml 同级目录下执行以下命令即可部署
docker compose up -d

如果使用域名或 nginx 反代，仅需要变更以上配置中的 IP 调整为域名即可。

使用

Sub-Store

Sub-Store 访问地址：

Copy
http://198.22.145.117:13002?api=http://198.22.145.117:13002/h1j2k3l4m5n6o7p8q9r0s1t2u3v

h1j2k3l4m5n6o7p8q9r0s1t2u3v 这是在 .env 文件中配置的安全密钥，您可以随意修改。当密钥更新后，以上地址中的密钥需要替换为更新后的值。

添加单条订阅

添加组合订阅

Subconverter 订阅转换

首先拷贝 Sub-Store 中的聚合订阅地址

通过 Subconverter 转换成含分组的订阅地址

Clash 导入订阅转换地址

导入 Subconverter 转换后的订阅地址，也可以使用短地址生成的短链接

总结：

在使用 Sub-Store 管理多个订阅地址时，您只需在 Sub-Store 后台进行增、删、改操作，或在聚合订阅管理中修改包含的单个订阅信息，即可轻松管理 Clash 客户端的节点信息。Clash 客户端只需在需要时进行刷新，变更即可生效，无需手动调整 Clash 配置。

请注意，当 Sub-Store 部署在公网时，务必保护 .env 文件中的 SUB_STORE_FRONTEND_BACKEND_PATH 配置密钥，以防他人获取您的订阅信息。