czyli pobieranie torrentów inaczej
Ostatnia zmiana: 2016-12-31 11:24
OpenWrt posiada kilka pakietów z klientami torrentów - z tych popularniejszych można by wymienić chociaż by ctorrent czy rtorrent. O ile na ctorrenta ludzie zwykle narzekają że wolno pobiera (chociaż to subiektywna opinia) o tyle rtorrent nie był standardowo dostępny w 8.09 a w nowszych wydaniach lubi się wykładać. Dodatkowym wymaganiem większości użytkowników jest istnienie "przyjaznego" interfejsu www do takiego programu.
W OpenWrt standardowo dostępny jest także jeszcze jeden program - Transmission, wyposażony właśnie w interfejs www. Transmission jest samodzielnym programem, nie wymaga instalacji serwera http czy php do działania.
Instalacja
# opkg update
# opkg install transmission-daemon transmission-web
Dostępny jest także pakiet transmission-cli - jeżeli ktoś potrzebuje obsługi z poziomu konsoli - ale jego instalacja nie jest wymagana.
Pakiet
transmission-web jest opcjonalny i niezbędny tylko jeżeli chcemy mieć dostęp do programu przez przeglądarkę. Istnieje także pakiet
transmission-control zawierający bardziej rozbudowany interfejs www.
W nowszych wydaniach OpenWrt/LEDE pakiety Transmission dostępne są w różnych odmianach bazujących na różnych bibliotekach kryptograficznych, więc trzeba wskazać konkretny pakiet podczas instalacji, np:
# opkg install transmission-daemon-openssl transmission-web
Pakiet wraz z zależnościami jest duży objętościowo i może nie zmieścić się w urządzeniach z 4MB flash.
Konfiguracja
Zawarta jest w pliku
/etc/config/transmission. Z niej skrypty startowe robią właściwy plik konfiguracyjny transmisson, który jest przez niego akceptowany. Konfigurację należy wykonać wykorzystując
uci.
Co należy zrobić po instalacji:
- włączyć uruchamianie transmission na starcie
# uci set transmission.@transmission[0].enabled=1
# uci commit transmission
# /etc/init.d/transmission enable
- ustawić katalog gdzie mają być pobierane dane
# uci set transmission.@transmission[0].download_dir=/mnt/sda1/torrenty
# uci commit transmission
Wymieniona konfiguracja zakłada że pobieramy dane do katalogu /mnt/sda1/torrenty. Żeby można było pobierać większe pliki powinien tam być zamontowany dysk czy pendrive. Upewnij się więc, że ustawiasz faktyczny katalog na zamontowanym dysku a nie w pamięci flash!
Dysk musi być zamontowany PRZED uruchomieniem transmission. W OpenWrt dyski montowane są asynchroniczne, więc w przypadku normalnego uruchamiania systemu transmission może się uruchomić przed zamontowaniem dysku i może być problem z dostępem do danych. Zwykle należy albo uruchamiać transmission z opóźnieniem albo uruchamiać go po zamontowaniu dysku. Obie metody są opisane na
eko.one.pl.
Zmiany w parametrach transmission zrobione przez gui lub inne programy do zarządzenia transmission nie powodują ustawienia ich w uci. Aby zmiana była trwała należy te parametry ustawić ręcznie także przez uci!
- uruchomić
# /etc/init.d/transmission start
Resztę opcji ustawia się wg potrzeb. Zmiany w opcjach Transmission przez www nie mają odbicia w ustawieniach opcji UCI!
Jeszcze raz przypomnienie: ścieżki gdzie będą pobierane pliki: download_dir oraz incomplete_dir MUSZĄ wskazywać na dysk a nie na pamięć flash czy ram routera. Inaczej grozi to całkowitym zapełnieniem przestrzeni i router zwyczajnie przestanie działać (zawiesi się lub zresetuje).
Pliki sesji Transmission przechowywane są w pamięci ram (domyślnie w katalogu /tmp), więc po restarcie routera program zapomina o pobieranych plikach. Aby tego uniknąć należy zmienić opcję
config_dir tak, aby wskazywała na katalog na dysku, np.
# uci set transmission.@transmission[0].config_dir=/mnt/sda1/torrenty/konfiguracja
# uci commit transmission
Lista obsługiwanych opcji możliwych do ustawienia zawarta jest w domyślnym pliku konfiguracyjnym w pakiecie. Wszystkie opcje konfiguracyjne opisane są na stronie projektu:
http://trac.transmissionbt.com/wiki/EditConfigFiles Należy ustawić parametry stosownie do swoich potrzeb i posiadanego łącza. Należy także zwrócić uwagę na opcję
umask dzięki której można ustawić domyślne prawa dostępu do pobranych danych (
option umask 0 daje dostęp dla wszystkich).
Przy takich standardowych ustawieniach:
- katalog konfiguracyjny programu to /mnt/sda1/torrenty/konfiguracja
- katalog gdzie pobierane są pliki to /mnt/sda1/torrenty
- port na którym pracuje transmission to 51413
- pełen dostęp do programu, bez ograniczeń do GUI od strony LAN.
Dostęp do interfejsu możliwy jest przez przeglądarkę pod adresem
http://ip_routera:9091. Obsługa jest w miarę intuicyjna i nie wymaga dodatkowych wyjaśnień. Screenshot pokazuje całość:
(kliknij, aby powiększyć)
Jeżeli nie wystarcza nam dostęp przez www można użyć odpowiedniego gui jako normalnej aplikacji:
Uwagi końcowe
Jak dobry jest transmission - trudno powiedzieć, trzeba spróbować samemu. Na zachętę można powiedzieć, że transmission jest standardowym programem do torrentów instalowanym w Ubuntu - jednej z dystrybucji linuksa. Należy pamiętać o dostosowaniu parametrów wysyłania, liczby slotów i peerów stosowanie do posiadanego łącza, w przeciwnym przypadku możemy uzyskać problem z wysyceniem łącza lub zupełnym zablokowaniem routera.
Należy także pamiętać o odblokowaniu odpowiedniego portu na firewallu (
51413 w tym przypadku).
# uci add firewall rule
# uci set firewall.@rule[-1].name=transmission
# uci set firewall.@rule[-1].src=wan
# uci set firewall.@rule[-1].target=ACCEPT
# uci set firewall.@rule[-1].proto=tcp
# uci set firewall.@rule[-1].dest_port=51413
# uci commit firewall
Transmission po uruchomieniu widoczny jest w postaci kilku procesów, tak ma być i jest to normalne.
Zdalny dostęp do transmission od strony wan wymaga także odblokowania dostępu do portu 9091
# uci add firewall rule
# uci set firewall.@rule[-1].name=transmission_wan
# uci set firewall.@rule[-1].src=wan
# uci set firewall.@rule[-1].target=ACCEPT
# uci set firewall.@rule[-1].proto=tcp
# uci set firewall.@rule[-1].dest_port=9091
# uci commit firewall
Można ustawić też limity pobrań w zależności od czasu itd. Opcji do ustawienia jest dużo.
Transmission umożliwia także blokowanie "złych" adresów IP, służy do tego opcja
blocklist-enabled ustawiona na
true oraz
blocklist-url który ma wskazywać na adres z plikiem blokad.
Nie należy tego robić, jeżeli konfiguracja transmission nie jest na zewnętrznym dysku; plik z blokadami zajmuje kilkanaście mega!
Strona domowa projektu wraz z opisem opcji:
http://www.transmissionbt.com/Połączenie szyfrowane z Transmission można uzyskać wykorzystując dodatkowy program
stunnel.
Nie należy uruchamiać Transmission jeżeli nie jest jeszcze zamontowany dysk. Taka sytuacja może mieć miejsce, jeżeli mamy dysk na USB który jest montowany w trakcie uruchomienia systemu. Transmission może zostać uruchomione wcześniej niż będzie wykryty i dostępny nośnik w systemie. W takim przypadku należy posłużyć się mechanizmem uruchamiania serwisów po zamontowaniu dysku, opisane jest to w dokumencie
HDD/USB/SDMOD.
Wykonanie skryptu po zakończeniu pobierania
Od wersji 2.00 Transmission wzbogacił się o możliwość wykonania skryptu po zakończeniu pobierania. Odpowiadają za to dwie opcje
- script_torrent_done_enabled: true/false - wykonanie skryptu po pobraniu torrenta
- script_torrent_done_filename: nazwa w/w skryptu
(do ustawienia w
/etc/config/transmission)
Do skryptu przekazywane są następujące zmienne
- TR_TORRENT_NAME: nazwa pobranego pliku lub katalogu
- TR_TORRENT_HASH: jego hash
- TR_TIME_LOCALTIME: data pobrania
- TR_APP_VERSION: numer wersji transmission
- TR_TORRENT_ID: ID torrenta wg transmission
- TR_TORRENT_DIR: katalog gdzie są pobrane dane składowane
Przykład zastosowania: