メインコンテンツへ移動
Chen Dahuang
全記事
4 分で読めます オリジナル

機場(プロキシサービス)のサブスク集約を Cloudflare に移した

複数の機場と自前ノードを一本のサブスクにまとめ、分流ルールはサーバー側で設定。クライアントはサブスクを使うだけ。

Chen Dahuang

Chen Dahuang

独立开发者

機場(プロキシサービス)のサブスク集約を Cloudflare に移した

機場(プロキシサービス)はもう 3〜4 年使っていて、途中で自分で VPS ノードを建てたこともある。ずっとウザいことが一つあった:手元に 3〜5 本のサブスクがあって、自前のノードも数台あって、クライアントには一本一本手で追加しないといけないし、分流ルールはクライアントごとに組み直し。端末を変える、クライアントを変える、家族に設定してあげる、その度にまた一から。

後で思ったんだ。サブスクをクライアント側でバラバラに管理する必要はない。これを一本のリンクに集約して、ルールはサーバー側で固定し、クライアントはサブスクを購読するだけ——そうすればスッキリする。Sub-Store の考え方は以前から使ってたけど、あれは自分のサーバーで動かすタイプで、運用が面倒だった。だから今回、Cloudflare 上で動く自前バージョン sub-store-cloudflare を書いて、GitHub で公開した。

実はやることは一つだけ

複数のサブスクリプション元を一本のサブスクにまとめること。

具体的には、こういうものを入れられる:

  • いくつかの機場のサブスクリンク
  • 自分の VPS のノードテキスト(vless、trojan、ss、vmess どれでも可)
  • 一時的にノードをコピペして付け加えるのも OK

入ると Worker が取得して重複排除し、指定ルールでふるいにかけ、必要に応じてリネーム、国旗補完、ドメイン解決をやる。出てきたら組合せサブスクに詰めて、クライアントはこの一本を購読するだけで済む。

ルールはサーバー側に入れてある。よく使う Mihomo テンプレートを内蔵(acl4ssr、loyalsoldier のホワイトリスト/ブラックリスト、ai-streaming など)していて、分流グループやルールセットをクラウドで設定済みにしておける。サブスクを mihomo / clash、surge、sing-box、shadowrocket などのクライアントに放り込めば、ダウンロード時点で分流ルール付きの完成品。そっちで手動ルールやルールセット URL のメンテは不要。

なぜ Cloudflare に置くのか

理由はすごく現実的:

  • サーバー不要。 Workers + D1、無料枠で個人には十分。サーバー代も運用も丸ごと省ける。
  • workers.dev ドメイン自体が壁の外にある。 クライアントが繋いでサブスクを取得するこの一歩が通じる。「サーバーが海外にあるのに、ノード取得にも梯子が要る」みたいなマトリョーシカがない。
  • デプロイすれば Web 管理画面 + ダウンロードエンドポイント。 スマホでクライアントを替えても、ブラウザで設定を変えられる。

技術スタックは意図的に小さい:Worker + Static Assets + D1 + Worker Secrets。KV、R2、Durable Objects、Queue、Cron はコアパスに入れず、減らせるものは減らす。

デプロイはわざと二通り

一つ目は使いたい人向け:リポジトリの Deploy to Cloudflare ボタンを押すと、Cloudflare がリポジトリを取得して Worker を作り、D1 を作り、トークンを 2 つ聞いてきて、デプロイ完了後にトークン付きの管理リンクを渡してくれる。ステップバイステップで、コマンドラインに触る必要なし。

二つ目は自分用でもあり、いじるのが好きな人用でもある:AI Agent のワンクリックインストール。

リポジトリには agent プロトコル(AGENTS.md + agent 内の SKILL)が入っている。サブスク元、作りたい組合せサブスク、使いたいルールテンプレートをローカル設定ファイルに書き、pnpm run install:cloudflare を走らせると、agent が Cloudflare ログイン確認、DB 作成、secret 書き込み、マイグレーション、デプロイ、設定インポート、リンク検証までやってくれて、最後に管理リンクとダウンロードリンクを手渡してくれる。

自分はこの二番目の道で繋いだから、こっちをおすすめする。手が省ける。Codex / Claude Code に使うときは、リポジトリの agent/install.prompt.md のプロンプトをそのままコピーすればいい。

向いている人

率直に言う:複数の機場に加えて自前ノードまで持っていて、一本のサブスクにまとめて自用したい人。それがこのプロジェクトのターゲット層。たった一つの機場をそれなりに使ってるだけなら、これは本当にいらない。

コードは全部オープンソース、AGPL。フロントのインタラクションの考え方は元版 Sub-Store に敬意を払いつつ、元版はコンテナで動いてもっと幅広いクライアントエコシステムをカバーしている。俺がやったのはもっと小さい Cloudflare-native の形で、自分で改造しやすく、直接デプロイもしやすい。項目ごとの複製ではない。

興味があればリポジトリを覗いてみて。README がわりと充実してるので、それに従ってデプロイすればいい。

役に立ったら、ぜひ友達にシェアを。

関連記事