diff --git a/install-kodi-on-ubuntu-server.md b/install-kodi-on-ubuntu-server.md new file mode 100644 index 0000000..68f4fc4 --- /dev/null +++ b/install-kodi-on-ubuntu-server.md @@ -0,0 +1,132 @@ +При запуске/рестарте сервера автоматически запускается `Kodi` приложение от пользователя `tv` (авто юзер без пароля и без sudo прав) + +## Установка графической базы + +```bash +sudo apt update +sudo apt install --no-install-recommends \ + xorg xserver-xorg-legacy \ + openbox \ + dbus-x11 \ + xinit +``` + +xorg (X / X11) - графический сервер для работы с видеодрайвером — нужен для HDMI/GUI +openbox — простой windows manager для стабильности (фокус / стабильный ввод) +xinit — чтобы запускать X без display manager’а (мы запускаем автоматически через systemd) + + +## Установка Kodi + +`sudo apt install kodi` + +## Пользователь `tv` без sudo и без пароля + +```bash +sudo adduser --disabled-password --gecos "" tv +sudo usermod -aG audio,video,input,render tv +``` +- Группы нужны для HDMI, звука, пульта + +## Автостарт X + Kodi для пользователя tv + +`sudo nano /home/tv/.xinitrc` + +Содержимое + +```sh +#!/bin/sh + +# отключает DPMS (Display Power Management Signaling) +# X не будет: +# - гасить экран +# - уводить монитор в sleep/standby/off +# HDMI-сигнал остаётся активным +xset -dpms + +# отключает X screensaver (таймер бездействия) +xset s off + +# запрещает «чёрный экран» вместо screensaver +xset s noblank + +exec kodi-standalone +``` + +```bash +sudo chown tv:tv /home/tv/.xinitrc +sudo chmod +x /home/tv/.xinitrc +``` + +### Разрешаем запуск X без root + +`sudo nano /etc/X11/Xwrapper.config` + +```ini +allowed_users=anybody +needs_root_rights=no +``` + +## Автологин без display manager (через systemd) + +Создаём сервис + +`sudo nano /etc/systemd/system/kodi.service` + +```ini +[Unit] +Description=Kodi Media Center +After=systemd-user-sessions.service +Conflicts=getty@tty1.service + +[Service] +Type=simple + +User=tv +PAMName=login + +TTYPath=/dev/tty1 +TTYReset=yes +TTYVHangup=yes +TTYVTDisallocate=yes + + +StandardInput=tty +# StandardInput=tty заставляет systemd реально “подцепить” сервис к tty1 + +StandardOutput=journal +StandardError=journal + +# Явно забираем VT1 и оставляем tty за X +ExecStart=/usr/bin/startx -- :0 vt1 +# убираем -keeptty (он часто конфликтует с тем, как systemd управляет VT) +Restart=always +RestartSec=2 + +[Install] +WantedBy=multi-user.target + +``` +Активируем + +`sudo systemctl enable kodi.service` + +Если меняем и перезапускаем: + +`sudo systemctl daemon-reload` +`sudo systemctl restart kodi.service --no-block` + +> --no-block нужен чтобы не блокировать текущую ssh сессию админа + + +# Хранилище + +`/srv/photo` и `/srv/media` + +монтируем в домашние директории юзерам + +`ln -s /srv/photo /home/vk/photo --force` +`sudo -u tv ln -s /srv/photo/ /home/tv/photo --force` + + +