Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Raspberry Pi — serwer torrentów — część 1, czyli lanie wody

Witam serdecznie, za długi wpis przepraszam. I tak już podzieliłem na 2 części.

W dzisiejszym odcinku przygód z Raspberry Pi, zajmiemy się wstępem do torrentowego serwera, który będzie zapisywać pliki na dysku USB, a interfejs obsługi programu będziemy mogli doinstalować na systemie Windows / Linux lub na telefonie Android. Dodatkowo (o ile dobrze pamiętam) możemy do takiego serwera po prostu zajrzeć przez internetową przeglądarkę :)

Ze względu na naturalną obronną reakcję przed iPhone'ami niestety nie dodam informacji, czy przedstawioną solucję można stosować z produktami tej firmy. Podejrzewam że można, ale po prostu nie wiem (mimo wielkiego zrozumienia wobec geniuszu Steve'a Jobsa i jego podejścia unikam iPhone'ów. Po prostu jestem innym typem klienta a produkty od jabłuszka nie są skierowane dla mnie).

Osobnym tematem do rozmów będzie na pewno kwestia moralnego podejścia do tematyki "torrentów" jednak tutaj chyba najłatwiej będzie dla mnie wytłumaczyć to w ten sposób.
Każdy ma swój własny kręgosłup moralny i podejście do etyki lub (w prostszym języku) po prostu byciem "fair" w stosunku do twórców dzieł/utworów.

Torrent sam w sobie nie jest niczym złym, choć pewnie tak samo mówiono jak wynaleziono proch/dynamit czy inne bronie. Ja podchodzę do tematu trochę inaczej - jeśli produkt jest dobry - to za niego płacę. Choćbym już miał jego "kradzioną" kopię.

Jeśli ktoś czułby się tym oburzony, to wytłumaczę się tym, że pochodzę jeszcze z czasów kiedy w jedną grę można było grać miesiącami, a jak producent wypuszczał demo, to później w finalnej wersji nie czułem się jak beta-tester bo wszystko nie działa. Ostatnio jednak odnoszę wrażenie, że rynek zalewany jest półproduktami, które i tak przecież ktoś kupuje. Pytanie tylko czy czasami nie wytworzyło się błędne koło i producent nie zasłania się piractwem i stratami przez "kradzież" (cudzysłów nieprzypadkowy) żeby oznajmić że gra jest jaka jest a nie ma jak poprawić bo budżet był za wysoki a przychody ze sprzedaży za niskie. Stąd wniosek dla mnie taki - zainstalowałem, zagrałem, spodobało mi się - szukam na Steamie promocji i po prostu kupuję.

Nowości zazwyczaj omijam bo ich cena jest dyktowana premierą, choć są tytuły które zakupuję od razu (jak np. Wiedźmin 3, nie mając nawet komputera aby w niego zagrać). Jeśli po 1-2 dniach grania uznaję że tytuł jest słaby - usuwam.

Proste... Tylko problem polega w tym, że ja na granie mam czas może 2 godziny w tygodniu. I chyba bym zapłakał się gdybym wydał 200zł na nową część Batmana żeby zobaczyć zestaw bugów i wycieków godnych wersji pre-alpha release. "Zwrotów nie przyjmujemy".

Kwestia następna - produkty niedostępne ze względów idiotycznych.
Siedzę w UK (czemu? to osobny temat) i naprawdę chciałbym obejrzeć niektóre seriale lub programy telewizyjne. Że tak brzydko powiem - śpię na pieniądzach więc szukam VOD'a który pozwoli mi zapłacić za pożądaną treść. 10 zł za odcinek serialu? Nie ma problemu, płącę i uwaga - przykro mi - dany materiał jest niedostępny dla Twojego kraju z powodów licencyjnych.

Nie chcę nawet wnikać jaką licencję musisz posiadać w innym kraju aby móc obejrzeć np. Gotowanie z Ewą z kanału Kuchnia+. Uprzedzając pytania - tak - widzę sens licencjonowania i całkowicie to rozumiem, ale błagam was - nie każcie mi wykupywać proxy w Polsce aby móc "legalnie" zapłacić spore pieniądze za "video na życzenie" kiedy nie ma innej alternatywy.

