Hlavní navigace

Sdílení hudby a filmů v domácnosti pomocí DLNA a RDP

Když potřebujete pouštět dětem pohádky a pokaždé z jiného zařízení, je potřeba najít co nejméně bolestnou cestu ke sdílení dat v rodinné síti. Vést může třeba skrz Ubuntu, DLNA a RDP.
David Ježek 15. 5. 2020
Doba čtení: 5 minut

Sdílet

Neexistuje jediný správný postup

Autor článku ví o tom, že jeho postup není všeobjímající, není optimální, není nejméně pracný. Pro jeho potřeby ale je nejrychlejším a nejlevnějším řešením, neb vše bylo otázkou aktivace dvou služeb na již běžícím hardwaru, z čehož plynou nulové pořizovací náklady na jakékoli vybavení.

Obecně ale platí, že kdo chce v domácnosti sdílet nějaká data, obvykle pomýšlí na několik věcí. Nejčastěji typický uživatel, když už se do sdílení pouští, chce sdílet ideálně všechna svá multimédia. To vedle neustále přibývajících rodinných videí z chytrých telefonů znamená i letitou rozsáhlou sbírku souborů s příponami .avi, .mkv, .mp3, .aac apod. (nezřídka doprovázené tajuplně schovaným podadresářem obsahujícím soubory s obsahem obvykle ratingovaným až od 18 let, o kterých se ve slušné společnosti nemluví).

Typickou volbou v takové situaci je dnes NAS, ideálně alespoň dvoudiskové síťové úložiště s kapacitou dnes v řádku jednotek až desítek TB, dostatečné prakticky pro libovolné množství obsahu. NAS může (záleží od modelu/výrobce) často sloužit i jako tiskový server či právě DLNA server pro zařízení, která umí přijímat data skrze DLNA.

Větší hračičkové jsou schopni postavit si vlastní řešení, například na bázi k tomu určených OS jako FreeNAS, OpenMediaVault či obecně nějaké linuxové distribuce. Jiní zase sáhnou po nějakém komplet řešení vlastního cloudu, které přesahuje potřebu distribuce multimédií v domácí síti.

Jedno konkrétní řešení

Já nic tak velkého nepotřeboval. Naše domácí síť je relativně skromná a nekomplikovaná. Za krabičkou internetového poskytovatele dlí jeden Wi-Fi router, který poskytuje konektivitu v místní síti buď kabelem (dvěma PC), nebo přes Wi-Fi (několik telefonů, jeden tablet, jedna smart TV). A právě zařízením připojeným přes Wi-Fi jsem potřeboval distribuovat obsah, zejména typu zvukových souborů, případně videí (z 99 % tvořených avi v SD rozlišeních).

Jelikož jde zčásti o pohádky z webu rozhlasu, který po týdnu ukončuje jejich online dostupnost, zčásti o spoustu obsahu na YouTube, který vydrží jen do prvního DMCA requestu (bez ohledu na jeho oprávněnost) a i další multimédia tu a tam z internetu prostě mizící, vedle DLNA bylo vhodné kvůli pohodlí zprovoznit něco pro vzdálený přístup, s čím bude možné se k PC vzdáleně přihlásit a nahodit youtube-dl (případně starý dobrý wget).

Nejde přitom o pro tento účel vyčleněný stroj, ale běžně používaný počítač, který typicky běží 24/7/365 a má výkonu dostatek, aby na něm sdílení složky s multimédii, případně RDP mohlo běžet. Uživatel sedící u PC ani nepozná, že se z něj streamují data (ověřeno i na starším stroji s Core 2 Duo 6600).

Samostatný stroj (i kdyby šlo o něco superúsporného jako Raspberry Pi) jsem zavrhl ze dvou důvodů: pořizovací a provozní náklady.

Proč DLNA? Protože funguje spolehlivě a zvukové i video soubory se přehrávají na ostatních zařízeních plynule, bez chyb (VLC na Androidu). Navíc zprovoznit DLNA na Ubuntu je enormně snadné. Proč RDP? Protože dobře funguje a zprovoznit jej je enormně snadné. U obojího byla jasnou prioritou nutnost, aby s tím mohla bez velkého utrpení pracovat i ne-IT manželka.

Zprovoznění a testy

