Contents

用 Docker 讓 Transmission 自動補上公開 Tracker

有時候 BT 下載速度卡卡,不一定是種子本身的問題,也可能只是 Tracker 太少。最近剛好看到一個小工具,可以自動幫 Transmission 補上公開 Tracker,對於一些老種子或來源比較分散的任務來說,多少還是有幫助。

這篇就簡單記一下怎麼快速掛上去,順便補一下 Docker 環境下比較容易踩到的設定點。

工具來源

這次用到的是這個專案:

實際拿來自動補 Tracker 的容器是:

如果你本來就是用 Docker 版 Transmission,也可以一起搭配這個映像檔參考:

快速啟動

先直接看最短可以跑起來的指令:

1
2
3
4
5
docker run --net=host -d \
  -e HOSTPORT=localhost:9091 \
  -e TR_AUTH=user:password \
  --name=transmission-tracker-add \
  andrewmhub/transmission-tracker-add:latest

這個容器會定期連到你的 Transmission RPC,然後把公開 Tracker 補進現有任務裡。

參數簡單看一下

  • --net=host:直接使用主機網路,適合 Transmission 跑在實體主機上的情境。
  • HOSTPORT=localhost:9091:Transmission 的 RPC 位址,預設常見是 9091
  • TR_AUTH=user:password:Transmission Web UI / RPC 的帳號密碼。
  • --name=transmission-tracker-add:方便後續查 Log 或重新啟動。
小提醒
如果你的 Transmission 沒有開認證,還是建議至少限制內網使用,不然 RPC 直接暴露出去其實風險不小。

Docker 環境要注意什麼

這邊最容易搞錯的是 HOSTPORT

如果你的 Transmission 是安裝在真實系統上,或是容器本身使用 host network,那寫 localhost:9091 通常沒有問題。

但如果 Transmission 也是跑在 Docker 裡,而且兩個容器是掛在同一個 Docker Network,那這時候就不要再寫 localhost 了,應該改成 Transmission 容器名稱或服務名稱。

例如:

1
2
3
4
5
6
docker run -d \
  --network=my-download-net \
  -e HOSTPORT=transmission:9091 \
  -e TR_AUTH=user:password \
  --name=transmission-tracker-add \
  andrewmhub/transmission-tracker-add:latest

原因很單純,容器內的 localhost 指的是它自己,不是另一個 Transmission 容器。

如果你是用 Docker Compose,概念也一樣,HOSTPORT 改成 Compose service name 即可。

我自己的理解

我自己看下來,大多數人的 Transmission 還是會架在 NAS、Linux 主機,或是獨立容器裡,所以第一種 localhost:9091 的寫法常常會看到。

不過只要一搬到多容器環境,這個設定就很容易忘記改,結果容器明明啟動了,卻一直連不到 RPC。這種情況第一時間可以先去看容器 Log,通常很快就能確認是不是連線目標寫錯。

驗證有沒有成功

容器跑起來後,可以先檢查是否正常執行:

1
2
docker ps
docker logs transmission-tracker-add

如果設定正確,通常會看到它成功連上 Transmission,並開始處理種子 Tracker 的相關訊息。

如果完全沒有反應,優先檢查下面幾項:

  1. HOSTPORT 是否真的能從容器內連到 Transmission。
  2. TR_AUTH 帳密是否正確。
  3. Transmission 是否有啟用 RPC。
  4. Docker Network 是否相通。

彩蛋

如果你平常不只用 Transmission,也順便整理幾個下載工具相關資料:

小結

如果你只是想省事,這個做法其實滿適合直接掛上去就用。重點不是指令多複雜,而是要先想清楚 Transmission 到底跑在哪裡,這樣 HOSTPORT 才不會設錯。

尤其 Docker 環境裡,localhost 這種細節最常讓人白查半天。先把網路拓樸想清楚,再下指令,會省很多時間。