Jak nainstalovat a provozovat Transmission na serveru.
14.7.2010 00:00 | Radim Kolář | přečteno 9096×
BitTorrent klient transmission lze provozovat v neinteraktivním režimu s využitím klient/server architektury. Když pomineme provozování rtorrentu ve screenu tak je transmission jedinou rozumnou volbou pro provozování bittorrent klienta na serverech. Proto je taky často nasazován na NAS boxy a do video přehrávačů s hardiskem běžících pod linuxem. Na rozdíl od rtorrentu ve screenu který je na ovládání poněkud hardcore se s transmission pracuje velice pohodlně.
Stahování bittorrentů na serveru má několik výhod. V první řadě je to kvalitní síťové připojení s velkým přenosovým pásmem. Narozdíl od ADSL linek je připojení serverů symetrické - download je stejně rychlý jako upload. To znamená že můžeme odeslat do sítě více dat čímž nám ostatní peery na oplátku zase více dat pošlou a stažení bude tak výrazně rychlejší. Servery mívají také kvalitnější připojení s menší latencí a menší ztrátovostí dat než počítače připojené přes ADSL nebo nedejbože přes Wifi na větší vzdálenost. Poslední výhodou je čas k dispozici. Server běží neustále a tak může torrenty jednak stahovat neustále a jednak se mu může díky tomu že je neustále online povést stáhnout i torrent který má jen málo seedu, které jsou navíc připojeny jen občas.
Distribuce mívají transmission v zastaralých verzích, protože jde o rychle se vyvíjející se projekt, je nejlepší vlastní kompilace. Pro kompilaci budeme potřebovat knihovny libcurl a libevent. V Ubuntu nainstalujeme balíčky libcurl4-openssl-dev, libevent-dev, intltool. Ve FreeBSD budeme potřebovat porty devel/libevent a ftp/curl.
Pokud máme starou verzi libevent 1.3 která je například v Ubuntu 8.04 LTS tak potřebujeme odinstalovat starou libevent a pak stáhnout verzi 1.4 odtud a nainstalovat ji pomocí známého ./configure;make install ručně.
Vlastní kompilaci a instalaci transmission daemona provedeme pomocí:
./configure --enable-daemon LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" make install
Instalace přeloženého programu transmission-daemon je triviální, stačí jej spustit bez parametrů pod uživatelem který má vlastnit stažená data a on se sám spustí na pozadí. Pokud nerebootujete server příliš často, u mých FreeBSD serverů je průměrný uptime okolo 300 dnů, tak ho můžete spouštět ručně a nemusíte vytvářet jeho startovací skript v /etc/init.d
Konfigurace se provádí buďto přímou editací /.config/transmission-daemon/settings.json nebo pomocí programu pro vzdálené ovládání daemona transmission-remote. Použití ovládacího programu je mnohem jednoduší, ale není v něm možné nastavit všechny volby.
Po spuštění daemona si vypíšeme jeho tovární nastavení:
> transmission-remote -si VERSION Daemon version: 1.93 (10621) RPC version: 8 RPC minimum version: 1 CONFIG Configuration directory: /home/admin/.config/transmission-daemon Download directory: /home/admin/Downloads Listenport: 51413 Portforwarding enabled: Yes Peer exchange allowed: Yes Encryption: preferred LIMITS Peer limit: 240 Default seed ratio limit: Unlimited Upload speed limit: Unlimited (Disabled limit: 100 KB/s; Disabled turtle limit: 50 KB/s) Download speed limit: Unlimited (Disabled limit: 100 KB/s; Disabled turtle limit: 50 KB/s)
Tak se pustíme do nastavování. Zapneme povinné šifrování a zvolíme náhodně port na kterém budeme přijímat příchozí spojení abychom se vyhnuli případnému traffic shapingu který dělají někteří ISP na standardních BitTorrent portech.
> transmission-remote --random-port --encryption-required
Zapneme použití DHT databáze, vypneme uPNP mapování portů protože to na serveru nepotřebujeme, vypneme hledání lokálních peerů (novinka v Transmission 2.0) a zapneme peer exchange protokol protože bez něj nemá DHT prakticky cenu.
> transmission-remote --dht --no-portmap --no-lpd --pex
Pokud se jedná o přenosové pásmo zabírané transmission na serveru tak většina serverů má poměr mezi příchozím a odchozím trafikem zhruba 1:8 ve prospěch odchozího. Download rychlost transmission proto omezovat prakticky nemusíme jelikož máme kapacity dostatek. Omezit musíme upload rychlost. Další šikovná věc je že server mimo špičku spotřebovává výrazně méně přenosového pásma a tak můžeme Transmission přidat.
Nastavíme download a upload limity abychom si moc nezacpávali linku řekněme 100 KB Upload a 250 KB Download. Nastavíme také default seed ratio na 1.8, přenosového pásma máme na serveru dost a navíc můžeme seedovat 24hodin denně.
> transmission-remote --downlimit 250 --uplimit 100 --global-seedratio 1.8
Ve špičce ovšem budeme chtít rychlost omezit na řekněme 30KB upload a 150KB download.
> transmission-remote --alt-speed-downlimit 150 --alt-speed-uplimit 30
Špičku máme od pondělí do pátku 8:00 - 16:00
> transmission-remote --alt-speed-days 1-5 --alt-speed-time-begin 0800 --alt-speed-time-end 1600 \ --alt-speed-scheduler
Teď už jen nastavíme kam se má downloadovat a nastavení je hotovo.
> transmission-remote --download-dir /home/admin/rtorrent/down/ > transmission-remote --incomplete-dir /home/admin/rtorrent/wip/
Nyní musíme nastavení uložit protože to daemon nedělá automaticky ale jen při svém ukončení. To je dost nemilá vlastnost protože když dojde k výpadku proudu tak ztratíme jeho současné nastavení pokud bylo odlišné od nastavení s kterým byl spuštěn. Nastavení uložíme:
> killall transmission-daemon
a je uloženo. Konfigurační soubor programu transmission-daemon se jmenuje settings.json, je v JSON formátu a nachází v adresáři ~/.config/transmission-daemon/ uživatele který daemona spustil. Daemon totiž nemusí běžet pod rootem.
Poslední věcí na kterou bych rád upozornil a není součástí automaticky vytvořeného konfiguračního souboru je možnost automaticky sledovat adresář na výskyt .torrent souborů. Každý .torrent soubor který bude v adresáři objeven se automaticky začne stahovat. Pokud ho však později soubor z adresáře odstraníte nedojde ani k zastavení stahování ani k vymazání dat. Tyto věci si musíte zařídit stejně jako u ručně přidaných torrentů. Tuto vlastnost aktivujete tak že do konfiguračního souboru settings.json přidáte následující:
"watch-dir": "/home/admin/rtorrent/watch", "watch-dir-enabled": true
Pokud chceme ovládat daemona vzdáleně z jiného počítače potřebujeme přidat jeho adresu do whitelistu. Zastavte daemona a překontrolujte zda máte v settings.json uvedeno:
"rpc-authentication-required": false, "rpc-whitelist-enabled": true, "rpc-whitelist": "127.0.0.1,88.162.81.225",
Podrobnější dokumentace ke konfiguračnímu souboru je zde.
Jak je z použité konfigurace vidět, používal jsem dříve na serveru program rtorrent ve screenu. Musím říci, že se s Transmission výrazně snadněji pracuje - ovládání z příkazová řádky je snadné a intuitivní, což se o klávesách v rtorrentu říct nedalo, navíc toho umí transmission trochu víc a tak bych už zpět neměnil - je s ním radost pracovat.