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.
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.
Projdeme si zajímavé části Docker file krok po kroku.
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
.
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.
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.
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
.
RUN apt-get update && apt-get install -y pulseaudio
Pro zprovoznění zvuku je potřeba do kontejneru nainstalovat pulseaudio.
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.
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.
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
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ší