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