Перейти к основному содержимому
Вернуться в категорию

Установка Jellyfin: Самостоятельно размещаемый медиасервер

Установка Jellyfin через Docker, настройка медиатеки, аппаратное транскодирование, управление пользователями, удалённый доступ, Nginx reverse proxy и клиентские приложения.

Время чтения: 14 мин Самостоятельный хостинг
jellyfinмедиасерверself-hostingdockerстримингтранскодирование

Содержание

Установка Jellyfin: Самостоятельно размещаемый медиасервер

Jellyfin — это бесплатный медиасервер с открытым исходным кодом, позволяющий управлять и транслировать фильмы, сериалы, музыку и фотографии с собственного сервера. В отличие от Plex и Emby, он полностью бесплатен и не требует подписки. Вы можете получить доступ к своим медиафайлам со всех устройств и делиться ими с друзьями.

Что такое Jellyfin?

Jellyfin начинался как форк Emby с открытым исходным кодом и вырос в самостоятельный проект. Ключевые особенности:

  • Полностью бесплатный: Нет подписки или премиум-функций
  • Мультиплатформенный: Web, Android, iOS, Roku, Apple TV, Fire TV
  • Аппаратное транскодирование: Поддержка Intel QSV, NVIDIA NVENC, AMD AMF
  • Живое ТВ: Поддержка DVR и IPTV
  • Несколько пользователей: Совместное использование с семьёй и друзьями
  • Метаданные: Автоматическая загрузка информации о фильмах/сериалах и постеров

Системные требования

  • Сервер с установленными Docker и Docker Compose
  • Минимум 2 ГБ ОЗУ (рекомендуется 4 ГБ)
  • Достаточно места на диске (для медиафайлов)
  • Совместимый GPU для аппаратного транскодирования (опционально)

Установка с Docker

Создание docker-compose.yml

hljs yaml
version: '3.8'

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    user: "1000:1000"
    environment:
      - JELLYFIN_PublishedServerUrl=https://jellyfin.example.com
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /mnt/media/films:/media/films:ro
      - /mnt/media/series:/media/series:ro
      - /mnt/media/music:/media/music:ro
    ports:
      - "127.0.0.1:8096:8096"
    devices:
      - /dev/dri:/dev/dri
hljs bash
# Запустить контейнер
docker compose up -d

# Проверить логи
docker logs jellyfin -f

Монтирование медиадиректорий как :ro (только для чтения) рекомендуется из соображений безопасности.

Структура медиадиректорий

/mnt/media/
├── films/
│   ├── Начало (2010)/
│   │   └── Начало (2010).mkv
│   └── Матрица (1999)/
│       └── Матрица (1999).mp4
├── series/
│   └── Breaking Bad/
│       ├── Season 01/
│       │   ├── S01E01.mkv
│       │   └── S01E02.mkv
│       └── Season 02/
└── music/
    └── Исполнитель/
        └── Альбом/
            └── 01 - Трек.flac

Начальная настройка

После установки перейдите на http://IP_СЕРВЕРА:8096:

  1. Выберите язык
  2. Создайте учётную запись администратора
  3. Добавьте медиатеки:
    • Тип: Фильмы, Сериалы, Музыка, Фото
    • Папка: /media/films, /media/series и т.д.
  4. Выберите язык метаданных
  5. Завершите настройку

Аппаратное транскодирование

Intel Quick Sync (QSV)

hljs yaml
services:
  jellyfin:
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - "109"
hljs bash
# Проверить наличие Intel GPU
ls /dev/dri
# Вывод: card0  renderD128

# Получить ID группы render
stat -c '%g' /dev/dri/renderD128

Активация в Jellyfin:

Панель управления → Воспроизведение → Транскодирование
→ Аппаратное ускорение: Intel QuickSync (QSV)
→ Включить: H.264, H.265, VP9

NVIDIA GPU

hljs yaml
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=all
hljs bash
# Установить NVIDIA Container Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  tee /etc/apt/sources.list.d/nvidia-docker.list
apt update && apt install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker

Управление пользователями

Создание пользователей

Панель управления → Пользователи → Новый пользователь
- Имя пользователя и пароль
- Права доступа к библиотекам
- Родительский контроль (возрастной рейтинг)
- Разрешение удалённого доступа

Удалённый доступ и Nginx Proxy

Конфигурация Nginx

hljs nginx
server {
    listen 80;
    server_name jellyfin.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name jellyfin.example.com;

    ssl_certificate /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jellyfin.example.com/privkey.pem;

    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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_buffering off;
        proxy_read_timeout 3600;
    }
}

Клиентские приложения

  • Web: https://jellyfin.example.com
  • Android: Jellyfin из Google Play
  • iOS: Jellyfin из App Store
  • Kodi: Плагин Jellyfin для Kodi
  • Roku: Канал Jellyfin
  • Apple TV: Приложение tvOS

Резервное копирование

hljs bash
# Резервное копирование конфигурации Jellyfin
tar -czf jellyfin-config-$(date +%Y%m%d).tar.gz ./config/

# Автоматическое резервное копирование
cat > /etc/cron.weekly/jellyfin-backup << 'EOF'
#!/bin/bash
tar -czf /backups/jellyfin-$(date +%Y%m%d).tar.gz /opt/jellyfin/config/
find /backups -name "jellyfin-*.tar.gz" -mtime +60 -delete
EOF
chmod +x /etc/cron.weekly/jellyfin-backup

Вы можете использовать аппаратное транскодирование на выделенных серверах REXE. Наши серверы с GPU Intel или NVIDIA идеально подходят для контента 4K.