Files
homelab-configs/arrs-4k/README.md
T
tommy b25c3a4d5c 4K: download clients (packaged, idempotent) + Homepage tiles
Add SABnzbd+Transmission to radarr-4k/sonarr-4k with distinct categories (sabnzbd
movies-4k/tv-4k, transmission radarr-uhd/sonarr-uhd; Transmission forbids digits) so
they dont cross-import the 1080p instances. Packaged into deploy-arrs-4k.yml via an
idempotent ensure-arrs-4k-dl.py (changed=0). Homepage Radarr 4K/Sonarr 4K tiles
(HOMEPAGE_VAR keys, siteMonitor). 4K path proven: Obsession routed to radarr-4k,
grabbed WEBDL-2160p, 1080p rejected 'not wanted in profile'. Keys via vault, no secrets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 09:43:18 -05:00

40 lines
2.5 KiB
Markdown

# 4K Quality-First arr stack — radarr-4k + sonarr-4k
SEPARATE instances from the untouched 1080p stack (for Overseerr native-4K routing +
isolation). Host: media-server (.183). Deployed by `deploy-arrs-4k.yml` (inline-compose,
idempotent, changed=0).
## Instances
| | port (host:cont) | URL | root folder |
|---|---|---|---|
| radarr-4k | 7879:7878 | radarr-4k.goattw.net | /data/media/movies-4k |
| sonarr-4k | 8990:8989 | sonarr-4k.goattw.net | /data/media/tv-4k |
- Image `lscr.io/linuxserver/{radarr,sonarr}:latest`, PUID/PGID 1000, net `traefik_public`.
- Mount `/mnt/media/data -> /data` — SAME single hardlink tree as the 1080p stack + download
clients (st_dev verified identical), so imports are instant hardlinks. NFS from
TrueNAS `Tank/Media`. Roots created 1000:3000 775 (match 1080p).
## Wiring (Step 1, done)
- **Prowlarr**: `Radarr (4K)`/`Sonarr (4K)` applications (fullSync), indexers synced.
- **Overseerr**: radarr-4k/sonarr-4k as `is4k=true` servers (native 4K routing). The existing
1080p radarr was mislabeled `is4k=true` and was flipped to `is4k=false` (non-4k default).
- **Plex**: SEPARATE libraries `Movies - 4K` (/data/media/movies-4k) + `TV - 4K` (/data/media/tv-4k),
not merged into the 1080p libraries.
- **Download clients** (added post-Step-1, packaged in the playbook via `ensure-arrs-4k-dl.py`):
SABnzbd + Transmission on both instances, DISTINCT categories to avoid cross-import with 1080p —
sabnzbd `movies-4k`/`tv-4k`, transmission `radarr-uhd`/`sonarr-uhd` (Transmission category forbids digits).
Completed paths under /data (hardlinks intact).
- **Homepage**: separate `Radarr 4K`/`Sonarr 4K` tiles in Media Automation (keys via HOMEPAGE_VAR, siteMonitor).
- **Traefik**: file-provider routers (see traefik-router snippet), NOT docker labels.
- **Tdarr**: does NOT watch movies-4k/tv-4k (its libraries are the specific 1080p /media/movies,
/media/tv) — quality-first keeps the grabbed file.
## Step 2 — Recyclarr 4K (DONE)
`deploy-recyclarr-4k.yml` (recyclarr image :8, config uses !env_var, .env from ansible-vault).
Sync runs via **systemd timer** `recyclarr-4k-sync.timer` (daily 04:00, docker-run oneshot — NOT
container cron). Profiles applied: radarr-4k = **Remux + WEB 2160p** (fd161a61), sonarr-4k =
**WEB-2160p** (d1498e7d), assigned to the Overseerr 4K servers (replaced Ultra-HD placeholder).
**DTS family explicitly pinned score 0** (Sonos-Arc down-weight; re-forced every sync so it can't
revert to guide 2500/4500) — Dolby/TrueHD/Atmos left at guide default (positive).