Установка Jellyfin Media Server на Debian 13, 12, 11: подробное руководство

Jellyfin — это свободная альтернатива Plex и Emby для организации домашней медиатеки. Вы можете хранить фильмы, сериалы, музыку и фото на сервере, а потом смотреть/слушать на любом устройстве (телевизор, телефон, планшет, компьютер) через браузер или приложение. Jellyfin не имеет платных подписок, не собирает телеметрию и полностью находится под вашим контролем. Главные сложности при установке на Debian: нужно правильно добавить репозиторий (лучше через extrepo), настроить права доступа для пользователя jellyfin к папкам с медиафайлами (через setfacl), а также, при необходимости, настроить reverse-прокси для доступа через домен с SSL. Если вы используете reverse-прокси, сначала настройте его на HTTP, а потом получите сертификат Let’s Encrypt.

💡 В этом руководстве вы установите Jellyfin Media Server на Debian из официального репозитория (через extrepo или вручную). Вы также узнаете, как настроить права доступа к медиафайлам, открыть порт в UFW, настроить reverse-прокси с SSL (Apache или Nginx) и решить типичные проблемы.

В этой статье вы узнаете:

  • Как установить Jellyfin через extrepo (рекомендованный способ)
  • Как установить Jellyfin через ручное добавление репозитория
  • Как настроить доступ к медиафайлам (права через setfacl)
  • Как настроить аппаратное транскодинг
  • Как открыть порт 8096 в UFW
  • Как настроить reverse-прокси с SSL (Apache или Nginx)
  • Как сделать резервную копию перед обновлением
  • Как решить типичные проблемы: порт занят, нет доступа к файлам, сервис не запускается

Для кого: владельцы домашних медиатек, администраторы небольших серверов, а также все, кто хочет стримить свою коллекцию без платных подписок на Debian 11, 12 или 13.

Оглавление

1. 🔧 Предварительные требования

Перед установкой убедитесь, что:

  • У вас установлена Debian 11, 12 или 13
  • Подключение к интернету стабильно
  • У вас есть права sudo
  • У вас есть медиафайлы (фильмы, музыка) для добавления в библиотеку

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.

Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.

✅ Если выводит root — всё в порядке, можете продолжать.

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.

1.1 Обновление системы

Перед установкой всегда обновляйте список пакетов:

sudo apt update && sudo apt upgrade -y

Что делает:

  • sudo — права суперпользователя
  • apt update — обновляет список доступных пакетов из репозиториев
  • && — выполняет следующую команду только если предыдущая успешна
  • apt upgrade -y — обновляет все установленные пакеты до последних версий

Зачем: Это стандартная практика безопасности перед установкой нового ПО.

1.2 Установка вспомогательных пакетов

sudo apt install ca-certificates curl gpg -y

Что делает: Устанавливает инструменты для безопасной работы с HTTPS-репозиториями и GPG-ключами.

2. 📊 Сравнение способов установки Jellyfin

В Debian есть два основных способа установки Jellyfin. Вот их сравнение:

МетодИнструментСложностьПлюсыМинусы
extrepo
(рекомендовано)
extrepoОчень низкаяМинимум
команд,
автоматическое
управление
ключами
Меньше
контроля
Ручное
добавление
репозитория
curl, teeСредняяПолный контроль
над ключами и
конфигурацией
Больше шагов

💡 Рекомендация: Для большинства пользователей extrepo — идеальный выбор. Это официальный инструмент Debian для управления сторонними репозиториями.

3. 📦 Способ 1: Установка Jellyfin через extrepo (рекомендованный)

extrepo — это инструмент от Debian, который упрощает добавление сторонних репозиториев.

3.1 Установка extrepo и включение репозитория Jellyfin

sudo apt install extrepo -y
sudo extrepo enable jellyfin

Что делает: Устанавливает extrepo и добавляет официальный репозиторий Jellyfin.

3.2 Обновление списка пакетов и проверка

sudo apt update
apt-cache policy jellyfin jellyfin-ffmpeg7

Ожидаемый вывод: В строках Candidate должна быть версия, а в таблице версий — https://repo.jellyfin.org/debian.

3.3 Установка Jellyfin

sudo apt install jellyfin -y

Что делает: Устанавливает Jellyfin Media Server (метапакет, который подтягивает сервер, веб-интерфейс и FFmpeg).

3.4 Проверка статуса сервиса и пакетов

systemctl status jellyfin
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' jellyfin jellyfin-server jellyfin-web jellyfin-ffmpeg7

Ожидаемый вывод в терминале (сокращённо):

● jellyfin.service - Jellyfin Media Server
     Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled)
     Active: active (running)
ii jellyfin 10.10.3-1
ii jellyfin-server 10.10.3-1
ii jellyfin-web 10.10.3-1
ii jellyfin-ffmpeg7 7.0.2-2

4. 📦 Способ 2: Установка Jellyfin через ручное добавление репозитория

Этот способ подходит, если вы хотите полностью контролировать процесс.

4.1 Импорт GPG-ключа Jellyfin и проверка отпечатка

curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/jellyfin.gpg

gpg --show-keys --with-fingerprint /usr/share/keyrings/jellyfin.gpg

Ожидаемый отпечаток: 4918AABC486CA052358D778D49023CD01DE21A7B

4.2 Определение кодового имени и добавление репозитория

. /etc/os-release
arch=$(dpkg --print-architecture)

case "$VERSION_CODENAME" in
  trixie|bookworm|bullseye) ;;
  *) echo "Неподдерживаемая версия Debian: $VERSION_CODENAME"; exit 1 ;;
esac

sudo tee /etc/apt/sources.list.d/jellyfin.sources > /dev/null <<EOF
Types: deb
URIs: https://repo.jellyfin.org/debian
Suites: ${VERSION_CODENAME}
Components: main
Architectures: ${arch}
Signed-By: /usr/share/keyrings/jellyfin.gpg
EOF

4.3 Обновление списка пакетов и установка

sudo apt update
sudo apt install jellyfin -y

5. 🔐 Настройка прав доступа к медиафайлам (ВАЖНО!)

Jellyfin работает от пользователя jellyfin. Если ваши медиафайлы лежат не в домашней директории, пользователь jellyfin не сможет их прочитать без дополнительных прав.

5.1 Установка пакета ACL (если не установлен)

sudo apt install acl -y

5.2 Добавление прав для пользователя jellyfin через setfacl

sudo setfacl -R -m u:jellyfin:rx /путь/к/медиа

Пример для /media/video:

sudo setfacl -R -m u:jellyfin:rx /media/video

Что делает: Добавляет пользователю jellyfin права на чтение и выполнение (доступ к директориям) для всех файлов и папок рекурсивно.

5.3 Проверка прав

getfacl /путь/к/медиа
sudo -u jellyfin ls /путь/к/медиа

5.4 Настройка аппаратного транскодинга (опционально)

Для использования аппаратного транскодинга (Intel Quick Sync, VA-API) добавьте пользователя jellyfin в группу render:

ls -l /dev/dri 2>/dev/null
id jellyfin
sudo usermod -aG render jellyfin
sudo systemctl restart jellyfin

6. 🔥 Настройка UFW (фаервол)

Если вы планируете иметь доступ к Jellyfin с других устройств в сети, откройте порт 8096.

6.1 Разрешить SSH (чтобы не заблокировать себя)

sudo ufw allow ssh

6.2 Разрешить порт Jellyfin

sudo ufw allow 8096

6.3 Включить UFW

sudo ufw enable

7. 🖥️ Первоначальная настройка через WebUI

7.1 Доступ к WebUI

Откройте браузер и перейдите по адресу:

http://IP_вашего_сервера:8096

или локально:

http://localhost:8096

7.2 Процесс настройки

  1. Выберите язык (русский или английский).
  2. Создайте учётную запись администратора (имя, пароль).
  3. Добавьте медиатеки: нажмите Add Media Library, выберите тип (фильмы, сериалы), укажите папку.
  4. Настройте метаданные (язык).
  5. Настройте удалённый доступ (можно пропустить и настроить reverse-прокси позже).

8. 🔄 Резервное копирование перед обновлением

Перед обновлением Jellyfin рекомендуется сделать резервную копию данных и конфигурации:

backup_dir="$HOME/jellyfin-backup-$(date +%F)"
mkdir -p "$backup_dir"
sudo systemctl stop jellyfin
sudo tar -C /var/lib -czf "$backup_dir/jellyfin-data.tar.gz" jellyfin
sudo tar -C /etc -czf "$backup_dir/jellyfin-config.tar.gz" jellyfin
sudo systemctl start jellyfin
sudo chown -R "$USER:$USER" "$backup_dir"

Что делает: Останавливает Jellyfin, создаёт архивы данных (/var/lib/jellyfin) и конфигурации (/etc/jellyfin), затем запускает сервис обратно.

9. 🚀 (Опционально) Reverse-прокси с SSL (Apache или Nginx)

Если у вас есть домен и вы хотите доступаться к Jellyfin через https://jellyfin.example.com, настройте reverse-прокси. Сначала настройте HTTP-прокси, получите сертификат Let’s Encrypt, после чего Certbot сам настроит HTTPS.

9.1 Для Apache

Установка Apache и модулей:

sudo apt install apache2 -y
sudo a2enmod proxy proxy_http headers proxy_wstunnel ssl
sudo systemctl restart apache2

Создание конфигурации (HTTP, временно):

sudo tee /etc/apache2/sites-available/jellyfin.conf > /dev/null <<EOF
<VirtualHost *:80>
    ServerName jellyfin.example.com
    ProxyPreserveHost On
    ProxyPass "/socket" "ws://localhost:8096/socket"
    ProxyPassReverse "/socket" "ws://localhost:8096/socket"
    ProxyPass "/" "http://localhost:8096/"
    ProxyPassReverse "/" "http://localhost:8096/"
</VirtualHost>
EOF

sudo a2ensite jellyfin.conf
sudo systemctl reload apache2

