Add install kodi on ubuntu server
132
install-kodi-on-ubuntu-server.md
Normal file
132
install-kodi-on-ubuntu-server.md
Normal file
@@ -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`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user