Tu też pewnie się kłania jak Polacy musieli przez lata używać Netflixa i VPN'ów / proxy aby móc "prawie" legalnie obejrzeć House of Cards. A już osobną sprawą jest podejście producentów do potencjalnego rynku którego a) boją się b) zupełnie nie rozumieją.
Dobrym przykładem jest wypuszczanie książek na rynek tylko w postaci drukowanej, kiedy rynek czytelników którzy korzystają z czytników ebooków naprawdę rośnie. Albo (bo mamy taką a nie inną politykę i przepisy) ceny ebooków, które mnie jako "obcokrajowca" nie przerażają, ale jednak - cena książki drukowanej - 30 zł, cena ebooka 29.99.

Tak wiem - są przeceny, tak wiem są promocje i tak wiem - są też i deale, że można zakupić książkę papierową a ebooka dostaniemy gratis - ale ja się po prostu pytam - czy naprawdę na książki papierowe można utrzymać niski podatek, ale na ebooki jest już 23%? To już też chyba wątek na osobny wpis. (a już najgorsze, że przecież ta książka w wersji wydrukowanej powstała z wersji elektronicznej, której konwersja i wstawienie w sprzedaż online to koszt tak niski, że sprzedanie 20 sztuk ebooków zwraca nakład wydania ebooka). Tak więc torrenty torrentami - można pewnie sporo dywagować i dyskutować (a zapraszam do dyskusji w komentarzach), my zajmijmy się po prostu instalacją serwera.

Jeśli chodzi o serwer torrentów.
Niejednokrotnie zdenerwowany i zirytowany że muszę korzystać z wielu rozwiązań (np. program tu, program tam, a komputer musi być włączony bo peerów mało), to wymyśliłem, że może by tak zrobić, że jak faktycznie znajdę coś ciekawego, to wyślę to do Raspberry, a malinka już się wszystkim zajmie i pliki będą dostępne dla każdego urządzenia w sieci lokalnej?

Jak wymyśliłem, tak wymyśliłem i stało się. Do Raspberry Pi podłączyłem kilka dysków twardych z interfejsem USB, do tego oczywiście wpięcie w sieć.

Wymagania projektu:

Działające Raspberry Pi z systemem Raspbian (w moim przypadku, dystrybucja Wheezy).
Raspberry Pi podłączone do lokalnej sieci
Dla wygody: dostęp poprzez SSH używając np. putty

Zaczniemy od:

Podłączenie dysków USB

I tak na wstępie - Adam Golański (eimi) uprzedził mnie i zrobił naprawdę porządny wpis na temat Raspberry Pi jako serwer plików. Nie będe ukrywał, że wszystko co wypisałem poniżej, mniej więcej pokrywa się z tym co eimi już napisał.

Artykuł można znaleźć pod tym linkiem

Podłączenie dysku USB bezpośrednio pod Raspberry Pi zazwyczaj kończy się źle. Raspberry po prostu nie posiada wystarczająco "mocy" żeby zasilić dyski twarde. Klawiatury czy myszki to nie problem, ale weźmy pod uwagę, że natężenie zasilacza który zasila nasz mały komputer to zazwyczaj 1A, ale na portach USB jest tylko 0,5A (czyli tyle, ile wymaga dysk). Jeśli podłączymy dysk, to na Raspberry pozostaje wtedy maksymalnie 0,5A a to już samo w sobie nie jest wystarczające do stabilnej pracy. Raspberry to nie komputer który ma 400-750 watowy zasilacz i wiele linii napięć. Stąd aby podłączyć dyski USB, zalecane jest używanie "aktywnego" huba USB, inaczej mówiąc - zasilanego rozgałęźnika USB. I tutaj też moja mała uwaga - nie polecam oszczędzać na tych rozgałęźnikach, bo może skończyć się tak - że będziemy w kółko denerwować się znikającymi dyskami czy dokupywać kolejne zasilacze do rozgałęźników. Nie mówiąc o ryzyku spalenia elektroniki sterującej dyskiem. Sam kupiłem bardzo dużo różnego sprzętu na eBayu a skończyło się wizytą w sklepie po markowy HUB marki Belkin. A że dysków mam sporo - to i hubów mam kilka.

