Featured image of post 最速 Substore 訂閲管理指南

最速 Substore 訂閲管理指南

用明白了還蠻好用的。

當我趁着春節各家機場的促銷訂閲多個機場之後,如何充分利用每個節點就變成了説難不難説簡單也不簡單的問題,我當然可以訂閲各家機場提供的配置檔案,然後在他們之間切換,但這樣未免也太麻煩了。更何況我還有自建節點,我可不想為了這一個節點專門去開一個新的配置。

Sub-Store 很好的解決了這個問題,它可以從多個訂閲中抽取節點資訊,透過正規表示式或者 JS 整理它們,最後輸出一個整合了所有節點資訊的訂閲。

部署它可以直接使用 xream 打包好的映象,這個映象整合了前後端,如果在公網部署,記得更改一下後端路徑,否則你的配置檔案很可能會被盜用。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
services:
  sub-store:
    image: xream/sub-store
    container_name: substore
    restart: always
    environment:
      - SUB_STORE_CRON=55 23 * * *
      - SUB_STORE_FRONTEND_BACKEND_PATH=/super-random-path
    ports:
      - "3001:3001"
    volumes:
      - ./data:/opt/app/data

反代 3001 埠即可訪問 Substore 的前端,這裏以 Caddy 為例:

1
2
3
sub-domain.example.com {
        reverse_proxy :3001
}

當然,初次進入前端別忘了新增後端地址,這時的後端地址取決於之前 compose file 裏的設定,在本文的例子中,後端地址為https://sub-domain.example.com/super-random-path

組合訂閲的管理

新增所有機場上游和自建節點之後,就可以開始把它們全都加進單個組合訂閲,但各個機場對節點的命名五花八門,預設情況下看起來非常雜亂,甚至不同機場之間的節點還有重名的可能。好在 Sub-Store 有透過指令碼對節點進行批次重新命名操作的功能,這裏推薦一個指令碼,能夠幫我們為所有的機場節點重新命名。

欲使用這個指令碼,只需在編輯訂閲時將以下地址貼上到指令碼操作處即可。

1
https://raw.githubusercontent.com/Keywos/rule/main/rename.js

節點操作 整理完成的節點列表

最後再進行一些你喜歡的節點操作,可以整理出一個統一規範的節點列表。

生成 Clash 配置

現在雖然已經有了節點列表,但現在生成的配置檔案並不包含任何規則,需要自行編寫或者拉取第三方規則。

選擇 Mihomo 配置 編輯資訊 生成分享連結

指令碼操作

轉到 Substore 的檔案管理,建立一份新的 Mihomo 配置:

  • 「來源」選擇組合訂閲,並在訂閲名稱上選擇你的訂閲組
  • 在指令碼操作中填入自己的覆寫配置

這是我自己的覆寫規則 powerfullz/override-rules,以 mihomo-party-org/override-hub 內的 ACL4SSR 規則為靈感,幾乎完全重新編寫,具有以下優點:

  • 整合 SukkaW/Surge 和 Cats-Team/AdRules 規則集,最佳化廣告攔截、隱私保護及流量分流精度
  • 新增 Truth Social、E-Hentai、TikTok、加密貨幣等實用分流規則
  • 移除冗餘規則集
  • 引入 Loyalsoldier/v2ray-rules-dat 完整版 GeoSite/GeoIP 數據庫
  • 針對 IP 規則新增 no-resolve 引數,避免本地 DNS 解析,提升上網速度,無 DNS 泄露
  • JS 格式覆寫現已實現節點國家動態識別與分組,自動為實際存在的各國家/地區節點生成對應代理組,節點變動時分組自動變化,省心省力。例如:你的訂閲沒有韓國的節點,則最終生成的配置中「韓國節點」這個代理組就不會出現。

JavaScript 格式覆寫

複製 JavaScript 格式覆寫檔案的 raw 連結https://raw.githubusercontent.com/powerfullz/override-rules/refs/heads/main/convert.js,並根據需要在後面附加引數,格式如下:

1
https://raw.githubusercontent.com/powerfullz/override-rules/refs/heads/main/convert.js#引數1=true&引數2=true

目前支援如下引數:

引數功能
loadbalance啓用國家/地區節點組的負載均衡
landing啓用落地節點功能
ipv6啓用 IPv6 支援
full生成針對純核心使用場景的完整配置
keepalive啓用 TCP KeepAlive

例如,若有負載均衡和 IPv6 需求,最終的覆寫指令碼連結為:

1
https://raw.githubusercontent.com/powerfullz/override-rules/refs/heads/main/convert.js#loadbalance=true&ipv6=true

將最終的覆寫指令碼連結貼上到指令碼操作處,使用 Substore 的生成預覽功能確認沒有問題後即可儲存。

新建一個指令碼操作並貼上最終的訂閲連結

YAML 格式覆寫

YAML 格式覆寫我自己已經不用了,隨緣維護,但歡迎 PR

寫了個 Github Actions 自動根據 JS 格式覆寫生成 YAML 格式覆寫,所以現在 YAML 格式又開始維護了。

除了直接引用 convert.js 動態覆寫,你也可以使用倉庫中預先生成好的 32 份 YAML 格式覆寫——它們都放在 yamls/ 目錄裏,由 GitHub Actions 在每次推送後自動重新生成、覆蓋。適用於諸如 Clash Verge 等不支援 JS 覆寫的客户端和轉換服務。

檔案命名規則:

1
config_lb-{0|1}_landing-{0|1}_ipv6-{0|1}_full-{0|1}_keepalive-{0|1}.yaml

示例(開啓 full,其餘關閉):

1
https://raw.githubusercontent.com/powerfullz/override-rules/refs/heads/main/yamls/config_lb-0_landing-0_ipv6-0_full-1_keepalive-0.yaml

CI 只是套用一份假的fake_proxies.json來生成覆寫,所以不可能實現 JS 覆寫自動根據節點匹配生成對應代理組的功能,只能把所有地區節點組都放進去。如果你已經搭建 Substore,並且想要「動態識別國家 + 傳蔘」的靈活性,還是推薦使用 JS 覆寫。

填入對應的 RAW 連結

生成下載連結

儲存成功後點選分享按鈕生成分享連結,設定分享有效期後點選「建立分享」,生成的連結即最終成型的 Mihomo 配置檔案,將其作為訂閲連結在你的代理軟件內訂閲就大功告成了。

最終效果