Domowy serwer multimedialny — krok po kroku

W dobie smart TV, smartfonów, tabletów, konsol do gier, laptopów, komputerów, ultrabook'ów, odtwarzaczy strumieniowych i innych urządzeń mających możliwość odtwarzania multimediów (filmów, muzyki czy zdjęć) przechowywanie wielu kopii tych samych plików mediów jest czystym marnotrawstwem miejsca. W takiej sytuacji warto jest zastanowić się nad utworzeniem w domu lokalnego serwera multimediów - czyli komputera z dołączonym dyskiem twardym na którym przechowywane będą media, i do którego za pomocą sieci lokalnej w domu podłączać się będą wszystkie inne urządzenia i czerpać z nich multimedia. Takie rozwiązanie to same zalety - zamiast 4 kopii tego samego albumu muzycznego, przechowujemy go tylko w jednym centralnym miejscu, z którego możliwe jest zdalne pobieranie go na wszelkie inne urządzenia. Co prawda wymaga to postawienia w domu serwera, czyli ciągle uruchomionego i podłączonego do sieci komputerowej oraz elektrycznej komputera, udostępniającego swoje usługi innym sprzętom, natomiast w epoce komputerów typu SBC (Single Board Computer), możemy bez nabijania kosmicznych rachunków za prąd i bez wydawania tysięcy na sprzęt komputerowy, taki serwer postawić.

Serwer uruchomiony na takim układzie cechuje się niskim poborem energii, natomiast - co należy zaznaczać - nie jest to demon prędkości, jednak przy domowym zastosowaniu jako multimedialny serwer naprawdę nie trzeba nic więcej. Polecane płytki do tego to Raspberry Pi 3 lub Raspberry Pi 3B, można również użyć konkurencyjnych i mocniejszych platform pokroju Khadas VIM, BananaPI czy NanoPI K2. W moim przypadku użyję płytki Odroid C2 oparta na wydajnym układzie AMLOGIC S905, wspartym 2GB RAM DDR3. Koszt tego urządzenia wynosi 280-300złotych.

Wstępna instalacja i konfiguracja.

Do uruchomienia ODROID C2 wymagana jest szybka karta pamięci microSD (w tym przypadku użyłem pamięci SanDisk Ultra 16GB 48MB/s), zasilacz o parametrach 2A 5V, oraz - to już dla bezpieczeństwa oraz wygody - urządzenie można doposażyć w dystanse mające na celu postawić płytkę bez możliwości zwarcia pinów bądź zakupić jedną z dedykowanych obudów do układu - oficjalną obudowę do C2 możemy nabyć w cenie 30 złotych.

Po zebraniu wszystkich niezbędnych elementów należy przystąpić do pobrania oraz wypalenia na karcie pamięci oprogramowania. Producent udostępnia do instalacji obrazy Androida 6.0 oraz Ubuntu 16.04. Dostępne są również nieoficjalne oprogramowania, często zawierające nowsze wersje pakietów czy poprawki niektórych błędów (przykładowo - Volumio dla ODROID C2 z poprawionym sterownikiem USB Audio), natomiast do celu obranego w publikacji, można użyć najnowszej wersji Ubuntu, która dostępna jest do pobrania na wiki producenta.

Po pobraniu należy umieścić czytnik kart pamięci z włożonym nośnikiem do portu USB komputera, następnie przechodzimy do katalogu w którym pobrany został plik oraz uruchamiamy ścieżkę w terminalu korzystając z menu kontekstowego. Po otwarciu konsoli wpisujemy w niej następujące komendy (niektóre z nich mogą zapytać użytkownika o podania hasła) :

unxz <nazwa_pliku>
sudo umount <urządzenie>
sudo wipefs <urządzenie> -fa
sudo dd if=<nazwa_pliku> of=<urządzenie> bs=1M conv=fsync
sync

Gdzie <nazwa_pliku> to po prostu nazwa pobranego pliku z systemem dla Odroida, zaś <urządzenie>, to reprezentacja czytnika kart pamięci z włożonym nośnikiem w systemie. Ma ona zwykle postać /dev/sd*, natomiast sprawdzić to możemy korzystając z komendy:

lsblk

Która wyświetli nam wszystkie pamięci (dokładniej urządzenia blokowe), dostępne w komputerze. Poprawny nośnik docelowy dla systemu możemy znaleźć identyfikując sprzęt po rozmiarze dostępnego miejsca czy też jego nazwie.

Procedura wypalenia nośnika może trwać, w zależności od szybkości karty od dwóch minut do dziesięciu - w tym czasie żadne komunikaty nie będą wyświetlane w okienku konsoli, jest to całkiem normalne. 

Po wypaleniu obrazu na nośniku należy go umieścić w płytce, podłączyć ją kablem typu skrętka do sieci domowej oraz doprowadzić zasilanie. Urządzenie uruchomi się samoczynnie, a dostęp do niego możemy uzyskać podłączając monitor do gniazda HDMI oraz mysz i klawiaturę na USB lub zdalnie - za pomocą innego komputera będącego w tej samej sieci lokalnej, bowiem Linux Ubuntu dla C2 posiada domyślnie włączony protokół SSH (protokół służący do między innymi zdalnej komunikacji z konsolą poleceń urządzenia).

Aby połączyć się z płytką należy uruchomić terminal oraz wpisać w nim

ssh odroid@<ip>

