3bb01ddaaf
- New Ansible role: jellyfin — Docker + nvidia-container-toolkit setup, full *arr stack compose file (Jellyfin, qBittorrent, Radarr, Sonarr, Prowlarr, FlareSolverr, Jellyseerr), systemd service for auto-start - New playbook: jellyfin.yml targeting media_servers group - Inventory: add media LXC (10.10.1.50) to media_servers group - Traefik: add internal .homelab routes for all 6 media services - Pi-hole: add DNS records for all 6 media services → Traefik - network-interfaces: DNAT port 6881 TCP+UDP → 10.10.1.50 for BitTorrent - homelab-requirements.md: document full Jellyfin stack requirements including NVIDIA GTX 1060 passthrough approach and driver notes - jellyfin-tools: original reference compose file from upstream Infrastructure created on Proxmox: - LXC 106 (media, Debian 12, privileged, nesting=1, 10.10.1.50/vmbr1) - ZFS dataset hdd/media mounted at /media in LXC - NVIDIA device passthrough entries in /etc/pve/lxc/106.conf Note: NVIDIA driver 580.159.03 (.run) installed on Proxmox host — not managed by apt (Debian only has 550.x which doesn't support kernel 7.x or GTX 1060 Pascal as of this driver version). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
96 lines
2.4 KiB
Django/Jinja
96 lines
2.4 KiB
Django/Jinja
name: jellyfin
|
|
services:
|
|
jellyfin:
|
|
image: jellyfin/jellyfin:{{ jellyfin_version }}
|
|
container_name: jellyfin
|
|
runtime: nvidia
|
|
environment:
|
|
- NVIDIA_VISIBLE_DEVICES=all
|
|
- NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
|
|
- TZ={{ jellyfin_timezone }}
|
|
volumes:
|
|
- /containers/jellyfin/config:/config
|
|
- /media:/media
|
|
ports:
|
|
- "8096:8096"
|
|
restart: unless-stopped
|
|
|
|
qbittorrent:
|
|
image: lscr.io/linuxserver/qbittorrent:{{ qbittorrent_version }}
|
|
container_name: qbittorrent
|
|
environment:
|
|
- PUID={{ jellyfin_puid }}
|
|
- PGID={{ jellyfin_pgid }}
|
|
- TZ={{ jellyfin_timezone }}
|
|
- WEBUI_PORT=5080
|
|
volumes:
|
|
- /containers/qbittorrent/config:/config
|
|
- /media:/downloads
|
|
ports:
|
|
- "5080:5080"
|
|
- "6881:6881"
|
|
- "6881:6881/udp"
|
|
restart: unless-stopped
|
|
|
|
radarr:
|
|
image: lscr.io/linuxserver/radarr:{{ radarr_version }}
|
|
container_name: radarr
|
|
environment:
|
|
- PUID={{ jellyfin_puid }}
|
|
- PGID={{ jellyfin_pgid }}
|
|
- TZ={{ jellyfin_timezone }}
|
|
volumes:
|
|
- /containers/radarr/config:/config
|
|
- /media:/downloads
|
|
ports:
|
|
- "7878:7878"
|
|
restart: unless-stopped
|
|
|
|
sonarr:
|
|
image: lscr.io/linuxserver/sonarr:{{ sonarr_version }}
|
|
container_name: sonarr
|
|
environment:
|
|
- PUID={{ jellyfin_puid }}
|
|
- PGID={{ jellyfin_pgid }}
|
|
- TZ={{ jellyfin_timezone }}
|
|
volumes:
|
|
- /containers/sonarr/config:/config
|
|
- /media:/downloads
|
|
ports:
|
|
- "8989:8989"
|
|
restart: unless-stopped
|
|
|
|
prowlarr:
|
|
image: lscr.io/linuxserver/prowlarr:{{ prowlarr_version }}
|
|
container_name: prowlarr
|
|
environment:
|
|
- PUID={{ jellyfin_puid }}
|
|
- PGID={{ jellyfin_pgid }}
|
|
- TZ={{ jellyfin_timezone }}
|
|
volumes:
|
|
- /containers/prowlarr/config:/config
|
|
ports:
|
|
- "9696:9696"
|
|
restart: unless-stopped
|
|
|
|
flaresolverr:
|
|
image: ghcr.io/flaresolverr/flaresolverr:{{ flaresolverr_version }}
|
|
container_name: flaresolverr
|
|
environment:
|
|
- LOG_LEVEL=info
|
|
- TZ={{ jellyfin_timezone }}
|
|
ports:
|
|
- "8191:8191"
|
|
restart: unless-stopped
|
|
|
|
jellyseerr:
|
|
image: ghcr.io/fallenbagel/jellyseerr:{{ jellyseerr_version }}
|
|
container_name: jellyseerr
|
|
environment:
|
|
- TZ={{ jellyfin_timezone }}
|
|
volumes:
|
|
- /containers/jellyseerr/config:/app/config
|
|
ports:
|
|
- "5055:5055"
|
|
restart: unless-stopped
|