С чего всё началось

С момента как появился домашний сервер было желание сделать нормальный медиа сервер — чтобы по красоте смотреть фильмы и сериалы в 4K, без костылей.

Начиналось всё просто: сам искал фильм на rutracker, закидывал в qBittorrent, а папка загрузок была расшарена с клиентом. Клиентом сначала был Kodi — не устроил ни вид, ни функционал. Поставил Plex — уже приятнее, но часть функций платная, что крайне не устраивало.

В итоге перешёл на Jellyfin и он мне понравился. Но проблема осталась та же: часть метаданных и обложек не подгружалась, а самому всё равно приходилось искать фильм и вручную кидать его в qBittorrent, выбирая категорию указывающую куда положить файл.

Хотелось, чтобы в одном приложении искал фильм, нажимал «скачать» — и дальше само: разложилось на фильмы и сериалы, подтянулись метаданные, обложки, всё как положено.

Цель

Свести получение любого фильма или сериала к одному действию: нашёл → нажал «скачать» → посмотрел. Всё остальное — поиск релиза, скачивание, проверка качества и языка дорожки, переименование файла, раскладка по нужным папкам библиотеки — должно происходить где‑то фоново, без меня. Отдельно не хотелось терять качество выбора. Раньше при ручном поиске я сам сравнивал раздачи по качеству, сидам, дорожкам.

Что получилось на выходе

Ключевой результат — из Jellyfin теперь вообще не нужно выходить. Плагин Jellyfin‑Enhanced встраивает поиск и запрос через Seerr прямо в интерфейс Jellyfin: ищу фильм, жму «скачать» — не переключаясь на отдельную вкладку или приложение. А дальше система сама находит релиз на трекере, проверяет его по метаданным, скачивает, переименовывает и кладёт в правильную папку. Через некоторое время фильм уже находится в библиотеке Jellyfin с обложкой и описанием, готовый к просмотру. Ну просто песня, то, что и хотел.

Пример карточки
Пример карточки

Отступление

Готового решения «поставил — и работает» под такой результат я не нашёл. Когда собирал всю эту связку, мягко говоря не был в восторге от того, сколько отдельных инструментов пришлось ставить на каждый чих. Radarr отвечает только за фильмы, Sonarr — только за сериалы, Prowlarr — только за подключение к торрент‑трекерам, Seerr — за поиск поверх всего перечисленного. Чтож так сложно жить‑то, почему до сих пор никто не собрал это всё в один готовый контейнер — вопрос открытый.

Архитектура

  • Jellyfin — единственная точка входа глазами пользователя. Через плагин Jellyfin‑Enhanced — поиск и запрос (проксируется в Seerr), плюс просмотр готовых файлов из /movies и /tv.

  • Seerr — поиск (TMDB) и маршрутизации запроса — кому передать, Radarr или Sonarr — и проверки, что уже есть в библиотеке. Интерфейс к нему теперь встроен в Jellyfin через плагин, отдельно как вкладку не открываю.

  • Radarr — весь жизненный цикл фильма: запрос → поиск релиза через индексер → скачивание → сверка по метаданным → переименование → hardlink в /movies. Следит за апгрейдом качества.

  • Sonarr — то же самое для сериалов, плюс отслеживание выхода новых серий по сезонам (нумерация S01E05, докачка пропущенного).

  • Prowlarr — держит подключение к индексеру (например к rutracker) и раздаёт его в Radarr и Sonarr одной настройкой.

  • qBittorrent — просто качает файл в папку своей категории.

docker‑compose.yaml
networks:
  home-network:
    driver: bridge
    external: true

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - PUID=1000
      - PGID=1000
      - WEBUI_PORT=8080
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./qbittorrent/config:/config
      - /mnt/media:/data
    networks:
      - home-network

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    restart: unless-stopped
    ports:
      - "7878:7878"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./radarr/config:/config
      - /mnt/media:/data
    networks:
      - home-network

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    restart: unless-stopped
    ports:
      - "8989:8989"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./sonarr/config:/config
      - /mnt/media:/data
    networks:
      - home-network

  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    restart: unless-stopped
    ports:
      - "9696:9696"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./prowlarr/config:/config
    networks:
      - home-network

  seerr:
    image: ghcr.io/seerr-team/seerr:latest
    init: true
    container_name: seerr
    restart: unless-stopped
    ports:
      - "5055:5055"
    environment:
      - TZ=Europe/Moscow
      - LOG_LEVEL=info
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./jellyseerr/config:/app/config
    networks:
      - home-network

  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /mnt/media/movies:/movies
      - /mnt/media/tv:/tv
    restart: unless-stopped
    network_mode: host
    environment:
      - JELLYFIN_PublishedServerUrl=http://192.168.0.2:8096
    devices:
      - /dev/dri:/dev/dri

