2016年3月17日

Raspberry pi 加Transmission-daemon 化身超級BT機 (下) daemon背景服務版

這篇將延續 Raspberry pi 加Transmission 化身超級BT機 (上) X-Window 視窗版 ,出一篇用transmission的daemon 版本,伊文建議先花個1分鐘掃過圖片的部分。本篇使用「服務」的方式開機啟動,可用在無  QtGTK 視窗函式庫的狀況,考慮玩一下 Raspbain Jessie Lite (無視窗版本,差異參考:Raspbian Jessie版本差異?),使用 daemon才能真正節省系統資源,之後transmission-daemon 就會隨開機器動,把Raspberry pi 變成 BT 代抓 Server 。

不用把CLI想的很難,雖然設定看似密密麻麻,但很設定能在網頁上完成。本文大概分兩部分,前面會講解如何架好,如果你想追根就底,再閱讀「進階細項」的部分。

1. 安裝 Transmisson-daemon



如果你之前裝過 transmission 視窗版本,用下述指令移除:

$ sudo apt-get remove --auto-remove transmission
#移除 transmission GTK版



安裝 transmission-daemon

$ sudo apt-get install -y transmission-daemon
#安裝 transmission-daemon



接下來準備修改設定組態,先停掉程式

$ sudo killall transmission-daemon
#強制終止該執行續



$ sudo pkill transmission-daemon#強制終止該執行續


參考:在 Linux 中使用 kill、killall 與 xkill 等指令強迫關閉程式Linux 指令: kill 常用參數



2. 修改組態檔



準備修改settings.json 組態檔,這個檔案是 transmission-daemon 的重要參數。

$ sudo nano /etc/transmission-daemon/settings.json
#修改設定檔


如果在上面找不到該檔,可試試下面路徑:

$ sudo nano /var/lib/transmission-daemon/info/settings.json
#修改設定檔


#根據官方的文件,參考:Configuration Files ,settings.json可以在兩個路徑任一個,但我的測試,同時存在settings.json兩個路徑,只要修改一個,兩個都會變。註:版本 2.52


▼打開settings.json 長這樣

先別看到一堆設定很煩,我們只要啟用網頁介面,又可以偷吃步了~( ̄▽ ̄)...


3. 啟用網頁伺服器



我看到 RPC 有點噴飯,網頁控制也該有個web 字吧!


檢查並修改以下設定:

"rpc-enabled": true,
#開啟網頁服務,預設=true

"rpc-authentication-required":  true,
#網頁要驗證登錄,如果設定為
false,不須帳號密碼就可進入,預設= false


"rpc-port": 9091,
#網頁port號可以依個人喜好,不要衝突其他服務,記得開防火牆,預設= 9091


"rpc-username": 自己改,
#使用者名稱(與Linux 系統無關),不要打中文

"rpc-password": 自己改,
#密碼,不要打中文


"rpc-whitelist-enabled": false,
#驗證登入IP,如果你改true,就需要有允許IP列表,預設= false



當然,你也可以設 "rpc-authentication-required":  false, ,就可以免認證偷懶,但你妹妹可以用Lan端的電腦直接進去,並表示:哥哥壞壞 ~Σ( ° △ °|||)︴驚!

以上設定屬於網頁的部分。


4. 其他設定



有些設定無法使用網頁設定,我們先在此先搞定。



"download-queue-size": 8,
#可同時下載排程限制,預設=5

伊文認為5太少,這是我的習慣,多設幾個一起跑可以善用頻寬,但你的頻寬還是有限,碰到熱門檔頻寬滿載只會互相卡速,結果都沒下完;但也不要設20以上,不但不變快,只會浪費系統資源。

"cache-size-mb": 16,
#快取大小,單位MB,擔心BT搞掛硬碟可以改,建議不要超過32

"seed-queue-enabled": true,
#如果設定為true,開啟「seed-queue-size」功能,預設= false

"seed-queue-size": 10, 

#最大做種數

這裡得多加說明一下,當你下載完成後,你擁有完整檔案,電腦持續分享給別人稱之為 seed ( 種子源 ),這也是BT網路社會中重要的觀念。「seed-queue-size」功能是用來限制seed的數量,如果你不做限制,最後下載完成項目都會去做seed(當然有其他限制方法),seed的數量變大,連線數大增,結果連來我這下載的速度都不快,還會拖累系統資源。

維持10個做種上傳,超過10個就會排隊網頁顯示如下:



"umask": 0,
#設定transmission-daemon
新增的檔案、目錄的權限,預設= 18

