科学的なインターネットを利用するユーザーにとって、購入したサーバーは複数あるかもしれません。そのため、通常は複数のサブスクリプションアドレスを持っています。以下の図のように:
1 つのサーバーに対して 1 つのサブスクリプションアドレスがあると、以下の欠点があります:
-
サブスクリプションアドレスの変更コストが高い
サーバーがサブスクリプションアドレスを変更すると、Clash クライアントは手動でサブスクリプションアドレスを更新する必要があります。複数のサブスクリプションアドレスを同時に使用している場合、変更作業の量は倍増します。特に、サブスクリプションが複数のデバイスで使用されている場合、各デバイスごとに個別に変更する必要があり、操作がさらに煩雑になります。 -
サブスクリプションの切り替えが不便
Clash クライアントは毎回 1 つのサブスクリプションしか選択できません。異なるサブスクリプションにはより優れたノードがあるかもしれませんが、サブスクリプションを切り替えなければならず、その過程は面倒で効率が悪いです。
これらの問題に対処するために、複数のサブスクリプションのノードを 1 つのサブスクリプションに統合できるソリューションが切実に必要です。これにより、ユーザーは 1 つの統一されたサブスクリプションアドレスにのみ対処すればよくなり、操作が大幅に簡素化されます。
Sub-Store#
Sub-Store は、この問題を解決するために設計されたツールです。複数のサブスクリプションのノードを 1 つの統一されたサブスクリプションに統合でき、ユーザーはこの統一されたサブスクリプションアドレスを使用することで、すべてのノードを便利に管理および使用できます。Sub-Store を使用することで、サブスクリプションアドレスの変更の複雑さが大幅に軽減され、頻繁にサブスクリプションを切り替える必要がなく、最適なノードの柔軟な使用が容易に実現できます。
構築#
ディレクトリ構造の準備#
.
├── docker-compose.yaml
├── .env
└── redis
└── redis.conf
.env
# コンテナ名のプレフィックス
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
# Redis設定ファイルの例
# RDB永続性を有効にする
save 900 1
save 300 10
save 60 10000
# AOF永続性を有効にする
appendonly yes
docker-compose.yaml
私たちのサーバー IP が 198.22.145.117 であると仮定します。
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
# 短縮URLサービス
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
# 短縮URLキャッシュサービス
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
# docker-compose.yamlと同じディレクトリで以下のコマンドを実行することでデプロイできます
docker compose up -d
ドメイン名や nginx のリバースプロキシを使用する場合は、上記の設定の IP をドメイン名に変更するだけで済みます。
使用#
Sub-Store#
Sub-Store のアクセスアドレス:
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 の設定を調整する必要はありません。
Sub-Store がパブリックネットワークにデプロイされている場合は、必ず
.env
ファイル内のSUB_STORE_FRONTEND_BACKEND_PATH
設定キーを保護し、他人にサブスクリプション情報を取得されないようにしてください。