В ходе экспериментов возможно что‑то уже упустил или забыл убрать из docker‑compose.yaml, но это текущий мой рабочий конфиг.

Из ключевого там это единый путь /data во всех контейнерах. qbittorrent, radarr и sonarr монтируют /mnt/media под одним и тем же путём. Это обязательное условие для того, чтобы Radarr/Sonarr переносили готовый файл через hardlink, а не через полное копирование — мгновенно и без расхода места на диске дважды.

Настройка Radarr

  1. Settings → Media Management → Root Folders → /data/movies

  2. Settings → Media Management → Importing → Use Hardlinks instead of Copy

  3. Settings → Download Clients → Add → qBittorrent: Host: qbittorrent (имя контейнера — оба в одной сети home-network, резолвится по имени), Port: 8080, Username/Password: логин‑пароль от WebUI, Category: radarr

  4. Settings → Connect → Jellyfin (URL http://jellyfin:8096 + API‑ключ) — чтобы библиотека обновлялась сразу после импорта.

Настройка Sonarr

То же самое: Root Folder /data/tv, категория sonarr, Use Hardlinks, Connect → Jellyfin.

Настройка Prowlarr

  1. Indexers → Add Indexer → RuTracker.org → логин/пароль от аккаунта.

  2. Settings → Apps → Add Application:

    • Radarr: Prowlarr Server http://prowlarr:9696, Radarr Server http://radarr:7878, API Key из Radarr, Sync Level: Full Sync

    • Sonarr: аналогично, http://sonarr:8989 После этого rutracker сам появляется в индексерах у Radarr и Sonarr — прописывать его там второй раз не нужно.

Настройка Seerr

  1. Settings → Services → Jellyfin (URL, логин), Radarr (URL + API Key), Sonarr (URL + API Key)

  2. Settings → General → регион/язык ru-RU — тайтлы и описания на русском (данные из TMDB)

  3. Раз сервер личный — включил автоодобрение заявок: Request сразу уходит в работу, без второго подтверждения

Настройка Jellyfin

Чтобы вся связка заработала как нужно, необходимо поставить плагин Jellyfin‑Enhanced. Инструкция по установке простая, просто в Jellyfin добавляем репозиторий, устанавливаем плагин и перезагружаем сервис. После этого в настройках в меню у нас появится пункт «Jellyfin Enhanced.»

Переходим в данный раздел, открываем Seerr и настраиваем по инструкции.

На этом настройка закончена. Перезагружаем Jellyfin, обновляем страницу, пишем поиске название и нажимаем «Запрос» (скачать) и все.

Грабли по пути

В Seerr ничего не загружалось, страницы фильмов и сериалов, в Jellyfin не подтягивались метаданные. Спустя время была найдена причина — не было доступа до themoviedb. У меня стоит AdGuard поэтому я там в настройках DNS, в Upstream DNS servers переопределил днс добавив пару строк которые и решили проблему:

[/themoviedb.org/]9.9.9.9   
[/tmdb.org/]9.9.9.9

Плагины которые поставил

jellyfin‑editors‑choice‑plugin — Полноразмерный слайдер на главной странице с подборкой контента, как на Netflix. Источник подборки — избранное конкретного пользователя или случайная выборка с фильтром по рейтингу.

Jellyfin‑Enhanced — помимо интеграции с Seerr это также популярный UX‑плагин: горячие клавиши, кастомизация субтитров, кастомизация карточки фильма, отзывы с TMDB.

intro‑skipper — по аудио‑отпечатку определяет заставку/титры и даёт кнопку «Пропустить» как в Netflix. Работает по всей библиотеке автоматически, разового сканирования достаточно.

jellyfin‑icon‑metadata — заменяет текстовые ссылки на источники метаданных (IMDb, TMDb, TheTVDB и так далее) на иконки на странице фильма/сериала.

Будущие цели

Вроде бы получил все что хотел, но порой хочется просто выбрать какой‑то рандомный фильм, а не конкретный. В Seerr для этого есть раздел фильмы/сериалы/найти что‑то новое с подборками по рекомендациям, студиям и тд. Вот этого не хватаетв в Jellyfin для полной автономности. Есть плагин SeerrFin но там пока что только просто лента фильмов/сериалов, без возможности искать рекомендации, по жанрам, студиям.

Комментарии (27)


  1. Barnaby
    26.07.2026 19:03

    Для Emby как я понимаю такого нет? У Jellyfin убогий плеер :)

    И зачем нужен Seerr если у сонара и радара есть свои системы поиска?


    1. idimus
      26.07.2026 19:03

      Плотно сижу на эмби. Реальная единственная проблема - это аниме. Потому что метаданные самого файла названы черт знает как, и эмби на таком тупит. С кино и сериалами 0 проблем.


      1. Mihrutkin
        26.07.2026 19:03

        У emby лучшая реализация аудио. Имею apple music с flac на минималках


    1. yzen_dev Автор
      26.07.2026 19:03

      Emby до этого не видел. Бегло посмотрел, там ряд функций все же платные, не увидел подборок и рекомендаций как Seerr. Но спасибо, поставлю, пощупаю его.

      По второму вопросу. Да, У Sonarr и Radarr есть свой неплохой поиск. Но опять же, это история с тем что хочу найти фильми иду в один сервис, хочу найти сериал - в другое. Seerr же это дело агрегирует, есть подборки по жанрам и студиям. Т.е. когда не знаешь что посмотреть, можно просто открыть, посмотреть рекомендации и сразу скачать.


  1. OFrol
    26.07.2026 19:03

    Если ещё не пробовали и есть устройство с Android / Google TV, то очень советую попробовать NUM (https://4pda.to/forum/index.php?showtopic=959756) - это совсем другой уровень удобства, которой сопоставим с "обычными" онлайн кинотеатрами: изучаешь ленту новых релизов, выбираешь понравившееся и прямо сейчас смотришь. Без ожидания скачивания, без всей этой ненужной возни - оно просто работает само.

    У меня тоже раньше для этого был сервер с торрентами и такой-то матерью, с которого я через TV Box смотрел фильмы на проекторе.

    Потом мне друг посоветовал NUM, я его поставил на тот самый TV Box и мой шаблон просмотра фильмов полностью поменялся: я больше не выбираю фильмы заранее, не веду каталог, не скачиваю и не удаляю это всё потом. Я сажусь на диван, не представляя что буду смотреть, выбираю среди свежего какой-то фильм и смотрю


    1. Turinvrn
      26.07.2026 19:03

      Без ожидания скачивания, без всей этой ненужной возни

      Без этой "ненужной" возни вы бы не смогли включить и смотреть понравившееся прямо сейчас. Если никто не будет скачивать и держать у себя каталоги всего этого - вам не у кого будет ничего скачивать для просмотра.


      1. OFrol
        26.07.2026 19:03

        Эта возня не нужна для просмотра фильма или сериала, поэтому я и назвал её ненужной.

        А в целом я в сами согласен, даже специально ставил TorrServe отдельно на тот самый, ставший ненужным, медиасервер в надежде на то, что TorrServe будет оставаться на раздаче хотя бы той части, которая попадает в кеш. Но, к сожалению, либо это не работает by-design, либо у меня руки кривые. Если кто подскажет как это решить - буду благодарен


        1. event1
          26.07.2026 19:03

          Раньше не работало, теперь работает. Более того, когда авторы примут один PR можно будет отдать torrserver'у диск и он там сам будет разбираться.


          1. OFrol
            26.07.2026 19:03

            О, шикарно. Значит пришло время попробовать ещё раз. Спасибо!


          1. OFrol
            26.07.2026 19:03

            Попробовал снова - результат как и был раньше: раздача идёт только непосредственно во время скачивания кеша. Раздача прекращается как только кеш заполняется.
            А можете, пожалуйста, скинуть ссылку на PR? Среди открытых ничего похожего не нашёл


            1. event1
              26.07.2026 19:03

              https://github.com/YouROK/TorrServer/pull/636

              У меня работает с кэшем на диске


      1. Morgenshtern
        26.07.2026 19:03

        В лампе через торсерв подключаешься к торренту на своём компе в сети (либо ссдшник в телек воткнуть) при старте просмотра выбираешь закачку с сохранением файла на диск. В итоге сам смотришь фильм как обычно мгновенно, однако параллельно раздаёшь и потом файл остаётся на раздаче висеть.


    1. Nsmaslov
      26.07.2026 19:03

      А теперь так же легко и непринуждённо попробуйте посмотреть какой-нибудь старый фильм, который раздают полтора землекопа и строго по часам...


      1. OFrol
        26.07.2026 19:03

        К сожалению или к счастью я такие фильмы не смотрю. Как правило, даже на старых (но популярных) фильмах всегда есть достаточное количество сидов


    1. Mihrutkin
      26.07.2026 19:03

      Есть куда лучше Lampa


  1. KorP
    26.07.2026 19:03

    В Seerr ничего не загружалось

    Вот почему, сам столкнулся с этим некоторое время на Infuse.

    К проекту осталось прикрутить TorrentMonitor для сериалов


    1. Apokalepsis
      26.07.2026 19:03

      А чем он лучше Sonarr?


      1. KorP
        26.07.2026 19:03

        Он не лучше, он работает в связке. Sonarr не умеет отслеживать обновление тем на русскоязычных трекерах (когда сериал обновляется путаем обновления темы). Sonarr находит и берёт релиз, а TorrentMonitor автоматически ставит соответствующую тему трекера на мониторинг и дальше сам скачивает обновления раздачи.


        1. Apokalepsis
          26.07.2026 19:03

          Спасибо. Поставлю себе. Я еще понять не мог, че мне постоянно руками надо доставлять.

          Хочется конечно одно приложение для всего это, а не комбайн из сервисов.


  1. alex_Cl
    26.07.2026 19:03

    А чем lampac на виртуалке плох, все в одном флаконе? Даже скачивать медиа-контент не нужно. Смотреть или через браузер или через приложение lampa.


  1. kujoro
    26.07.2026 19:03

    /qbittorrent:latest я бы вместо этого посоветовал бы /qbittorrent:libtor

    у первой версии какие-то утечки бывают, у меня после пары дней проц ел 25% и оперативки под 2 гига сжирал, на второй версии у меня сейчас 20 файлов в раздаче висит, 20 мегабайт ест,иногда до 200 доходит,а процессор 2%


  1. Neprostak
    26.07.2026 19:03

    Лампу или лампак. Туда плагин для закачки торрентов. Ну и паллернуть плагином для jellyfin. Или смотреть напрямую через jellyfin!


  1. FMW14
    26.07.2026 19:03

    Если хочется нормальный 4к, то надо качать бд ремуксы по 80-100гб на приватных трекерах, а это придется все равно делать руками.


  1. v_NoName
    26.07.2026 19:03

    Есть смысл в sonarr ставить что-то на отслеживание учитывая то, что он толком ничего не находит? В большинстве случаев использую interactive search, а после этого еще частенько и manual import? По совету из комментария выше настроил TorrentMonitor, посмотрим как будет работать.

    По поводу Jellyfin-Enhanced. Я так понял через него только конкретный фильм по названию можно искать? Чего-то типо подборок, как в seer, у него нет? С телевизора наверное не оч удобно будет искать


    1. Barnaby
      26.07.2026 19:03

      Это проблемы русскоязычных трекеров? На английском все сам находит и скачивает.


  1. zoc
    26.07.2026 19:03

    А как решили проблему с фильмами только на русском? Я так и не смог побороть ее, так и как tmdb отдает названия все равно в транслите, а потом по ним radarr не может ничего найти. То же самое и с сериалами


  1. khele
    26.07.2026 19:03

    у меня в этом стеке ещё крутится контейнер с наивом (любым другим трёхбуквенным/прокси) для доступа к закрытым трекерам

    прокси настраивается в UI для *arr-стека