Clash サブスクリプション変換#
上の図のように、これは Sub-Web のウェブ端末です。ここにあなたの空港のサブスクリプションや Vmess/ss などを入れることができ、その後、分流ルールを持つ Clash 接続を生成し、一鍵で Clash にインポートできます。
全体のロジックの展開#
- バックエンド:Subconverter が分流ルールをレンダリングします
- フロントエンド:Sub-web がページを処理します
- 短リンク:元のリンクは非常に長いため、短リンクの形式で使いやすくする必要があります
バックエンド Subconverter の構築#
- docker 展開
プロジェクトアドレス:https://github.com/tindy2013/subconverter
Docker 公式ガイド:https://github.com/tindy2013/subconverter/blob/master/README-docker.md
#docker展開
docker run -d --name subcon --restart=always -p 25500:25500 tindy2013/subconverter:latest
- リバースプロキシサービス
一般的に皆さんが使用している宝塔や NMP で通常通りリバースプロキシを処理すれば大丈夫です。Ningx Manager Proxy を使用する場合は、ドメインsuc.surgee.me
を追加してください。
注意:docker の ip 処理
ここで注意が必要な点があります。処理を行わないと、リバースプロキシの指向先アドレスは 127.0.0.1(ホストを指さない)を使用できず、docker の ip アドレスも使用できません。もし手を抜くなら、サーバーの実際の ip を指向できます。コンテナの ip を指向する場合は、別途処理が必要です。nginx manager proxy はカスタムネットワーク(ブリッジでもありますが)であり、同じネットワークセグメントにはありません。解決策は簡単で、NPMをブリッジネットワークに追加する
ことです。
#NMPをブリッジネットワークに追加
docker network connect bridge nginx-proxy-app-1
その後、docker inspect subcon
を使用してコンテナの ip が172.17.0.5
であることを確認します。
その後、直接アクセスして **File not found.** と表示されれば ok です。
フロントエンド Subweb の構築#
プロジェクトアドレス:https://github.com/CareyWang/sub-web
- フロントエンドの設定
docker を使用して構築する場合、フロントエンドを設定した後、再度イメージをビルドする必要があります。
# プロジェクトをローカルにクローン
git clone https://github.com/CareyWang/sub-web.git
cd sub-web
# .env設定ファイルを編集
vi .env
# バックエンドアドレス、短リンクアドレスを変更
# API バックエンド
VUE_APP_SUBCONVERTER_DEFAULT_BACKEND = "https://suc.surgee.me"
# 短リンクバックエンド
VUE_APP_MYURLS_DEFAULT_BACKEND = "https://i.surgee.me"
# テキストホスティングバックエンド VUE_APP_CONFIG_UPLOAD_BACKEND = "https://suc.surgee.me"
# 編集
cd src/views vi Subconverter.vue
#39行
placeholder="https://suc.surgee.me/sub?"
#300行
backendOptions: [{ value: "https://suc.surgee.me/sub?" }],
- リモートサービス設定の追加
{
label: "Steve",
options: [
{
label: "StevePro",
value:
"https://raw.githubusercontent.com/zxfccmm4/Surge/main/Clash/rules.ini"
},
{
label: "SteveProMax",
value:
"https://raw.githubusercontent.com/zxfccmm4/Surge/main/Clash/rules1.ini"
}
]
},
{
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 ローカル 簡易版+フォールバック",
value: "config/ACL4SSR_Mini_Fallback.ini"
},
{
label: "ACL4SSR_BackCN ローカル 帰国",
value: "config/ACL4SSR_BackCN.ini"
},
{
label: "ACL4SSR_NoApple ローカル Apple分流なし",
value: "config/ACL4SSR_NoApple.ini"
},
{
label: "ACL4SSR_NoAuto ローカル 自動測定なし ",
value: "config/ACL4SSR_NoAuto.ini"
},
{
label: "ACL4SSR_NoAuto_NoApple ローカル 自動測定なし&Apple分流なし",
value: "config/ACL4SSR_NoAuto_NoApple.ini"
},
{
label: "ACL4SSR_NoMicrosoft ローカル Microsoft分流なし",
value: "config/ACL4SSR_NoMicrosoft.ini"
},
{
label: "ACL4SSR_WithGFW ローカル GFWリスト",
value: "config/ACL4SSR_WithGFW.ini"
}
]
},
{
label: "Tutuのルール",
options: [
{
label: "全グループ版",
value:
"https://raw.githubusercontent.com/bunizao/TutuBetterRules/tutu/Clash/rules.ini"
},
{
label: "Apple戦略グループを削除(Appleに関するルールをいくつか削除し、WindowsおよびAndroidユーザー向け)",
value:
"https://raw.githubusercontent.com/bunizao/TutuBetterRules/tutu/Clash/rules2.ini"
}
]
},
もちろん、他の大物の分流ルールライブラリもあります。
ACL4SSR のライブラリ :https://github.com/ACL4SSR/ACL4SSR/tree/master/Clash
blackmatrix7 のライブラリ :https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash
神機ルールライブラリ :https://github.com/DivineEngine/Profiles/tree/master/Clash/RuleSet
- イメージの構築とサービスの展開
#イメージを構築
docker build -t subweb-local:latest .
#サービスを展開
docker run -d -p 58080:80 --restart always --name subweb subweb-local:latest
短ドメイン Myurls の構築#
プロジェクトアドレス:https://github.com/CareyWang/MyUrls
- サービスの展開
#Redisを展開、Redisが必要です。docker-composeの場合は自動でRedisを展開しますが、私は直接apt updateでインストールしました。
apt update
apt install redis-server -y
その後、redis-cliでテストします
#プロジェクトをローカルにクローン
git clone https://github.com/CareyWang/MyUrls.git MyUrls
cd MyUrls
vi public/index.html
#短リンクドメインを変更
const backend = 'https://i.surgee.me'
#サービスを展開
docker run -d --restart always --net=host --name myurls -v /root/MyUrls/public:/app/public careywong/myurls:latest -domain i.surgee.me -port 8002 -conn 127.0.0.1:6379 -ttl 180
ドメインとポートは実際に変更し、--net=hostはホストのRedisに接続するためのもので、最も重要なのは-v /root/MyUrls/public:/app/publicで、index.htmlを変更したディレクトリをコンテナにマッピングします
結論#
最終的に私はClash サブスクリプション変換を成功裏に構築しました。
https://sub.surgee.me
以下の大物のチュートリアルに感謝します。多くの恩恵を受けました。
https://github.com/stilleshan/dockerfiles/tree/main/sub
https://imgki.com/archives/718.html?replyTo=443
https://github.com/tindy2013/subconverter
https://github.com/CareyWang/sub-web
https://github.com/bunizao/TutuBetterRules
https://github.com/ACL4SSR/ACL4SSR/tree/master/Clash
https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash
https://github.com/DivineEngine/Profiles/tree/master/Clash/RuleSet