Proč mít Kuki TV v Dockeru?
Co je Kuki TV? Kuki TV je televizní aplikace pro počítač, ale i pro Android a chytré televize. Tato televize (alespoň podle mého názoru) je aplikace postavená na KODI (původně XBMC). Velkou výhodou je, že má i podporu pro Linux. Přesněji pro Ubuntu
, Debian
a Archlinux
a přesně tohle je kámen úrazu. Používám totiž všude Fedoru a nehodlám to měnit jenom proto, že tato aplikace to nepodporuje.
Upozorňuji, že následující návod není ideálně bezpečný, pro domácí použití je podle mého názoru v pořádku, ale nedoporučuji toto řešení používat na důležitém / jednoduše napadnutelném stroji. Pro fungování Kuki v Dockeru se kontejner zapíná jako privilage
a kontejner získává přístup ke grafickému prostředí uživatele. Ani jedna z těchto věcí není ideálně bezpečná.
Tento návod slouží mimo jiné i jako návod na obecné vyřešení problému jak tunelovat z kontejneru zvuk a jak rozjet v kontejneru grafickou kartu.
Možné řešení
Virtuální stroj - tohle řešení je to nejjednodušší. Prostě a jednoduše si člověk vytvoří VM a nainstaluje si do něj Ubuntu/Debian/Archlinux a poté Kuki. Nevýhoda tohoto řešení je, že poté musíte mít na disku VM, která zabírá nemálo místa a ještě dlouho trvá, než si televizi zapnete, protože musí naběhnout virtuální stroj.
Wine - vzít si Windows variantu a spustit ji přes Wine, může a nemusí fungovat. Tak nebo tak, tohle řešení může přínést hromadu komplikací. A také aplikace má podporu pro Linux, tak proč zkoušet Windows variantu?
Flatpak - je řešení kontejnerů pro uživatelské aplikace. Výhoda je, že každá aplikace si může dotáhnout s sebou co potřebuje a je při spuštění izolovaná od systému. Tohle je asi nejlepší řešení, ale jelikož znám Docker víc než Flatpak, tak jsem se prozatím rozhodl pro Docker. Do budoucna mám plán zkusit i tuto variantu.
Docker - není to zrovna elegantní řešení, ale podle mých měřítek asi nejlepší. Docker kontejner je rychlý na naběhnutí (téměr okamžitý) a nebere skoro žádné systémové prostředky.
Vytvoření kontejneru
Projdeme si zajímavé části Docker file krok po kroku.
Obecné nastavení
FROM ubuntu:16.04
Základ pro tento kontejner je Ubuntu kontejner 16.04. Tahle verze je doporučená aplikací Kuki.
ENV TZ Europe/Prague
RUN apt-get update && apt-get install -y tzdata
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
Nastavení časové zóny, aby správně fungovala, musí se nainstalovat balík tzdata a nastavit se soubory /etc/localtime
a /etc/timezone
.
Video
První ze všeho potřebujete nainstalovat ovladače pro grafickou kartu. K tomu potřebujete vědět jaké ovladače nainstalovat. Ubuntu doporučuje pro zjištění, které ovladače potřebujete, vytvořit kontejner pouze s nainstalovaným balíkem ubuntu-drivers-common
a spustit kontejner s příkazem ubuntu-drivers devices
. Tento příkaz by měl sdělit, který balíček je potřebný pro instalaci. Nadále v návodu vysvětlím instalaci Intel a NVidia grafických karet, tak jak to funguje pro můj hardware,
zmíněné verze balíčku můžete zaměnit za to, co vrátil ubuntu-drivers
příkaz.
Grafické karty Intel
RUN apt-get install -y xserver-xorg-video-intel
Pro grafické karty intel stačí nainstalovat ovladače xserver-xorg-video-intel
a vše ostatní by mělo prostě fungovat.
Grafické karty NVidia
Zde je situace mnohem složitější. Pro fungování dockeru s NVidia grafickou kartou potřebujete použít NVidia docker. Ve zkratce potřebujete na počítač (ne do kontejneru) nainstalovat tuto utilitu za pomoci návodu zde. A nastavit správně prostředí v kontejneru.
LABEL com.nvidia.volumes.needed="nvidia_driver"
ENV PATH /usr/local/nvidia/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64:${LD_LIBRARY_PATH}
Tímto v jednoduchosti řeknete kde má kontejner hledat knihovny pro grafickou kartu, které fungují v kontejneru.
Poté musíte spouštět kontejner přes příkaz nvidia-docker
místo příkazu docker
.
Audio
RUN apt-get update && apt-get install -y pulseaudio
Pro zprovoznění zvuku je potřeba do kontejneru nainstalovat pulseaudio.
Nainstalovat Kuki TV
RUN apt-get install -y curl libcurl3 && \
curl http://linux.kuki.cz/kuki.pgp | apt-key add - && \
echo "deb http://linux.kuki.cz/ xenial kuki" > /etc/apt/sources.list.d/kuki.list
RUN apt-get update && apt-get install -y kuki
Jednoduše spustíme příkazy jak jsou napsány v návodu na stránkách Kuki TV.
Finální nastavení kontejneru
RUN adduser --disabled-password --gecos "Kuki user" --uid 1000 kuki
USER kuki
ENV HOME /home/kuki
Přídáme uživatele, který bude aplikaci Kuki v kontejneru spouštět pro zvýšení bezpečnosti.
Zároveň nastavíme i jeho domovskou složku.
COPY kuki-pulse /usr/local/bin/kuki-pulse
RUN chmod 755 /usr/local/bin/kuki-pulse
Nakopírujeme do kontejneru spouštěcí soubor pro Kuki TV, který zároveň umožní tunelovat PulseAudio ven z kontejneru. Tohle bude potřeba připojit i na straně počítače, ale k tomu se ještě dostaneme v sekci integrace.
CMD /usr/local/bin/kuki-pulse
Nastavíme defaultní příkaz pro spouštění kontejneru. Tohle zjednodušší budoucí práci s kontejnerem.
Integrace do hostitelského počítače
Audio
Proto abychom dostali z kontejneru Audio, tak potřebujeme využít tunelování co se nastavuje při spouštění Kuki v Docker kontejneru. To uděláme tak, že nainstalujeme aplikaci paprefs
(balíček s tímto jménem je přímo ve Fedorě. Poté paprefs
spustíme a pokračujeme do záložky Síťové nastavení a zapneme Povolit síťový přístup k místním zdrojům[4].
Poté ještě potřebujeme povolit port ve firewall. Pokud používáte defaultní firewalld, tak to provedete přes tento příkaz:
sudo firewall-cmd --add-port=4713/tcp --permanent
sudo firewall-cmd --reload
Nyní jsme schopni spustit Kuki TV.
Spuštění Kuki provedete tímto příkazem:
sudo docker run -ti --rm -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/$USER/.kuki:/home/kuki/.kuki --privileged kuki
nebo za pomoci skriptu v repozitáři
./run_kuki.sh
Snadnější spouštění
Pokud chcete mít Kuki jako program v systému stačí nakopírovat složku share
která je v repozitáři do ~/.local/share/
a skript run_kuki.sh
do ~/bin/
. Tohle je ale integrace pouze pro aktuálního uživatele.
Pro integraci do systému nakopírujte složku ~/.local/share/
do /usr/share/
a run_kuki.sh
do /bin/
.
[4]: Systém mám v Angličtině, takže se překlad možná malinko liší
2. 10. 2017 at 20:38
Aplikaci se mi podařilo lehce nainstalovat a zprovoznit.
Po přihlášení při pokusu dostávám chybové hlášení „přehrávání obsahu není na tomto zařízení povoleno“. Po diskuzi na technické podpoře mi bylo sděleno, že aplikace už není podporována a nová zařízení nelze přehrávat (na stávajících vše funguje správně). Aplikace bude kompletně přepsána a její dostupnost není aktuálně známa. Odhadem někdy v průběhu příštího roku.
Škoda, do té doby si budeme muset vystačit s aktuálními zařízeními a mobilními aplikacemi.
4. 10. 2017 at 10:44
Moc děkuji za informaci. Vůbec jsem netušil že aplikace byla stažena.
Tak uvidíme jestli Fedora dostane tentokrát nativní podporu nebo budu mít důvod podívat se na Flatpak variantu :).
15. 1. 2018 at 18:46
Zkusil jsem aplikace a registrace už zase funguje. Registrace už zase funguje. Přehrávání funguje, chybí zvuk, ale nemám teď čas si s tím hrát.
11. 10. 2017 at 13:52
Diky za clanek. S kuky jsme bojoval a skoncil s VM. Ted prejdu na docker.
Jen doplnim – wines tim ma velke potize – prakticky nepouzitelne. Neplytvat cykly.