注意!這裡的權限是用減的,18要換成8進位=22,在用777(最大權限)-22=755,換成權限-rwxr-xr-x,這會造成FTP、Samba 的使用者無法刪除,正常的做法是將這些使用者使設為同群組,也是較安全的作法。

這部分我偷懶用0,因為這台RPI只有我在用,若在多人的情況,放任所有使用者可刪除檔案還挺危險的。請參考以下資料,依你的狀況設定。

參考:第五章、Linux 的檔案權限與目錄配置umask 指令Editing Configuration Files打造脫機下載農場,使用Raspberry pi + transmission-daemon


ctrl + o 存檔


$ sudo service transmission-daemon restart
#重啟服務


[ ok ] Restarting bittorrent daemon: transmission-daemon.

sudo service transmission-daemon status
#確認服務狀態

[ ok ] transmission-daemon is running.

恭喜你!到了這一步,就快完成了!


5. 用網頁偷吃步



打開你的瀏覽器輸入http://樹梅派IP:port號/  例如:

http://192.168.1.74:9091/

又可以看到我們在 Raspberry pi 加Transmission 化身超級BT機 (上) 視窗版 介紹過的畫面

看到「設定」了嗎?點下去喔!


▼記得設定路徑

#注意:transmission-daemon 的使用者是 debian-transmission 記得給它有讀取、寫入的權限,不然會無法下載,這也是常見錯誤!


▼限速



▼設定連結點數


▼設定uPnP監聽埠
#記得允許監聽埠防火牆,開啟分享器的 uPnP 。



然後按下 × 保存設定,本篇走到這裡我們已經完成,若有興趣深究可以往下看,趕快上傳 *.torrent 或貼Magnet,祝各位下載愉快 ~ \( ̄▽ ̄)/





設定細項:

這裡的設定來自,若有些項目沒有看到,若項目不清楚保持預設即可,請參考標準文件:Editing Configuration Files,我個人認為要再稍稍注意的用藍色做標示。



頻寬管理(Bandwidth):

alt-speed-enabled: Boolean (default = false, aka 'Turtle Mode')
#開啟進階頻寬管理 ( 網頁上那隻烏龜,alt 進階頻寬管理 )

alt-speed-up: Number (KB/s, default = 50)
#進階頻寬管理的上傳頻寬

alt-speed-down: Number (KB/s, default = 50)
#進階頻寬管理的下載頻寬

speed-limit-down: Number (KB/s, default = 100)
#限制上傳頻寬

speed-limit-down-enabled: Boolean (default = false)
#限制下載頻寬

speed-limit-up: Number (KB/s, default = 100)
#限制上傳頻寬

speed-limit-up-enabled: Boolean (default = false)
#開啟限制上傳頻寬

upload-slots-per-torrent: Number (default = 14)
#每一種子的上傳連線數限制



檔案和路徑(Files and Locations)

download-dir: String (default = default locations)
#存檔路徑(網頁可以設定)

incomplete-dir-enabled: Boolean (default = false)
#開啟「未完成檔案的存檔路徑」這功能


incomplete-dir: String (default = default locations) 
#未完成檔案的存檔路徑

preallocation: Number
#(0 = Off, 1 = Fast, 2 = Full (速度慢但可減少磁碟分散), default = 1),如果設定 2 會預先分配好磁碟空間

rename-partial-files: Boolean (default = true) 
#將未完成的檔案加附檔名.part標註

start-added-torrents: Boolean (default = true)
#加入種子之後馬上開始下載

umask: Number (default = 18) 
#我們上面介紹過了

watch-dir-enabled: Boolean (default = false)
#開啟「監視資料夾」,當有 .torrent 傳入後,馬上掛上去下載


不過,伊文認為這功能意義不大,因為網頁就可以一次上傳多個種子,這功能就有點多餘了!

watch-dir: String
#監視資料夾的路徑




雜項(Misc)

cache-size-mb: Size (default = 4), 
#我們上面介紹過了

dht-enabled: Boolean (default = true)
#開起分散式網路(Distributed Hash Table ,DHT)

encryption: Number (0 = 偏好未加密, 1 = 偏好加密, 2 = 要求加密; default = 1) 
#加密也許可以防止ISP者阻擋,但會增加CPU使用率

lpd-enabled: Boolean (default = false) .
#開起本地使用者探索(Enable ​Local Peer Discovery, LPD),參考:具「本機用戶探索」功能BT工具Transmission

有興趣研究 DHT的可以看: eMule、BT 下載最佳化:無種也完檔,速限再提升

message-level: Number (0 = None, 1 = Error, 2 = Info, 3 = Debug, default = 2)
#設定紀錄訊息等級