Jeśli chodzi o HUB'y - to pozostaje jeszcze taka kwestia, że warto byłoby, żeby HUB'y nie zasilały urządzeń podłączonych do niego, kiedy nie jest podłączony żaden zasilacz. Sam nieźle się namęczyłem, kiedy okazało się że "zasilane" huby USB wcale nie potrzebują zasilacza, aby podawać napięcie na dyski USB co prowadziło do wysypywania się systemu Raspberry. Jak? Niestety dokładnie nie wiem, ale wiem że wiążę się to z tzw. backfeedem czyli podawaniem prądu z powrotem do Raspberry, więc jeśli HUB ciągnie prąd z Raspberry Pi i podaje na dyski, to wahania natężenia prądu powodują skoki napięcia na płytce Raspberry, bo wraca to z powrotem na urządzenie, które HUB zasila.

Jako krótkie podsumowanie tego problemu z zasilaniem powiem tak: sam się prawie że poddałem aż w końcu zrobiłem tak, że do Raspberry Pi wpiąłem pasywne rozgąłeźniki kupione w sklepie po 5zł, a do tych rozgałeźników wpiąłem dopiero aktywne HUB'y Belkina. W tych pasywnych HUBach po prostu przeciąłem przewód zasilający +5V zostawiając tylko Data+ / Data- i GND -> Ground.

W ten sposób dane są wciąż przesyłane pomiędzy dyskami a Raspberry, ale prąd "leci" tylko z zasilaczy Belkina.

Konfiguracja dysków USB

Jeśli już mamy chociaż jeden podłączony dysk do Raspberry Pi, to podejrzewam, że będzie to dysk w systemie zapisu NTFS. Linuxowe formaty zapisu pliku nie pomogą, jeśli będziemy chcieli z tego samego dysku korzystać w systemach Windows, a FAT32 nie sprawdzi się, jeśli chcemy korzystać z plików większych niż 4GB.
Stąd pozostaje NTFS. No chyba że dysk zawsze będzie podpięty do Raspberry i nie zależy nam na Windowsowskiej uniwersalności, wtedy polecam pozostać przy EXT4

Podpięliśmy dysk, więc na początek warto sprawdzić czy widnieje na liście urządzeń podłączonych poprzez USB.

W terminalu wpisujemy:sudo lsusb po czym szukamy urządzeń które będą wskazywać na dysk twardy. Jeśli brak - warto sprawdzić czy na pewno dysk ma wystarczająco dużo mocy aby pracować (niedobory zazwyczaj słychać, bo dysk stuka).

Jeśli jest na liście, to zaczniemy od sprawdzenia, pod jaką nazwą urządzenia znajduje się nasz dysk

sudo blkid

Odnalezienie dysku nie powinno stanowić dla nas problemu.

Warto zwrócić uwagę na nazwę punktu podłączenia (np. /dev/sda1) oraz numer UUID. Numer UUID oznacza nic innego jak: universally unique identifier czyli uniwersalny, unikalny identyfikator.

Zainstalujmy wsparcie dla systemu plików NTFS

sudo apt-get install ntfs-3g -y

następnie - trochę inaczej niż w systemach Windows, musimy "zamontować" pliki z dysku (lub sam pusty dysk) pod nasz wybrany folder. Osobiście używam folderu /media/ gdzie utworzyłem foldery dla każdego z podłączonych dysków.

Przyjmijmy, że do Raspberry podpięliśmy dysk Samsung.

Aby utworzyć folder, wpisujemy:sudo mkdir /media/Samsungpo czym nadajemy uprawnienia odczytu i zapisu dla wszystkich użytkownikówsudo chmod 775 /media/Samsung

