Как собрать домашний медиасервер на : Jellyfin, Sonarr и Radarr за 30 минут
2

Как собрать домашний медиасервер на : Jellyfin, Sonarr и Radarr за 30 минут

Автор: admin

Представьте: вы открываете приложение на телевизоре или смартфоне и видите свою личную коллекцию фильмов и сериалов — с красивыми постерами, описаниями и автоматически загруженными субтитрами. При этом никто не собирает данные о ваших просмотрах и не просит ежемесячную плату. Звучит как мечта? Это реальность, которую можно создать на старом компьютере или ноутбуке буквально за полчаса.

В этой статье я покажу, как собрать полноценный домашний медиасервер на Docker с использованием Jellyfin, Sonarr и Radarr. Это продолжение нашего цикла о самохосте — после замены Google Диска на Nextcloud логично сделать собственный аналог Netflix

Что входит в нашу сборку

Мы создадим систему из нескольких сервисов, которые работают вместе:

  • Jellyfin — бесплатный и открытый медиасервер для стриминга фильмов, сериалов и музыки на любые устройства. Полная альтернатива Plex и Emby .
  • Sonarr — автоматически отслеживает выход новых серий и загружает их .
  • Radarr — делает то же самое, но для фильмов .
  • Prowlarr — единый менеджер индексеров (источников для поиска) для Sonarr и Radarr .
  • qBittorrent — торрент-клиент с веб-интерфейсом .
  • Bazarr — автоматически скачивает субтитры к вашей медиатеке .

Всё это работает в отдельных контейнерах Docker, которые изолированы друг от друга, но при этом общаются через общую сеть. Это значит, что обновление одного сервиса не сломает остальные .

Почему Docker — идеальное решение

Установка каждого из этих приложений вручную — это десятки шагов и масса времени. Docker превращает всё в один файл docker-compose.yml, и вся система поднимается одной командой.

Кроме того, контейнеры легко обновлять, перемещать на другой сервер и откатывать в случае проблем. Всё, что нужно — это Docker и Docker Compose .

Подготовка: создаём структуру папок

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

Создаём структуру:

bash
mkdir -p /opt/mediaserver/data/{downloads,movies,tv}
mkdir -p /opt/mediaserver/config/{jellyfin,sonarr,radarr,prowlarr,qbittorrent,bazarr}

Внимание!

Что здесь важно:

/opt/mediaserver/data/downloads — папка для загрузок qBittorrent.

/opt/mediaserver/data/movies — конечное хранилище фильмов для Radarr и Jellyfin.

/opt/mediaserver/data/tv — конечное хранилище сериалов для Sonarr и Jellyfin.

/opt/mediaserver/config/* — конфигурационные файлы каждого сервиса.

Назначаем правильные права. Узнайте ваш UID и GID командой id и подставьте их в команду ниже

bash
sudo chown -R 1000:1000 /opt/mediaserver

Внимание!

Если у вас есть внешний жёсткий диск или NAS, примонтируйте его к папке /mnt/media и используйте её вместо /opt/mediaserver/data

Основной файл: docker-compose.yml
Создаём файл docker-compose.yml в папке /opt/mediaserver:

yaml
version: '3.8'

networks:
  media_network:
    driver: bridge

services:
  # === Медиасервер ===
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    user: "1000:1000"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./config/jellyfin:/config
      - ./config/jellyfin/cache:/cache
      - ./data/movies:/media/movies:ro
      - ./data/tv:/media/tv:ro
    ports:
      - "8096:8096"
    networks:
      - media_network

  # === Управление сериалами ===
  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
    volumes:
      - ./config/sonarr:/config
      - ./data/tv:/tv
      - ./data/downloads:/downloads
    ports:
      - "8989:8989"
    networks:
      - media_network

  # === Управление фильмами ===
  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
    volumes:
      - ./config/radarr:/config
      - ./data/movies:/movies
      - ./data/downloads:/downloads
    ports:
      - "7878:7878"
    networks:
      - media_network

  # === Менеджер индексеров ===
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
    volumes:
      - ./config/prowlarr:/config
    ports:
      - "9696:9696"
    networks:
      - media_network

  # === Торрент-клиент ===
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
      - WEBUI_PORT=8080
    volumes:
      - ./config/qbittorrent:/config
      - ./data/downloads:/downloads
    ports:
      - "8080:8080"
      - "6881:6881"
      - "6881:6881/udp"
    networks:
      - media_network

  # === Субтитры ===
  bazarr:
    image: lscr.io/linuxserver/bazarr:latest
    container_name: bazarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
    volumes:
      - ./config/bazarr:/config
      - ./data/movies:/movies
      - ./data/tv:/tv
    ports:
      - "6767:6767"
    networks:
      - media_network

Внимание!

Замените 1000:1000 на ваш реальный UID:GID. Замените Europe/Moscow на ваш часовой пояс

Запуск одной командой

Всё готово! Переходим в папку с файлом и запускаем:

bash
cd /opt/mediaserver
docker compose up -d

Через минуту все контейнеры будут запущены в фоновом режиме. Проверить статус можно командой:

bash
docker compose ps

Первичная настройка: связываем всё вместе

Контейнеры запущены, но им нужно «познакомиться» друг с другом. Зайдите в веб-интерфейсы:

Сервис
URL
Назначение
Jellyfin
http://ваш-ip:8096
Стриминг 
Sonarr
http://ваш-ip:8989
Сериалы 
Radarr
http://ваш-ip:7878
Фильмы 
Prowlarr
http://ваш-ip:9696
Индексаторы 
qBittorrent
http://ваш-ip:8080
Загрузки 
Bazarr
http://ваш-ip:6767
Субтитры

Порядок настройки:

  1. Prowlarr — добавьте ваши любимые трекеры.
  2. Sonarr и Radarr — в настройках укажите:
    • Download Client: qBittorrent (хост: qbittorrent, порт: 8080).
    • Indexers: синхронизируйте с Prowlarr.
    • Root Folders: укажите /tv для Sonarr и /movies для Radarr.
  1. Jellyfin — добавьте библиотеки из папок /media/movies и /media/tv.
  2. Bazarr — укажите пути к /movies и /tv, включите автоматический поиск субтитров.

Важный момент: хардлинки для экономии места

Чтобы файлы не дублировались (а это критично для больших библиотек), используйте хардлинки. Для этого нужно, чтобы все контейнеры видели одну и ту же структуру папок — именно поэтому мы использовали единый /data .

В настройках Sonarr и Radarr убедитесь, что включена опция:

Внимание!

В настройках Sonarr и Radarr убедитесь, что включена опция:

Settings → Media Management → Advanced Settings → Importing → Use Hardlinks instead of Copy

Что дальше?

Вы получили работающий медиасервер, который сам ищет, скачивает и сортирует контент. А теперь пара идей для развития:

  • Добавьте VPN через контейнер Gluetun, чтобы скрыть активность торрент-клиента .
  • Установите Jellyseerr — это веб-интерфейс, где вы или ваши друзья можете оставлять заявки на фильмы, а система автоматически добавит их в очередь .
  • Настройте удалённый доступ через обратный прокси (например, Nginx или Caddy) .

Теперь у вас есть не просто медиасервер, а целая экосистема, которая работает за вас. Всё бесплатно, приватно и под вашим полным контролем. Приятного просмотра!