gdzie odroid to domyślna nazwa użytkownika, natomiast <ip> to adres logiczny maszyny, który pobrany został automatycznie z routera. Jeżeli nie jesteśmy pewni adresu jaki otrzymało urządzenie można skorzystać ze skanera nmap, polecenia ping, bądź najszybciej - dostać się do panelu administracyjnego routera celem sprawdzenia nadanego adresu w liście klientów.

Przy pytaniu o hasło należy wprowadzić słowo odroid. Oczywiście istnieje późniejsza możliwość zmiany nazwy oraz hasła do domyślnego użytkownika, dostępny jest także dostęp do konta root, za pomocą komedy sudo su.

Konfiguracja przestrzeni dyskowej

Media które będą udostępniane innym urządzeniom należy gdzieś przechowywać, zatem do jednego z gniazd USB maszyny podłączamy przykładowo dysk zewnętrzny lub UFD, który będzie używany jako magazyn danych. Następnie należy skonfigurować go w taki sposób aby był on automatycznie montowany do systemu plików. Aby to uczynić należy z poziomu konsoli Odroida:

  • Wyświetlić wszystkie dyski komendą lsblk, celem identyfikacji pamięci z mediami, korzystając z rozmiaru dysku oraz jego etykiety.
  • Skopiować jego kod UUID (unikalny identyfikator pamięci) komendą blkid dla pamięci z mediami.
  • Edytować plik /etc/fstab, komendą sudo nano /etc/fstab i dopisać do niego następującą linię, wpisując w <uuid> identyfikator pamięci zebrany z wcześniejszego punktu (zapisywanie pliku: CTRL+X -> Y -> ENTER):

UUID=<uuid> /mnt/Media auto defaults,nofail
  • Utworzyć katalog /mnt/Media komendą sudo mkdir /mnt/Media.
  • Uruchomić ponownie system komendą sudo shutdown -r now.

Po restarcie oraz ponownym połączeniu z urządzeniem zawartość naszego dysku powinna być widoczna w katalogu /mnt/Media. Możemy to sprawdzić wpisując ls -l /mnt/Media.

Instalacja DLNA i FTP.

DLNA jest technologią wspieraną przez większość obecnych urządzeń do strumieniowego przesyłania multimediów. FTP natomiast jest podstawowym protokołem transferu plików przez sieć i może być on używany do wysyłania nowych multimediów bezpośrednio na serwer, bez konieczności każdorazowego wyłączania i odłączania nośnika od płytki SBC. Będzie on również używany do udostępniania mediów urządzeniom niewspierającym protokołu DLNA.

Serwer DLNA zainstalujemy korzystając z komedy:

sudo apt-get update; sudo apt-get install minidlna -y

i po instalacji jest on od razu uruchomiony oraz w większości skonfigurowany. Niezbędne jest jednak podanie ścieżki z mediami które mają być udostępniane. Aby to uczynić przechodzimy do edycji pliku /etc/minidlna.conf, korzystając z komendy sudo nano /etc/minidlna.conf. Wyszukujemy linię media_dir oraz zastępujemy ją podając swoją ścieżkę do danych multimedialnych, na końcu zapisując plik.

Kolejnym etapem jest konfiguracja serwera FTP - do tego zadania posłuży nam program vsftpd, który zainstalujemy komendą sudo apt-get update; sudo apt-get install vsftpd -y. Aplikacja również przychodzi częściowo skonfigurowana, aby jednak mogła działać prawidłowo należy zmienić kilka opcji w jej pliku konfiguracyjnym, poprzez polecenie sudo nano /etc/vsftpd.conf. Parametry które należy zmienić są następujące:

  1. Wyszukujemy linię #write_enabled=YES oraz usuwamy krzyżyk na początku.
  2. Wyszukujemy linię #local_umask=022 oraz usuwamy krzyżyk na początku.
  3. Wyszukujemy linię #utf8_filesystem=YES oraz usuwamy krzyżyk na początku.

W przypadku kiedy któraś z linii nie była obecna w pliku należy po prostu utworzyć ją na samym końcu. Po zapisaniu pliku należy uruchomić ponownie obie aplikacje:

sudo service vsftpd restart; sudo service minidlna restart

Na końcu warto sprawdzić poprawność konfiguracji obu usług - ich stan powinien być oznaczony jako active (running).

service minidlna status
service vsftpd status

Korzystanie z multimediów

Kiedy już serwer został skonfigurowany możemy podłączać się do niego zarówno z komputera jak i z innych urządzeń.

Smartfony z Androidem zwykle posiadają wsparcie dla DLNA, dostęp do niej jest opisany w dołączonej do urządzenia instrukcji.

Na komputerze zaś możemy doinstalować pakiet djmount, który zamontuje nam katalog DLNA w systemie plików, co pozwoli nam na używanie zasobów serwera tak jak zasobów komputera lokalnego. Instalacja odbywa się za pomocą polecenia:

sudo apt-get install djmount -y; mkdir ~/Media

Następnie dodajemy program do sekcji Startup Applications oraz dodajemy nowy wpis, uzupełniając jego właściwości w następujący sposób:

Po wylogowaniu oraz ponownym zalogowaniu w katalogu domowym użytkownika pojawi się katalog Media, w którym pojawią się uporządkowane według typów zasoby multimedialne i możliwe będzie ich odtwarzanie.

W ten sposób zaoszczędziliśmy sporo miejsca oraz zyskaliśmy możliwość centralnego zarządzania multimediami - zdjęcia z wyjazdu czy film z imprezy rodzinnej w ciągu chwili mogą być dostępne na wszystkich urządzeniach, bez konieczności dodatkowego zajmowania miejsca na każdym z nich osobno.