
Представьте: вы открываете приложение на телевизоре или смартфоне и видите свою личную коллекцию фильмов и сериалов — с красивыми постерами, описаниями и автоматически загруженными субтитрами. При этом никто не собирает данные о ваших просмотрах и не просит ежемесячную плату. Звучит как мечта? Это реальность, которую можно создать на старом компьютере или ноутбуке буквально за полчаса.
В этой статье я покажу, как собрать полноценный домашний медиасервер на 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 .
Подготовка: создаём структуру папок
Перед запуском контейнеров нужно организовать хранение данных. Я рекомендую использовать единую корневую папку, чтобы включить хардлинки — это экономит место, так как файл не копируется, а просто ссылается на себя из разных мест .
Создаём структуру:
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 и подставьте их в команду ниже
sudo chown -R 1000:1000 /opt/mediaserver
Внимание!
Если у вас есть внешний жёсткий диск или NAS, примонтируйте его к папке /mnt/media и используйте её вместо /opt/mediaserver/data
Основной файл: docker-compose.yml
Создаём файл docker-compose.yml в папке /opt/mediaserver:
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 на ваш часовой пояс
Запуск одной командой
Всё готово! Переходим в папку с файлом и запускаем:
cd /opt/mediaserver
docker compose up -d
Через минуту все контейнеры будут запущены в фоновом режиме. Проверить статус можно командой:
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
|
Субтитры
|
Порядок настройки:
- Prowlarr — добавьте ваши любимые трекеры.
- Sonarr и Radarr — в настройках укажите:
- Download Client: qBittorrent (хост:
qbittorrent, порт:8080). - Indexers: синхронизируйте с Prowlarr.
- Root Folders: укажите
/tvдля Sonarr и/moviesдля Radarr.
- Download Client: qBittorrent (хост:
- Jellyfin — добавьте библиотеки из папок
/media/moviesи/media/tv. - Bazarr — укажите пути к
/moviesи/tv, включите автоматический поиск субтитров.
Важный момент: хардлинки для экономии места
Чтобы файлы не дублировались (а это критично для больших библиотек), используйте хардлинки. Для этого нужно, чтобы все контейнеры видели одну и ту же структуру папок — именно поэтому мы использовали единый /data .
В настройках Sonarr и Radarr убедитесь, что включена опция:
Внимание!
В настройках Sonarr и Radarr убедитесь, что включена опция:
Settings → Media Management → Advanced Settings → Importing → Use Hardlinks instead of Copy
Что дальше?
Вы получили работающий медиасервер, который сам ищет, скачивает и сортирует контент. А теперь пара идей для развития:
- Добавьте VPN через контейнер Gluetun, чтобы скрыть активность торрент-клиента .
- Установите Jellyseerr — это веб-интерфейс, где вы или ваши друзья можете оставлять заявки на фильмы, а система автоматически добавит их в очередь .
- Настройте удалённый доступ через обратный прокси (например, Nginx или Caddy) .
Теперь у вас есть не просто медиасервер, а целая экосистема, которая работает за вас. Всё бесплатно, приватно и под вашим полным контролем. Приятного просмотра!



