Replaced 25 occurrences across README, docs/00-overview, and docs/04-theming-and-users. Removed the obsolete tv→arrflix rename blockquote (rename complete) and deduped the Live-at bullet.
5 KiB
00 — ARRFLIX Technical Overview
ARRFLIX is the operator's premium home-streaming project: AI-upscaled masters, hand-curated metadata, and a Netflix-faithful viewing surface for a small trusted set of users.
Under the hood, the stack is Jellyfin 10.10.3 in Docker on nullstone, sat
behind Traefik with Let's Encrypt DNS-01 via Gandi for TLS, name-served
internally by Pi-hole, and access-bounded to the LAN (192.168.0.0/24)
plus tagged tailnet nodes via a Traefik allowlist middleware. The Jellyfin web
UI is rebranded as ARRFLIX through a web-overrides/ bind-mount, an SPA
runtime shim, and the NeutralFin / Cineplex CSS theme stack — none of the
default Jellyfin chrome, names, or logos are reachable by an unprivileged user.
Architecture
| Layer | Component |
|---|---|
| Frontend | Jellyfin web bundle, themed and rebranded as ARRFLIX (web-overrides + NeutralFin/Cineplex CSS) |
| Application | jellyfin/jellyfin:10.10.3 container on nullstone, sibling jellyfin-dev for theme work |
| Reverse proxy | Traefik with file-provider routing (docker-label routing flakes for this container) |
| DNS | Pi-hole internal A record: arrflix.s8n.ru → 192.168.0.100 |
| TLS | Let's Encrypt via DNS-01, Gandi LiveDNS provider |
| Storage (media) | RO bind-mount from host /home/user/media/{movies,tv,…} → container /media |
| Storage (state) | Config + cache + metadata under host /home/docker/jellyfin/ |
| ACL | Traefik no-guest@file middleware: LAN 192.168.0.0/24 + tailnet admin/infra tags only |
| WAN exposure | A record published; router port-forward gated — see 09-wan-exposure.md |
A second container jellyfin-dev runs on dev.arrflix.s8n.ru as a behavioural
mirror of prod for theme and branding experiments — same media (read-only),
separate config and users, LAN-only.
Read these in order
01-artwork-and-images.md— how artwork flows through Jellyfin and the curl recipes used to repair a botched first scan.02-metadata-and-titles.md— episode/title scraping,RemoteSearch/Apply, and the lock-the-series workflow.03-subtitles.md— subtitle resolution order, sidecar conventions, and the OpenSubtitles plugin setup.04-theming-and-users.md— active theme (Cineplex v1.0.6), server-side branding, multi-user UX, SyncPlay, revert path.05-file-structure-rules.md— authoritative on-disk layout for Movies / TV / Anime / Music libraries.06-per-library-themes.md— research note on shimming per-library CSS scoping (Movies = Netflix, Anime = Crunchyroll, Music = Spotify).07-pre-import-cleanup.md— normative ruleset for stripping junk from scene/group dumps before import.08-filename-normalization.md— canonical, group-tag-free renaming ruleset between "torrent dump" and the live tree.09-wan-exposure.md— the LAN-only → public-internet plan, server-side changes already applied, router TODOs, and rollback.10-spa-runtime-shim.md— why static<title>patching loses to Jellyfin's SPA, and the runtime shim that wins it back.11-neutralfin-audit.md— read-only audit of the NeutralFin render gap vs the demo screenshots (no fixes applied).12-dev-instance.md—jellyfin-devsibling container: image pinning, mounts, and isolation guarantees.13-optimization-audit.md— read-only performance / capacity / reliability / ops-hygiene audit across REST, host, and container.14-theme-audit.md— Cineplex theme audit and the detail-page left-band backdrop diagnosis (forward plan, not a fix).15-force-english.md— root cause of the German Play button and the per-userUICulturepin that fixes it.16-jellyfin-branding-leaks.md— exhaustive inventory of every place "Jellyfin" or the teal triangle still leaks to a non-admin.17-dev-mirror-and-settings-fix.md— making dev a faithful prod mirror and fixing the non-admin Settings drawer leak (dev only).
See also
../README.md— ARRFLIX brand-facing project page.../ADMIN-GUIDE.md— operator runbook (day-to-day administration).../ROADMAP.md— what's next and what's known-broken.