Ok. Mamy podłączony dysk - powiedzmy, że jest dostępny pod /dev/sda1

Edytujemy plik fstab za pomocą komendy:sudo nano /etc/fstab

W podanym pliku wpisujemy numer UUID dysku oraz miejsce gdzie ma być zamontowany.
Oczywiście wartości oddzielamy "tabulatorem" czyli przyciskiem "Tab" na klawiaturze.

Przykładowy wpis:UUID=48DAC8E27AA8D6FF /media/Samsung ntfs-3g defaults 0 0

Dzięki dodaniu tej linii, po ponownym uruchomieniu Raspberry Pi (sudo reboot) nasz dysk będzie automatycznie "montowany" do katalogu /media/Samsung.

Niektóre poradniki używają miejsca podłączenia dysku (np. /dev/sda2) natomiast sam polecam jednak używać numer UUID, gdyż w przypadku odłączenia dysku i podłączenia go ponownie (ale np. pod inny port USB), numer podłączenia może się zmienić i dysk nie będzie już podłączony do /dev/sda2 ale np. /dev/sdb1). Dzięki korzystaniu z UUID, nie musimy się po prostu martwić, że pewnego dnia dysk będzie pod innym numerem.

Zamiast ponownego uruchamiania Raspberry, polecam wykorzystać komendę "mount" i zamontować podłączone urządzenia do odpowiadającym im folderom.
Wpisujemy:sudo mount -a

po czym przechodzimy do katalogu gdzie powinna znajdować się zawartość dysku

cd /media/Samsung

i listujemy jego zawartość za pomocąls -l

Jeśli dysk jest pusty. to nic się nie pojawi, ale jeśli mamy jakiekolwiek katalogi na tym dysku, to powinniśmy widzieć je wylistowane na ekranie.

Tak tylko dodam jeszcze, że według tego co znalazłem w internecie, wsparcie dla systemu plików NTFS w systemach Linux nigdy nie było dodane oficjalnie, przez co wydajność takich dysków podłączonych do Raspberry Pi niestety jest trochę niska. Obciążenie procesora przy kopiowaniu / zapisywaniu / odczycie plików z dysków z systemem NTFS jest dosyć wysokie.

A do tego dochodzi jeszcze obsługa przecież protokołów sieciowych i utrzymanie systemu raspberry aby wszystko działało. Ostrzegam też, żeby nie stawiać takiego serwera NAS za pomocą Raspberry Pi podłączonego do naszego routera/switcha za pomocą WiFi bo wtedy możemy już w ogóle odpuścić sobie oglądanie filmów z dysków podłączonych do Raspberry Pi.

Na dzień dzisiejszy mogę powiedzieć tak:
Raspberry jako serwer NAS spisuje mi się całkiem dobrze. Nie jest to 100% odporne na wszystko dookoła, zdarza mi się że dyski znikają (znaczy są podłączone, ale są puste) i należy je ponownie zamontować do katalogów, nie będę też ukrywał, że prędkość transferu danych pozostawia naprawdę wiele do życzenia i np. trzymanie obrazów systemów (*.iso) czy dużych projektów graficznych czy projektów video nie ma tutaj żadnego zastosowania, jednakże przechowywanie kolekcji mp3, filmów czy (ostatecznie) zdjęć jeszcze ma jakieś zastosowanie. Sam na dyskach podłączonych do Raspberry Pi przechowuje save'y do gier, bibliotekę filmów czy stare dokumenty lub stare obrazu systemów. Mam je zawsze pod ręką, ale są to dane na których nie zależy mi aby mogły np. szybko znaleźć się na pendrivie, lub aby móc na nich na "żywo pracować".

Prędkość transferu po sieci jednak spokojnie wystarcza aby móc odtworzyć plik mkv w rozdzielczości full hd, choć zauważyłem że przy plikach o wielkości powyżej 7GB, wyszukiwanie napisów trwa bardzo, bardzo długo. Dlaczego? Tego nie wiem - może napiprojekt próbuje odczytać więcej danych niż tylko nazwę pliku, jego długość i wielkość.

