Как организовать медиасервер дома

Несколько лет назад я купил себе сетевое хранилище Synology чтобы не скачивать фильмы и сериалы на компьютер, а чтобы было устройство, которое работает круглосуточно и всё скачивает в фоне. Стало очень удобно.
Но процесс все равно был ручной: я искал торрент на разных сайтах, скачивал через Download Station на Synology NAS, потом открывал Infuse на Apple TV и смотрел. Работало, но каждый раз нужно было лезть на трекеры, разбираться с качеством релизов, ждать пока скачается, переименовывать файлы.
В какой-то момент увидел пост человека, который настроил себе полную автоматизацию: заходишь в приложение, ищешь фильм, жмёшь одну кнопку — и через несколько минут смотришь. Захотел так же.
Расскажу как это работает и как повторить у себя.
Что понадобится
Можно собрать это и на компьютере, но мне удобнее с NAS.
- Synology DS224+, докупил модуль памяти на 4ГБ.
- Apple TV 4K
- Приложение Infuse на Apple TV (на Windows можно использовать Plex или Jellyfin)
- Подписка Real-Debrid — 16 евро каждые полгода
- Комплект сервисов, которые надо поднимать через Docker
Архитектура решения
Вот как это всё работает вместе:
Jellyseerr — интерфейс для поиска фильмов и сериалов, похож на экран Netflix.
Radarr — менеджер фильмов. Получает запрос из Jellyseerr, находит релиз, отправляет на скачивание, переименовывает файл, кладёт куда нужно.
Sonarr — то же самое, но для сериалов. Дополнительно следит за выходом новых серий.
Prowlarr — централизованный каталог индексаторов (источников откуда брать торренты). Настраивается один раз, он пробрасывает настройки в Radarr и Sonarr.
RDT-Client — мост между *arr-сервисами и Real-Debrid. Прикидывается обычным торрент-клиентом qBittorrent для Radarr/Sonarr, но на самом деле отдаёт задания в Real-Debrid.
Real-Debrid — сервис, которые кэширует торренты и отдаёт их по прямым HTTPS-ссылкам. С ним загрузка идёт быстрее, торренты качаются не с пиров, а с серверов RD.
Infuse на Apple TV — собственно плеер. Сканирует папки на Synology по SMB, показывает красивую библиотеку, воспроизводит с нативным качеством и HDR.
Подготовка Synology
Структура папок
Всё хранится на одном из томов сетевого хранилища. Через File Station создал структуру:
/volume2/6TB/media/
├── movies/ # сюда будут попадать фильмы
├── tv/ # сериалы
├── downloads/ # транзитная зона для скачивания
└── docker/ # конфиги всех сервисов
Важно: все эти папки должны быть на одном томе — иначе не будут работать hardlink'и, и файлы будут копироваться вместо мгновенного переноса.
Container Manager
В Package Center установил Container Manager — это официальная оболочка Synology для Docker. Через неё и будем поднимать все сервисы.
Infuse
В Infuse на Apple TV добавил два источника по SMB, указав на папки movies и tv. Infuse сразу начал их сканировать.
Поднимаем стек через docker-compose
Подключился к Synology по SSH и в папке /volume2/6TB/media/docker создал файл docker-compose.yml:
version: "3.8"
services:
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1026 # узнать свои можно командой `id`
- PGID=100
- TZ=Asia/Almaty
volumes:
- /volume2/6TB/media/docker/prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Almaty
volumes:
- /volume2/6TB/media/docker/radarr:/config
- /volume2/6TB/media/movies:/movies
- /volume2/6TB/media/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Almaty
volumes:
- /volume2/6TB/media/docker/sonarr:/config
- /volume2/6TB/media/tv:/tv
- /volume2/6TB/media/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Almaty
volumes:
- /volume2/6TB/media/docker/bazarr:/config
- /volume2/6TB/media/movies:/movies
- /volume2/6TB/media/tv:/tv
ports:
- 6767:6767
restart: unless-stopped
rdtclient:
image: rogerfar/rdtclient:latest
container_name: rdtclient
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Almaty
volumes:
- /volume2/6TB/media/docker/rdtclient:/data/db
- /volume2/6TB/media/downloads:/data/downloads
ports:
- 6500:6500
restart: unless-stopped
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=info
- TZ=Asia/Almaty
volumes:
- /volume2/6TB/media/docker/jellyseerr:/app/config
ports:
- 5055:5055
restart: unless-stopped
PUID и PGID — это id твоего пользователя на Synology. Узнать можно командой id в SSH. У меня было 1026 и 100.
Поставил правильные права на папки:
sudo chown -R 1026:100 /volume2/6TB/media
И запустил всё одной командой:
sudo docker compose up -d
Docker скачал все образы (минут 10 на хорошем интернете) и запустил контейнеры. Проверил что всё живое:
sudo docker ps
Шесть контейнеров со статусом Up. Двигаемся дальше.
Настройка по порядку
Порядок важен, потому что сервисы зависят друг от друга. Начинаем от фундамента и идём наверх.
RDT-Client (мост к Real-Debrid)
Открыл http://192.168.31.123:6500 (мой IP Synology).
Придумал логин/пароль для RDT-Client при первом входе. Потом в Settings:
- Provider: RealDebrid, вставил API-токен (взял на https://real-debrid.com/apitoken)
- Download Client: Bezzad Downloader (это встроенный загрузчик, самый простой)
- Download path:
/data/downloads - Mapped path:
/downloads(это важно — именно этот путь увидит Radarr)
Проверил работу: добавил тестовый магнет-линк → через минуту файл появился в /volume2/6TB/media/downloads/complete/. Значит связка Synology → RD работает.
Prowlarr (индексаторы)
Открыл http://192.168.31.123:9696.
Настроил аутентификацию (Forms, придумал логин/пароль).
Важно: Torrentio и другие RD-совместимые индексаторы не встроены в Prowlarr — их нужно добавить как кастомные определения. Через SSH скачал YAML-файлы:
cd /volume2/6TB/media/docker/prowlarr
sudo mkdir -p Definitions/Custom
cd Definitions/Custom
sudo wget https://raw.githubusercontent.com/dreulavelle/Prowlarr-Indexers/main/Custom/torrentio.yml
sudo chown 1026:100 torrentio.yml
sudo docker restart prowlarr
После перезапуска в Prowlarr → Indexers → Add Indexer появился Torrentio. Добавил его:
- Base URL:
https://torrentio.strem.fun/ - Debrid provider: Real-Debrid
- Debrid provider API Key: тот же токен RD
- Test → Save
Потом скопировал API-ключ Prowlarr (Settings → General → Security → API Key) — он понадобится дальше.
Radarr (фильмы)
http://192.168.31.123:7878
Настроил аутентификацию.
Подключил RDT-Client (Settings → Download Clients → Add → qBittorrent):
- Host:
rdtclient - Port:
6500 - Username/Password: от RDT-Client
- Category:
radarr
Настроил медиа-папку (Settings → Media Management):
- Root Folder:
/movies - Use Hardlinks instead of Copy: включил
- Rename Movies: включил
Создал профиль качества (Settings → Profiles → Add) под именем 1080p + 4K:
Отметил: WEB 1080p, Bluray-1080p, Remux-1080p, WEB 2160p, Bluray-2160p, Remux-2160p.
Важный нюанс: в Radarr чем выше качество в списке, тем оно приоритетнее. Перетащил 2160p наверх, 1080p вниз — теперь 4K предпочитается всегда если доступен.
Upgrade Until поставил на Remux-2160p — максимум.
Скопировал API-ключ Radarr.
Связал с Prowlarr: вернулся в Prowlarr → Settings → Apps → Add → Radarr:
- Server:
http://radarr:7878 - API Key: Radarr API Key
Test → Save. Prowlarr автоматически пробросил индексаторы в Radarr.
Sonarr (сериалы)
http://192.168.31.123:8989
Настроил всё один в один как в Radarr:
- Download Client: RDT-Client, категория
sonarr - Root Folder:
/tv - Профиль качества с тем же приоритетом 4K над 1080p
- Связал с Prowlarr
Дополнительно включил (Settings → Media Management):
- Unmonitor Deleted Episodes — если я удалю серию, Sonarr не будет пытаться её перекачать
Jellyseerr (интерфейс запросов)
http://192.168.31.123:5055
Тут есть нюанс: Jellyseerr в новых версиях требует подключения к медиасерверу (Jellyfin или Plex) для первоначальной настройки. У меня ни того, ни другого нет — я использую Infuse.
Поэтому временно поднял Jellyfin отдельной командой, прошёл мастер настройки, создал локальный аккаунт в Jellyseerr, потом Jellyfin удалил.
# Временный Jellyfin
sudo docker run -d --name jellyfin -p 8096:8096 lscr.io/linuxserver/jellyfin:latest
# ...проходишь мастер Jellyseerr, подключая локальный Jellyfin (admin/admin123)...
# Удаляешь Jellyfin когда закончил
sudo docker stop jellyfin && sudo docker rm jellyfin
В самом Jellyseerr:
- Подключил Radarr (hostname
radarr, port7878, API Key) - Подключил Sonarr (hostname
sonarr, port8989, API Key) - Для обоих указал Quality Profile
1080p + 4Kи корневые папки
Создал локального пользователя в Settings → Users → Add Local User.
В Settings → Users выключил Enable Jellyfin Sign-In и Enable New Jellyfin Sign-In, оставил только Enable Local Sign-In.
При входе через локальный аккаунт нужно использовать email, а не username.
Как это работает
Открываю Jellyseer с телефона, выбираю фильм или сериал, нажимаю Request — всё автоматически скачивается и появляется в Infuse на Apple TV. Новые эпизоды сериалов ещё и автоматически загружаются по мере выхода.
А если хочу посмотреть не дома, то отправляю магнитную ссылку напрямую в Real-Debrid, в Infuse у меня есть отдельная папка для этого, которая через WebDAV тянет контент, ничего не скачивая на устройство.