pex-enabled: Boolean (default = true) 
#開啟節點信息交換(Peer Exchange ,PEX),參考:Peer exchange

prefetch-enabled: Boolean (default = true)
#這選項我看不懂 = =' 

scrape-paused-torrents-enabled: Boolean (default = true)
#我看不懂 = =' 

script-torrent-done-enabled: Boolean (default = false)
#當一個種子項目下載完成後,跑一個script

script-torrent-done-filename: String (default = "") Path to script.
#script的路徑

utp-enabled: Boolean (default = true) 
#開起 ​Micro Transport Protocol (µTP)



連線節點(Peers)

bind-address-ipv4: String (default = "0.0.0.0")
#綁定監聽節點(IPv4)


bind-address-ipv6: String (default = "::")
#綁定監聽節點(IPv6)

peer-id-ttl-hours: Number (default = 6) 
#N小時後回收某種子的節點,這項目我也不很了解

peer-limit-global: Number (default = 240)
#總連線節點數限制


peer-limit-per-torrent: Number (default = 60)
#單一連線種子連線節點數限制

peer-port: Number (default = 51413)
#監聽埠號

peer-port-random-on-start: Boolean (default = false)
#開啟隨機監聽埠

peer-port-random-high: Number (default = 65535)
#隨機 監聽埠號,最大值(需開啟隨機監聽埠)

peer-port-random-low: Number (default = 1024)
#隨機 監聽埠號,最小值(需開啟隨機監聽埠)

port-forwarding-enabled: Boolean (default = true) 
#開起 ​UPnP


列隊(Queuing)

download-queue-enabled: Boolean (default = true) 
#開啟下載排程數限制

download-queue-size: Number (default = 5)
#我們講解過了

queue-stalled-enabled: Boolean (default = true) 
#開啟功能「queue-stalled-minutes」

queue-stalled-minutes: Number (default = 30) 
#種子還沒分享N分鐘之前不列入「 queue-download-size 」和「 seed-queue-size limits」

seed-queue-enabled: Boolean (default = false) 
##我們上面介紹過了

seed-queue-size: Number (default = 10) 
#我們上面介紹過了


網頁介面(RPC)

rpc-whitelist-enabled: Boolean (default = true)
#開啟限制連入IP(沒在名單內的不能連)

rpc-whitelist: String 
#允許IP列表,格式範例: "127.0.0.*,192.168.*.*", Default: "127.0.0.1"



排程(Scheduling)

alt就是網頁上那隻烏龜 ( 進階速度限制 ) 。

alt-speed-time-enabled: Boolean (default = false)
#開啟進階速度限制,如果開啟


idle-seeding-limit-enabled: Boolean (default = false)
#開啟「idle-seeding-limit」功能

idle-seeding-limit: Number (default = 30) Stop seeding after being idle for N minutes.
#在seed無下載要求N分鐘後,停止分享

中間還有如何設定alt的部分跳過,請參閱原始文件:Editing Configuration Files

ratio-limit: Number (default = 2.0)
#分享比例

ratio-limit-enabled: Boolean (default = false)
#預設關閉,開啟做種分享比例限制,達到分享比例會自動停掉



修改使用者[14]

有些人想把使用者改成 pi

$ sudo nano /etc/init.d/transmission-daemon

將文件中的

NAME=transmission-daemon

改成你要的使用者。


其他:

transmission-daemon 也可以用CLI操作,詳細可以問「男人」

$ man transmission-daemon
#詢問參數使用方式



預設檔文件路徑:
/etc/default/transmission-daemon


如果發生錯誤,需要做紀錄除錯,可用以下指令:

$ transmission-daemon -f --logfile /your/path/transmission.log
#給錯誤紀錄路徑




在 STOP_TIMEOUT=30 下面加註

OPTIONS=" --logfile /your/path/transmission.log"

參考:Enable logging to service[16]



參考資料:


[1] Raspberry pi 加Transmission 化身超級BT機 (上) X-Window 視窗版

[2] QtGTK

[3] Raspbian Jessie版本差異?

[4] 在 Linux 中使用 kill、killall 與 xkill 等指令強迫關閉程式

[5] Linux 指令: kill 常用參數

[6] 第五章、Linux 的檔案權限與目錄配置

4 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
  2. 請問使用Raspbian Jessie的版本話,如何讓Transmission開機自動啟動服務呢?謝謝

    回覆刪除
    回覆
    1. transmission-daemon &

      刪除
    2. 其實我沒有真的測試Raspbian Jessie,但以經驗來說是開機自動啟動。

      刪除