Po przejrzeniu dziesiątek stron na temat słabych wyników przesyłania plików po sieci z Raspberry, można tylko szukać poprawy poprzez:
a) posiadanie dysku który nie jest zasilany przewodem USB a osobnym zasilaczem. W tym momencie przewód USB idzie bezpośrednio do Raspberry Pi i omija HUB'y. Podobno może mieć to wpływ na wydajność
b) zamiana systemu NTFS (który obciąża procesor malinki) na np. EXT4
c) podkręcenie procesora maliny, co wydaje się dziwnym kiedy człowiek przypomni sobie że na Celeronie 400MHz obsługa dysków nie była tak tragiczna żeby trzeba było podkręcać procesor. Ale znowu przypominam, że obsługa NTFS w Linuxie nie jest taka "domyślna" do jakiej przywykliśmy

To są tylko teorię i po raz kolejny odsyłam do wpisu eimi (link na początku tego artykułu) który (o ile dobrze pamiętam) w bardziej "naturalny" i przyjazny człowiekowi sposób podał ładnie cyfry zapisu/odczytu i jak można ulepszyć system plików.

W drugiej części zapraszam już do instalacji serwera torrentów, bo w tym wpisie dochodzę do limitu znaków (jeśli taki istnieje) :) - druga część będzie dostępna już w prima aprilis 

linux programowanie serwery

Komentarze

0 nowych
tylko_prawda   10 #1 30.03.2016 16:01

eimi , nie emi.

edmun   12 #2 30.03.2016 17:22

@tylko_prawda: poprawione, dziękuję za zwrócenie uwagi

drobok   14 #3 30.03.2016 17:23

Nie wal takich bloków tekstu. Pobieranie torrent (a co za tym idzie udostępnianie treści innym użytkownikom) jest nielegalne - więc stawianie takiego serwera to czysta głupota - tylko czekasz aż przyjdzie ci do domu "przed sądowe wezwanie do zapłaty" czy jak to się tam zwie od jakiegoś trolla licencyjnego.

Filmy / seriale ściąga się po http albo smtp / pop3 :P

edmun   12 #4 30.03.2016 17:24

@drobok: pobieranie torrentów nie jest nielegalne. Nielegalne jest udostępnianie treści chronionych prawami autorskimi lub dystrybucja utworów wbrew licencji dołączonej do produktu

edmun   12 #5 30.03.2016 17:25

@drobok: a wezwań się nie boję, gdyż mój torrentowy serwer pobiera tylko treści na licencji creative-common lub open-source

tylko_prawda   10 #6 30.03.2016 17:29

@drobok: Nie wszystko. Wiedźmina nie może, ale np. dystrybucje Linuxa można legalnie pobierać i nie ma w tym niczego złego.

drobok   14 #7 30.03.2016 17:55

@edmun: No ja to widzę inaczej, biorąc poprawkę na to co napisałeś w swoim wpisie

Pobierając coś z torrent również to udostępniasz, jeśli chcesz coś tylko pobierać powinieneś używać protokołu który nie udostępnia danych podczas pobierania :P

Autor edytował komentarz.
drobok   14 #8 30.03.2016 17:56

@tylko_prawda: tak, tylko po co ci ten serwer torrent ściągając distro raz w życiu (ew raz na 2-3 lata ze względu na to że coś się posypało z własnej niewiedzy)

  #9 30.03.2016 18:12

Zrób poradnik jak dostawić do tego VPNa i ściągać bezpiecznie :)

tylko_prawda   10 #10 30.03.2016 19:06

@drobok:
1) Ja mam uraz do aktualizatora Ubuntu po wersji 13.10, który był bardzo uBUNTu, i wszystkie nowe wydania pobieram
2) Ja tam pobieram dość często, żeby sprawdzić "co nowego". Chociażby na VB...

#7 On teraz opisuje, jak zrobić z tego NASa.

dragonn   11 #11 30.03.2016 21:34

