開啟 3 天免費試用
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。


subconverter 自建,即是在自己的電腦把代理訂閱轉換成另一種客戶端格式,而不把訂閱連結交給公共轉換網站。本文執行固定版本的 tindy2013/subconverter:0.9.0 Docker 映像,只發佈到 127.0.0.1,讓連結不會進入 shell 記錄及容器日誌,並在任何客戶端匯入前核對輸出。[1][2]
關鍵要點
- 訂閱連結就是登入憑據,公共轉換網站會取得它的完整內容。
- 容器要發佈到
127.0.0.1,因為 Docker 預設在主機所有地址發佈端口。- 替換預設 API 令牌並關閉容器日誌:在預設級別下,日誌會記錄所擷取的連結。
0.9.0版能解析 ss、ssr、vmess、trojan、socks 及 HTTP 連結,沒有 VLESS 連結解析器。- 信任轉換結果前,先核對節點數目、TLS、傳輸方式及 UDP 欄位。
本文按文末官方來源整理,未完成完整端到端實測。範圍只限你自行控制的一部電腦,不涉及公共或共用的轉換服務。可先參考自建任務及復原清單,判斷本機工具是否適合你的情況。
轉換介面透過 /sub 的 url 查詢參數接收訂閱地址,並附上目標格式及可選的外部設定。[1] 因此營運該介面的人會取得完整連結,之後還可再次擷取,並看到連結傳回的每部伺服器、端口及密鑰。該網站的日誌、分析及快取層亦可能保存你永遠不會知道的副本。
| 請求中的內容 | 使用公共網站時誰會知道 | 使用本機容器時誰會知道 |
|---|---|---|
| 訂閱連結及其中的令牌 | 網站營運者及其日誌 | 只有你的電腦,以及訂閱提供者 |
| 節點地址、端口及密鑰 | 網站營運者(擷取連結後) | 只有你的電腦 |
| 轉換時你的 IP 地址 | 網站營運者;提供者看到的是網站地址 | 只有訂閱提供者 |
| 轉換後的輸出檔案 | 網站營運者(產生過程中) | 只有你的電腦 |
所以訂閱連結應像密碼一樣保存及撤銷。如果你已把連結貼到公共轉換網站,請先要求提供者重設連結,再按本文操作。如果為大量節點修改轉換後設定所需的維護超出實際需要,亦可先權衡自建伺服器與託管 VPN。
最新附標籤的發佈是 v0.9.0,Docker Hub 亦有對應的 0.9.0 映像標籤;latest 標籤則跟隨主分支較新的建置。[2][3] 固定使用 0.9.0,確保你審閱過的程式碼就是實際執行的程式碼,並在每次使用前到儲存庫查看有否新標籤。
轉換前先了解解析器的限制。在 v0.9.0,連結解析器辨認 ssr://、vmess://、ss://、trojan://、socks 及 Telegram 式 HTTP 連結,以及 Netch://;並沒有處理 vless://、Hysteria2 或 TUIC 連結的分支。[4] 不受支援格式的節點會直接從輸出消失,而不是被轉換。文件列出的目標格式包括 clash、surge、quanx、loon 及 v2ray;v0.9.0 的請求處理程式碼另有一個 README 表格未列出的 singbox 目標。[1][5]
建立一個只有你的用戶能讀取的目錄,並產生新的存取令牌,不要沿用預設令牌。範例設定檔附帶 api_access_token=password,程式亦會從環境變數讀取 API_MODE 及 API_TOKEN。[6][7]
mkdir -m 700 -p ~/subconv && cd ~/subconv
umask 077
printf 'API_MODE=true\nAPI_TOKEN=%s\n' "$(openssl rand -hex 24)" > subconv.env
API_MODE=true 會阻止服務載入本機訂閱或直接提供本機檔案。[6] subconverter 的 API 令牌保護設定更新介面,Docker README 呼叫該介面時附有 token 參數。[3] 把兩者放在環境檔內,可避免令牌出現在指令列上,免得被 shell 記錄及程序列表暴露。
如不指定地址,Docker 會在主機所有地址(0.0.0.0 及 [::])發佈容器端口,等於把服務暴露給你所在的網絡。[8] 請明確綁定回環地址,完成 subconverter Docker 部署:
docker run -d --name subconv-local --restart unless-stopped \
--log-driver none --memory 256m \
--cap-drop ALL --security-opt no-new-privileges \
--env-file ./subconv.env \
-p 127.0.0.1:25500:25500 \
tindy2013/subconverter:0.9.0
以 curl -fsS http://127.0.0.1:25500/version 檢查;按 Docker README 所述,輸出應包含 subconverter 後端名稱及版本。[3] 再以 sudo ss -lntp | grep 25500 確認主機只監聽 127.0.0.1:25500,這個本機綁定正是擋住其他裝置的關鍵。
在 28.0.0 之前的 Docker Engine 版本,同一第二層網段內的主機可以存取發佈到 localhost 的端口。[8] 在共用網絡依賴回環綁定前,先執行 docker version 檢查並升級。
以隱藏輸入把連結寫入私人檔案,再讓 curl 對檔案內容進行 URL 編碼:
read -rs SUB_URL && printf '%s' "$SUB_URL" > sub.txt && unset SUB_URL
curl -fsS -G http://127.0.0.1:25500/sub \
--data-urlencode target=clash \
--data-urlencode url@sub.txt \
-o converted.yaml
rm sub.txt
進行 subconverter 訂閱轉換時,訂閱由容器自行擷取。範例設定中的 proxy_subscription=NONE 表示這次擷取直接發出,不經設定的代理。[6] 因此訂閱提供者看到的是你電腦的地址,與客戶端更新連結時一樣。
在 v0.9.0,處理程式碼會寫入一條 info 級別日誌,內容包括它擷取的每條訂閱連結。[5] 若使用 Docker 預設日誌,這一行便會留在 docker logs 的輸出中。none 日誌驅動程式不保存容器日誌,docker logs 不會傳回任何內容。[9] 除錯時如確實需要日誌,可臨時執行一個開啟日誌的容器,用完即刪除。
HTTP 請求成功,並不代表每個節點都轉換正確。以本機編輯器開啟 converted.yaml,按提供者對每個節點的說明逐項核對。
| 欄位 | 核對內容 | 出現以下情況便停止 |
|---|---|---|
| 節點數目 | 與來源相同,減去你刻意排除的節點 | 節點無故缺失 |
| 協議類型 | 與來源節點一致 | 節點改了協議或消失 |
| 伺服器及端口 | 與來源完全相同 | 任何地址或端口不同 |
| TLS 及伺服器名稱 | TLS 仍開啟、SNI 相同、沒有新增 skip-cert-verify: true | 證書驗證被關閉 |
| 傳輸及路徑 | WebSocket 或其他傳輸的路徑及主機相同 | 路徑或主機為空或不同 |
| UDP 標記 | 與伺服器實際支援一致 | 為不支援 UDP 的伺服器開啟了 UDP |
範例設定訂明 exclude_remarks=(到期|剩余流量|时间|官网|产品|平台),會丟棄名稱含有其中任何一詞的節點。[6] 它針對部分提供者加入的資訊條目,但名稱剛好吻合的真實節點也會消失。預設設定亦會加入代理組及規則集,所以除代理條目外,還要檢查路由規則。
把 converted.yaml 視為機密:它包含訂閱內的全部登入憑據。匯入時參考匯入設定而不洩漏憑據中的注意事項;如客戶端會保存自己的副本,便刪除本機檔案。
只有本機程序能連接發佈在回環地址的端口,但這包括本機所有用戶及應用程式。請在單一用戶的電腦上執行,轉換完成後停止容器。同一道理亦適用於其他本機控制介面,例如 Mihomo 控制器 API:回環地址限制誰能連接,強密鑰則限制連上的程序能做甚麼。
讓 subconv.env 及工作目錄保持 0700 或 0600 權限。不要為了讓其他裝置存取而加入反向代理、端口轉發或隧道,否則私人工具會重新變成持有所有人連結的轉換服務。如客戶端需要自動更新,便在同一部電腦定時轉換,讓客戶端讀取本機檔案。
更新時,到儲存庫查看新發佈並細閱說明,再下載新的固定標籤。以 docker rm -f subconv-local 停止並刪除舊容器,以同一指令啟動新標籤,然後重複 /version、監聽地址及輸出核對。
徹底移除時,執行 docker rm -f subconv-local,以 docker image rm tindy2013/subconverter:0.9.0 刪除映像,再刪除 ~/subconv。如訂閱連結曾經過任何共用或公共系統,事後請要求提供者重設。
127.0.0.1、替換令牌,並關閉會記錄連結的日誌。0.9.0 版無法轉換 VLESS、Hysteria2 及 TUIC 連結,要檢查輸出有否缺少節點。它把公共網站從鏈路中移除,但你的電腦、本機其他用戶及訂閱提供者仍然是風險所在。工作檔案及日誌同樣需要保護,不能只顧轉換這一步。
固定標籤讓你可細閱對應的發佈說明,清楚自己執行的是哪個解析器及哪些預設設定。latest 標籤可能在兩次轉換之間悄悄改變,令審閱過的內容失效。
0.9.0 版的連結解析器沒有處理 vless 連結的分支,所以這些條目會被略過。請改用能直接讀取原始訂閱格式的客戶端,不要依賴轉換結果。
需要。本機任何程序都能存取這個端口,而預設令牌是文件公開寫明的 password,任何人都能即時猜中,所以必須換成隨機產生的長令牌。
在預設的 info 級別下,0.9.0 版會記錄每條被擷取的訂閱連結。Docker 預設日誌會保存這一行,所以本文直接關閉容器日誌,避免連結被寫入磁碟。
本文的設定不適合這樣做。發佈到網絡後,每位用戶的訂閱連結都會暴露給這項服務,以及所有能連到它的人,等於重新建立一個轉換網站。
需要。它包含訂閱中每部伺服器的地址、端口及密鑰,請私密保存,並刪除客戶端已不再需要的副本,避免登入憑據殘留在多個位置。
免責聲明: 本文僅供一般資訊參考,不構成法律、技術或其他專業建議。我們不保證內容的準確性、完整性或時效性。
來源:
Sources checked 2026 年 10 月 14 日。
延伸閱讀:
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。