Установка Certbot и получение сертификата:

sudo apt install python3-certbot-apache -y
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email admin@example.com -d jellyfin.example.com

9.2 Для Nginx

Установка Nginx:

sudo apt install nginx -y

Создание конфигурации (HTTP, временно):

sudo tee /etc/nginx/conf.d/jellyfin.conf > /dev/null <<EOF
server {
    listen 80;
    server_name jellyfin.example.com;

    location / {
        proxy_pass http://127.0.0.1:8096;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }

    location /socket {
        proxy_pass http://127.0.0.1:8096/socket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
EOF

sudo nginx -t
sudo systemctl reload nginx

Установка Certbot и получение сертификата:

sudo apt install python3-certbot-nginx -y
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email admin@example.com -d jellyfin.example.com

10. 🔄 Обновление Jellyfin

sudo apt update
sudo apt install --only-upgrade jellyfin -y

11. ⚠️ Решение типичных проблем

11.1 Ошибка: Port 8096 already in use

Симптом: Jellyfin не запускается, порт 8096 занят.

Решение: Найдите процесс, который занимает порт:

sudo ss -tlnp | grep 8096

Остановите конфликтующий процесс или измените порт Jellyfin в /etc/jellyfin/network.xml.

11.2 Jellyfin не видит медиафайлы

Симптом: В WebUI при добавлении библиотеки папка пуста или не отображается.

Причина: Пользователь jellyfin не имеет прав на чтение.

Решение: Исправьте права через setfacl (раздел 5). Проверьте:

sudo -u jellyfin ls /путь/к/медиа

11.3 Ошибка: Jellyfin service not starting

Симптом: systemctl status jellyfin показывает failed.

Диагностика:

sudo journalctl -xeu jellyfin

Решение: Часто помогает сброс конфигурации:

sudo systemctl stop jellyfin
sudo mv /etc/jellyfin/system.xml /etc/jellyfin/system.xml.bak
sudo systemctl start jellyfin

После этого потребуется пройти первоначальную настройку заново.

11.4 Аппаратное транскодинг не работает

Симптом: В настройках Jellyfin не видно опций аппаратного транскодинга.

Решение: Убедитесь, что пользователь jellyfin добавлен в группу render (раздел 5.4) и что драйверы видеокарты установлены.

12. ❌ Удаление Jellyfin

Удаление пакетов

sudo apt remove --purge jellyfin -y
sudo apt autoremove -y

Удаление репозитория

Для extrepo:

sudo extrepo disable jellyfin
sudo rm -f /etc/apt/sources.list.d/extrepo_jellyfin.sources
sudo rm -f /var/lib/extrepo/keys/jellyfin.asc

Для ручного добавления:

sudo rm -f /etc/apt/sources.list.d/jellyfin.sources
sudo rm -f /usr/share/keyrings/jellyfin.gpg
sudo apt update

Удаление данных (опционально)

⚠️ Осторожно: Удаляет всю медиатеку, настройки и кэш.

sudo rm -rf /var/lib/jellyfin /var/cache/jellyfin /var/log/jellyfin

13. 📝 Чек-лист: всё готово к работе

  • [ ] Система обновлена (sudo apt update && sudo apt upgrade -y)
  • [ ] Репозиторий Jellyfin добавлен (через extrepo или вручную)
  • [ ] apt-cache policy jellyfin jellyfin-ffmpeg7 показывает репозиторий
  • [ ] Пакет jellyfin установлен (dpkg-query показывает ii)
  • [ ] systemctl status jellyfin показывает active (running)
  • [ ] Порт 8096 открыт в UFW (если нужен доступ из сети)
  • [ ] Права на медиафайлы настроены (sudo -u jellyfin ls /путь/к/медиа работает)
  • Пользователь jellyfin добавлен в группу render для аппаратного транскодинга
  • [ ] WebUI открывается (http://IP_сервера:8096)
  • [ ] Reverse-прокси с SSL настроен (домен открывается по HTTPS)
  • [ ] Сделана резервная копия перед обновлением

Заключение

Вы установили Jellyfin Media Server на Debian. Это полностью свободная альтернатива Plex без платных подписок и сбора телеметрии. Главное, что нужно запомнить: для доступа к медиафайлам настройте права через setfacl. Если вы хотите доступаться к серверу через домен, сначала настройте reverse-прокси на HTTP, а затем получите сертификат Let’s Encrypt — Certbot сам настроит HTTPS. Перед обновлением всегда делайте резервную копию данных и конфигурации. Для аппаратного транскодинга добавьте пользователя jellyfin в группу render.

Что дальше:

  • Добавьте медиатеки: фильмы, сериалы, музыку, фото
  • Установите приложение Jellyfin на телевизор (Android TV, Apple TV), телефон (iOS, Android) или планшет
  • Настройте аппаратное транскодинг (Intel Quick Sync, NVIDIA NVENC) в панели управления Jellyfin
  • Установите плагины (Subtitles, Open Subtitles, YouTube Metadata)
  • Для дополнительного кэширования и оптимизации настройте Redis

Связанные статьи: