Dodanie klienta torrent do routera z OpenWrt

Zawarto┼Ť─ç

A wi─Öc chcesz doda─ç klienta torrent do twojego routera z OpenWrt, aby m├│c pobra─ç t─ů metod─ů, chocia┼╝by obraz Raspbian, zapisa─ç go na wcze┼Ťniej pod┼é─ůczony i ustawiony dysk USB oraz mie─ç do niego dost─Öp z poziomu sieci lokalnej?

Nic prostrzego. Do tego celu wykorzystamy Transmission.

Sprawdzone w wersji OpenWrt 21.02 oraz OpenWrt 22.03

Instalacja i konfiguracja Transmission #

Instalacji mo┼╝esz to dokona─ç z poziomu panelu administracyjnego przez przegl─ůdark─Ö internetow─ů (System > Software) lub te┼╝ z poziomu terminala:

opkg update
opkg install transmission-daemon transmission-web luci-app-transmission

Aplikacja luci-app-transmission pozwoli nam na dostosowanie dodatkowych opcji z poziomu przegl─ůdarki internetowej bez potrzeby edycji plik├│w z poziomu terminala.

Pakiet transmission-daemon-openssl to program, kt├│ry b─Ödzie dzia┼éa┼é w tle naszego routera, a transmission-web to osobny dost─Öp do naszego programu z poziomu przegl─ůdarki internetowej, w celu dodania lub usuni─Öcia pobieranego pliku.

Zaczniemy od konfiguracji ustawień.

Przechodzimy do panelu sterowania naszego routera, nast─Öpnie Services > Transmission.

OpenWrt services transmission

Nim zaznaczymy konfiguracj─Ö jako w┼é─ůczon─ů (Enabled), przejd┼║my przez kilka ustawie┼ä. Najwa┼╝niejsze z nich jest to, gdzie nasze pliki maj─ů by─ç zapisywane.

W sekcji Files and Locations wprowadzamy lokalizacje folderu w Downloads locations. W moim przypadku jest to na dysku USB zmontowanym jako /mnt/sda1. Dodatkowo mam w┼é─ůczone zapisywanie plik├│w pobieranych (niesko┼äczonych) w osobnym folderze (zaznaczamy Incomplete directory enabled).

W pozostałych ustawieniach (Miscellaneous) zmieniłem szyfrowanie z preferowane (Preferred) and wymuszone (Forced).

Ustawi┼éem r├│wnie┼╝ czarn─ů list─Ö (Blacklist), wybieraj─ůc z iBlocklist list─Ö level1 or Bluetack.

Reszt─Ö pozostawiam w ramach uznania.

Zaznaczmy opcj─Ö Enable na pocz─ůtku ustawie┼ä i klikamy Zapisz i Zastosuj (Save & Apply).


Je┼╝eli wasza aplikcaja luci-app-transmission zwraca informacj─Ö o brakuj─ůcych polach Run daemon as user oraz Run daemon as group, przez co nie ma mo┼╝liwo┼Ťci zapisania ustawie┼ä, tak jak pokazane poni┼╝ej, nale┼╝y pod┼éu┼╝y─ç si─Ö terminalem, aby to naprawi─ç.

luci-app-transmission 21.02 non-empty value

sed -i '/"file": {/a\\t\t\t\t"/etc/passwd": [ "read" ],\n\t\t\t\t"/etc/group": [ "read" ],' /usr/share/rpcd/acl.d/luci-app-transmission.json
service rpcd restart

Uruchomienie Transmission #

Niestety, na chwil─Ö obecn─ů, mimo, ┼╝e w luci-app-transmission opcja Enabled jest ustawiona i powinna domy┼Ťlnie uruchomi─ç transmission-daemon, tak si─Ö nie dzieje.

Aby uruchomi─ç nasz program, z poziomu terminala wydajemy komend─Ö:

/etc/init.d/transmission start

Po czym udajemy si─Ö do panelu transmission, domy┼Ťlnie http://192.168.1.1:9021/transmission/web/ gdzie dodajemy nasz torrent.

Transmission downloading raspbian buster full

Aby zatrzyma─ç Transmission mo┼╝emy zabi─ç proces z poziomu panelu administracyjnego routera System > Processes lub z poziomu terminala:

/etc/init.d/transmission stop

Jeżeli mamy jakikolwiek problemy z uruchomieniem, zalecam wykonanie komendy logread z poziomu terminala w celu przeanalizowania błędów.

Je┼╝eli chcemy r─Öcznie zmieni─ç ustawienia w pliku z poziomu terminala, po zatrzymaniu daemona wystarczy wy-edytowa─ç /etc/config/transmission. Czasem mo┼╝e by─ç to niezb─Ödne, je┼╝eli za bardzo namieszamy w ustawieniach.

W sekcji Config file directory z poziomu przegl─ůdarki, lub option config_dir w pliku konfiguracyjnym zalecam zmian─Ö z /tmp/transmission na /root/transmission. Dzi─Öki temu folder roboczy demona transmission zapisany b─Ödzie w sta┼éej lokalizacji a nie tymczasowej. Ma to znaczenie w przypadku pliku Blacklist, kt├│ry zostanie na routerze po jego ponownym uruchomieniu.

Problem w OpenWrt 22.03.0 #

Jak to z ka┼╝d─ů aktualizacj─ů bywa, czasem co┼Ť si─Ö psuje lub przestaje dzia┼éa─ç w systemie.

Tranmission w wersji 3.00 w swoim skrypcie startowym u┼╝ywa co┼Ť takiego jak procd_ujail oraz seccomp. Bez zag┼é─Öbiania si─Ö w to, do czego te pakiety s─ů przydatne, skupi─Ö si─Ö tylko na tym, ┼╝e powoduj─ů one problem z Transmission (Issue #19376).

Ot├│rz plik konfiguracyjny nie zapisuje si─Ö poprawnie. W przypadku zapisywania plik├│w wy┼Ťwietlany jest b┼é─ůd zwi─ůzany z brakiem miejsca na dysku lub te┼╝ torrent nie przechodzi finalnej weryfikacji po pobraniu. Jednym s┼éowem kupa.

Aby ten problem naprawi─ç, mo┼╝na usun─ů─ç pakiet procd_ujail oraz procd_seccomp, jednak┼╝e jest to rozwi─ůzanie, kt├│re nie zawsze si─Ö sprawdzi, gdy┼╝ inne pakiety w systemie mog─ů wymaga─ç ich do pracy, w zwi─ůzku z tym mog─ů one zosta─ç zainstalowane mimo woli lub te┼╝ odinstalowanie (opkg remove ...) nie powiedzie si─Ö.

Innym rozwi─ůzaniem, niestety r├│wnie┼╝ kr├│tkoterminowym jest zmodyfikowanie skryptu startowego transmission. Na szcz─Ö┼Ťcie (lub te┼╝ nie), transmission nie jest aktualizowany tak cz─Östo, wi─Öc to rozwi─ůzanie mo┼╝e si─Ö sta─ç swojego rodzaju rozwi─ůzaniem d┼éugoterminowym.

W pierwszej kolejno┼Ťci musimy zatrzyma─ç transmission.

/etc/init.d/transmission

Nast─Öpnie rozpoczynamy edycj─Ö pliku inicjuj─ůcego. W tym celu u┼╝ywam nano ale r├│wnie dobrze mo┼╝esz wykorzysta─ç wbudowany vim.

nano /etc/init.d/transmission

Przewijamy plik a┼╝ do momentu, gdy zobaczymy sekcj─Ö secomp_path oraz procd_add_jail, po czym komentujemy (#) odpowiednie linie tak jak pokazano poni┼╝ej.

#       seccomp_path="/etc/seccomp/transmission-daemon.json"
#       if [ -f "$seccomp_path" ]; then
#               procd_set_param seccomp "$seccomp_path"
#       fi

        if [ -z "$USE" ]; then
                procd_set_param limits core="0 0"
        else
                procd_set_param limits core="0 0" as="$USE $USE"
                logger -t transmission "Starting with $USE virt mem"
        fi

        [ -d "$web_home" ] && procd_set_param env TRANSMISSION_WEB_HOME="$web_home"
        [ "$ca_bundle" -gt 0 ] && procd_set_param env CURL_CA_BUNDLE="$ca_bundle_file"

#       procd_add_jail transmission log
#       procd_add_jail_mount "$config_file"
#       procd_add_jail_mount_rw "$config_dir/resume"
#       procd_add_jail_mount_rw "$config_dir/torrents"
#       procd_add_jail_mount_rw "$config_dir/blocklists"
#       procd_add_jail_mount_rw "$config_dir/stats.json"
#       procd_add_jail_mount_rw "$download_dir"
        web_home="${web_home:-/usr/share/transmission/web}"
#       [ -d "$web_home" ] && procd_add_jail_mount "$web_home"
#       [ -f "$ca_bundle_file" ] && procd_add_jail_mount "$ca_bundle_file"
        procd_close_instance
}

Upewnij si─Ö, ┼╝e doda┼ée┼Ť komentarz zar├│wno do seccomp jak i jail, gdy┼╝ pozostawiaj─ůc seccomp do┼Ťwiadczymy notorycznego wieszania si─Ö naszego daemona transmission.

Zapisujemy nasz plik i uruchamiamy ponownie transmission.

/etc/init.d/transmission start

Takim sposobem transmission b─Ödzie dzia┼éa─ç poprawnie w OpenWrt 22.03.0. Zobaczymy, czy aktualizacja wy┼╝ej wymienionych pakiet├│w, lub ca┼éego OpenWrt naprawi ten problem. Nie oczekiwa┼ébym zbytniego zaangarzowania w ten b┼é─ůd ze strony tw├│rcy aplikacji.

Pozdrawiam.

Komentarze