Vše běží na stroji s procesorem Celeron G1820 (22nm dvoujádro Intel), 8GB RAM a 240GB SSD pro systém i data (včetně DLNA, které může využít cca 180 GB trvale volného místa). Stroj má typickou spotřebu za běhu pod 20 W (včetně pracujícího uživatele, jinak se vejde do 15 W). Na stroji aktuálně běží (K)Ubuntu 20.04 LTS, což je systém, který umí používat všichni, kdo budou potřebovat pracovat s daty v adresáři pro DLNA.

Zprovoznění DLNA je otázkou instalace jediného malého programu:

  • sudo apt install minidlna
  • sudo gedit /etc/minidlna.conf(plus nastavení cesty na adresář DLNA umístěný na ploše výchozího uživatele)
  • sudo service minidlna start

Běžící minidlna pak na localhostu na portu 8200 poskytuje základní informace o počtu sdílených souborů jednotlivých typů a o připojených klientech. Nic víc vlastně není potřeba konfigurovat, ostatně vše běží v interní síti, jejíž bezpečnost stojí na MikroTiku na střeše a levném čínském Wi-Fi routeru.

Zprovoznění RDP je též jednoduché:

  • sudo apt install xrdp
  • sudo adduser xrdp ssl-cert
  • sudo systemctl status xrdp
  • pro restarty: sudo systemctl restart xrdp („vytáhnout“ na plochu)
  • firewall netřeba řešit
  • řešení černé obrazovky po přihlášení:
    • sudo gedit /etc/xrdp/startwm.sh
    • před test a spuštění X session strčit toto:
      • unset DBUS_SESSION_BUS_ADDRESS
      • unset XDG_RUNTIME_DIR
      • . $HOME/.profile

Pár poznámek: předně je pro RDP využíván stejný uživatel jako lokálně na PC. Je to jediný uživatel s jednoduchým heslem a automatickým přihlašováním po zapnutí PC. V průběhu let jsme došli k tomu, že více uživatelských účtů akorát zdržuje a otravuje, rozlišení toho, co kdo na PC má, se beztak odehrává z 99 % v prohlížečích webů.

Typický scénář použití je takový, že pokud chce například manželka nahrát na PC do DLNA složky nějaké fotky, nemusí fyzicky ke stroji (nachází se ve 2. patře). Fotky do stroje pošle přes KDE Connect a pak přesune do DLNA složky (tohle lze zautomatizovat, ostatně přímo KDE Connect podporuje spouštění příkazů). Pokud chce něco přehrát, použije VLC. Uživatel sedící u PC má samozřejmě možnost daleko pohodlnější práce či správy DLNA.

U domovského systému je vhodné vypnout automatické odhlašování uživatele, případně uspávání či vypínání PC po nečinnosti, případně mít funkčně nastaven wake-on-LAN. Po automatickém uzamčení PC a novém přihlášení uživatele totiž Ubuntu 20.04 nechává chybně viset vlastní přihlašovací GNOME dialog v levé horní části obrazovky, který překrývá menu.

Co by se dalo teoreticky řešit do budoucna:

  1. Zprovoznit LAMP, na kterém bude možné skrze prohlížeč zadávat požadavky na stažení dat. Manželka jen zadá URL a systém pak vše obstará sám (stažení souboru a jeho uložení do příslušného adresáře v DLNA).
  2. Napsat skript, který si z html stránky sám vytáhne příslušné URL (na ČRo si youtube-dl často vyláme zuby), přes youtube-dl či wget jej stáhne a hlavně pak z údajů z html stránky správně otaguje uložený mp3 soubor, který má název z náhodných znaků (viz obrázky v galerii).
  3. když už poběží LAMP, tak fotografie zpřístupnit i skrze webovou stránku (kde se dá využít třídění, tagování, vyhledávání).
  4. atd.

Lze to řešit lépe?

Nepochybně existují způsoby, jak sdílení multimédií v domácnosti řešit jinak, a dokonce i lépe, snadněji z hlediska obsluhy i správy.

MIF obecny

Například je zjevné, že vybavit celou rodinu zařízeními od Apple a iCloud by představovalo elegantněji fungující řešení, nicméně za prvé nákladnější na pořízení (než 0 Kč) a nákladnější na provoz (než 0 Kč navíc).

Moje řešení vychází z těchto omezení, která jsem si stanovil, a z potřeby udělat přehrávání zejména mp3 a avi tak snadné, že letití uživatelé VLC nebudou muset nic měnit. Máte-li lepší řešení, podělte se prosím v diskusi.