Files
infra/stacks/rpi-media/docker-compose.yml
T
gilfanovrandClaude Opus 5.5 08aa787b95 rpi: медиацентр (Jellyfin, Seerr, qBittorrent, *arr) в Docker; диск роутера и резерв DHCP
- stacks/rpi-media: docker-compose и идемпотентный provision.py
- servers/rpi.md: раздел «Медиацентр», почему NTFS и SFTP на роутере,
  закрыт хвост про резерв адреса
- AGENTS.md: роль малины

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:12:31 +03:00

113 lines
3.2 KiB
YAML

# Медиацентр на rpi. Разворачивается в /opt/media (docker compose up -d).
# Подробности и грабли — servers/rpi.md → «Медиацентр».
#
# Все *arr и qBittorrent видят один и тот же корень /data (= /mnt/backup/media),
# иначе импорт из torrents/ в library/ превращается в копирование вместо хардлинка
# и раздача занимает место дважды.
x-common: &common
restart: unless-stopped
environment: &env
PUID: "1000"
PGID: "1000"
TZ: Europe/Moscow
UMASK: "002"
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
# host-сеть: иначе LG/iOS не находят сервер автообнаружением (UDP 7359 и DLNA-мультикаст
# не проходят через docker-бридж)
network_mode: host
user: "1000:1000"
restart: unless-stopped
environment:
TZ: Europe/Moscow
JELLYFIN_PublishedServerUrl: http://192.168.10.25:8096
volumes:
- ./config/jellyfin:/config
# кэш и транскоды — на HDD, а не на SD
- /mnt/backup/media/.cache/jellyfin:/cache
- /mnt/backup/media/library:/data/library:ro
qbittorrent:
<<: *common
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
<<: *env
WEBUI_PORT: "8080"
TORRENTING_PORT: "6881"
volumes:
- ./config/qbittorrent:/config
- /mnt/backup/media:/data
ports:
- "8080:8080"
- "6881:6881"
- "6881:6881/udp"
prowlarr:
<<: *common
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
volumes:
- ./config/prowlarr:/config
ports:
- "9696:9696"
flaresolverr:
# нужен Prowlarr для трекеров за Cloudflare (часть публичных)
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
restart: unless-stopped
environment:
TZ: Europe/Moscow
LOG_LEVEL: info
ports:
- "8191:8191"
sonarr:
<<: *common
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
volumes:
- ./config/sonarr:/config
- /mnt/backup/media:/data
ports:
- "8989:8989"
radarr:
<<: *common
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
volumes:
- ./config/radarr:/config
- /mnt/backup/media:/data
ports:
- "7878:7878"
bazarr:
<<: *common
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
volumes:
- ./config/bazarr:/config
- /mnt/backup/media/library:/data/library
ports:
- "6767:6767"
seerr:
# Seerr = слившиеся Jellyseerr + Overseerr. ⚠️ образ fallenbagel/jellyseerr заброшен
# (последний — 2025-08) и не логинится в Jellyfin 12 (400 на AuthenticateByName)
image: ghcr.io/seerr-team/seerr:latest
container_name: seerr
init: true
restart: unless-stopped
environment:
TZ: Europe/Moscow
volumes:
- ./config/seerr:/app/config
ports:
- "5055:5055"