diff --git a/README.md b/README.md index 32cc430..fa1d33d 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,72 @@ -# ARRFLIX +

+ ARRFLIX +

-Self-hosted Jellyfin media server on nullstone, LAN-only. +

Premium home streaming, my way.

-> **Start here** → [`ADMIN-GUIDE.md`](ADMIN-GUIDE.md) — the single page that -> tells you what to do day-to-day. Everything else is a reference doc you only -> read when the admin guide tells you to. +--- -## Endpoint +ARRFLIX is my personal premium streaming service. One library, hand-curated, no +filler — every show and film is the best version I could put together. Where +the source allows, masters are 4K. Where it doesn't, they're AI-upscaled until +they look better than the disc ever did. The reference example: my **Rick and +Morty Season 1** is a 4K HDR upscale that beats the original broadcast. That's +the standard for everything that lands here. -- `https://arrflix.s8n.ru` — accessible only from LAN (192.168.0.0/24) and Tailscale admin/infra tags via Traefik `no-guest@file` middleware. -- DNS resolved internally by Pi-hole (`/opt/docker/pihole/etc-pihole/custom.list`). -- TLS via Let's Encrypt DNS-01 (Gandi). +It's not a clone of a public streamer. It's the version I wished existed: the +quality bar of a boutique release group, the polish of a flagship app, and a +library I actually want to watch. -## Storage +## What you get -| Path | Purpose | -|-----------------------------------|-------------------------------| -| `/home/docker/jellyfin/config/` | Jellyfin config + DB (writable, UID 1000) | -| `/home/docker/jellyfin/cache/` | Transcode + image cache | -| `/home/user/media/movies/` | Movies library (mounted RO) | -| `/home/user/media/tv/` | TV library (mounted RO) | +- **Best-quality everything.** 4K where the source supports it, AI-upscaled + masters where it doesn't. No 480p filler, no junk encodes. +- **Curated, not crawled.** Every title is hand-imported, hand-cleaned, and + hand-checked before it goes live. Junk files, sample clips, and stray + artwork never make it in. +- **Polished metadata.** Posters, backdrops, episode stills, cast, and + descriptions are all locked to the canonical source — no wrong-show + matches, no broken artwork, no foreign-language drift. +- **English-first UI, every account.** No surprise German Play buttons, no + browser-locale roulette. Every user is pinned to a consistent experience. +- **Custom theming.** ARRFLIX wordmark, ARRFLIX-red accent (`#E50914`), + loading splash, and a Netflix-grade dark UI. Jellyfin's stock chrome is + hidden — the brand is the surface. +- **Per-user home layouts.** Resume, Next Up, and Latest Media tuned the way + I actually use the app. No "My Media" tile clutter. +- **Subtitles done right.** Sidecar files named to spec, OpenSubtitles + integration, ffmpeg-extracted tracks where embedded. -## Routing +## Live at -Traefik docker-label provider does NOT pick up the labels on this container -(unknown reason — file-provider routing for the same backend works). The -deploy uses **file-provider** routing in -`/opt/docker/traefik/config/jellyfin-test.yml`. If you fix the docker-provider -issue later, flip routing back to labels and remove the file-provider snippet. +- +- -## Transcoding +Both endpoints are **LAN / tailnet only**. There is no public exposure — if +you're not on the network, you're not getting in. By design. -GTX 1660 Ti is present on nullstone but `nvidia-smi` currently fails — driver -is broken or not loaded. Jellyfin runs CPU-only transcode for now. After -fixing the driver, add the standard NVIDIA hwaccel block in compose: +--- -```yaml -deploy: - resources: - reservations: - devices: - - driver: nvidia - count: all - capabilities: [gpu] -``` +## How it works (technical) -…and enable NVENC in Jellyfin's Playback → Transcoding settings. +ARRFLIX runs on self-hosted infrastructure on **nullstone**. The repo you're +looking at is also the deploy source-of-truth: the compose file, library +structure, theming overrides, and operational playbooks all live here. The +streaming engine itself is unbranded plumbing — invisible behind the +ARRFLIX surface. -## First-run setup +Operators / future-me, the technical reference is split across: -1. Browse to `https://arrflix.s8n.ru` from the LAN. -2. Create the admin user (Jellyfin onboarding wizard). -3. Add libraries pointing at `/media/movies` and `/media/tv` inside the - container (these map to `/home/user/media/{movies,tv}`). -4. (Optional) Apply Netflix-style theme — see `docs/04-theming-and-users.md`. +- [`ADMIN-GUIDE.md`](ADMIN-GUIDE.md) — single-page day-to-day ops: adding users, + importing media, fixing scrapes, theme breakage, emergency rollback. +- [`ROADMAP.md`](ROADMAP.md) — what's done, what's open, what's deferred. +- [`docs/`](docs/) — research-grade reference docs (artwork, metadata, + subtitles, theming, file-structure rules, per-library themes, cleanup, + filename normalization, force-English, branding leaks, splash, audits). -## Operations docs +Repo lives at (mirror: +). -Detailed playbooks (research-grade, with API curls, failure modes, recovery): +--- -| File | Topic | -|------|-------| -| [`docs/01-artwork-and-images.md`](docs/01-artwork-and-images.md) | Posters, backdrops, scrapers (TMDB/TVDB/Fanart), refresh API, language fallback | -| [`docs/02-metadata-and-titles.md`](docs/02-metadata-and-titles.md) | Filename parsing, Identify flow, locking the right show, language cascade, multi-episode files | -| [`docs/03-subtitles.md`](docs/03-subtitles.md) | OpenSubtitles plugin (.com), sidecar naming, ffmpeg/mkvextract extraction, per-user prefs | -| [`docs/04-theming-and-users.md`](docs/04-theming-and-users.md) | ElegantFin theme, branding API, multi-user policies, SyncPlay, friend account playbook | -| [`docs/05-file-structure-rules.md`](docs/05-file-structure-rules.md) | Authoritative folder/filename rules for movies, TV, anime, stand-up, concerts, docs, extras, NFO, artwork overrides | -| [`docs/06-per-library-themes.md`](docs/06-per-library-themes.md) | Per-library theming research: JS-injector plugin shim + scoped CSS for Movies/Anime/Music looks | - -## State as of 2026-05-08 - -- **Library**: Futurama 1999 series (TMDB 615), S01–S03, 44 episodes, fully scraped (Polish metadata + posters + backdrops + episode stills) -- **Theme**: ElegantFin v25.12.31 applied via `/System/Configuration/branding` -- **Subtitles**: OpenSubtitles plugin v20 installed; user must add opensubtitles.com creds (free tier = 20 dl/day) -- **Users**: 1 admin (`s8n`); friend account creation playbook in doc 04 - -## Deploy - -```bash -cd /opt/docker/jellyfin -docker compose up -d -``` +

ARRFLIX — a one-person streaming service that punches above its weight.