@drobok: Są materiały który możesz udostępniać, a jeśli chodzi o sens " serwer torrent ściągając distro raz w życiu " może ktoś chce również udostępniać przez dłuższy czas aby wspomóc społeczność?
@edmun ja polecam aria2 + webui-aria2. Trochę uparte w konfiguracji ale działa naprawdę świetnie i wygląda bardzo dobrze.

GIBbeer   1 #12 30.03.2016 21:43

@edmun rób raz dwa konwersję na EXT4. Ja u siebie z NTFS miałem ogromne problemy z dużymi plikami. Często przy operacjach na nich po prostu CPU nagle zaczynało być zajęte na 100% i malinka przestawała reagować na długi czas (powyżej kilku godzin).
U siebie używam rtorrent + rutorrent, które gorąco polecam po dobrym skonfigurowaniu.

drobok   14 #13 30.03.2016 22:12

@dragonn: Zużyciem prądu będziesz ją wspierał ? Jak pc chodzi to udostępniasz jak nie to nie. Jeśli wychodzi nowa wersja ty robisz upgrade przez repo a twoja wersja jest niepotrzebna w sieci bo i tak większość ściąga najnowszą ;)

dragonn   11 #14 30.03.2016 22:21

@drobok: Lol, wiesz ile Pi bierze prądu? Rocznie to koszt nie przekraczający 30zł przy działaniu 24h a na takim Pi można zrobić jeszcze bardzo dużo rzeczy np. dysk sieciowy, serwer wydruku, serwer www dla jakieś małej strony itp. A dzięki temu nie masz potrzeby żeby tak dużo chodził jakiś PC dzięki czemu oszczędzasz na prądzie.

drobok   14 #15 30.03.2016 23:13

@dragonn: takie rzeczy (włącznie z serwerem torrent) to na routerze postawisz, pchanie wszedzie pi jest bez sensu, ale nie o tym tutaj w końcu gadamy ;)

Dejlo   5 #16 30.03.2016 23:53

@drobok: piszesz tak, jakbyś sam nigdy z torrenta nie korzystał, nie mowiac o DC++ ;P

Koszt routera z możliwością sciagania/seedowania torentów jest ździebko wyższy niż koszt maliny i jakiegoś taniego routerka, co nie zmienia faktu ze wydajność takiego rozwiązania leży i kwiczy.

marcinek1992   1 #17 31.03.2016 08:32

@Dejlo: Właśnie czytając to tak sobie pomyślałem że są routery z możliwością torrentów. Wiem bo kiedys sam próbowałem to robic. Ale teraz kupując nowy router tez bede patrzył na takie udogodnienia.
W routerach asusa jest coś takiego:

"Download Master i ulepszony serwer multimedialny umożliwiają pobieranie i odtwarzanie plików multimedialnych, przechowywanych na dołączonej do routera pamięci USB, na kompatybilnych urządzeniach takich jak komputer PC, tablet, PS3, Xbox i telewizor Smart TV."

Sam jestem ciekaw jak to na takim routerze działa.

edmun   12 #18 31.03.2016 10:09

Routerem też byłoby miło,ale ja u siebie używam raspberry do wszystkiego. Koszt używanego raspberry 1B z zasilaczem to coś koło 70-100zl. Prad? Chyba komputer którego zapomniałem wyłączyć przez jedną noc kosztuje mnie więcej niż raspberry na cały rok. Sens serwera ? Jak już jest raspberry i działa w sieci to zawsze można ta funkcję po prostu dodać. Co do legalności. Tak jak wspomniałem wyżej, ja nikomu nie każe robić nic nielegalnie albo niezgodnie z prawem.

  #19 31.03.2016 23:15

@tylko_prawda: Z pobieraniem przez torrent dystrybucji Linuxa jest jak z dopalaczami do użytku "kolekcjonerskiego" czy jak z potwierdzaniem na RedTube że ma się 18 lat... Tak naprawdę ani dopy nie są "kolekcjonerskie", a RedTube ogląda masa "18 latków" mających po 14-16 lat. A torrent służy zazwyczaj do innych rzeczy ^^