Rename: nasflix → ARRFLIX + apply Cineplex theme
Domain + repo rename: nasflix.s8n.ru → arrflix.s8n.ru, NASFLIX → ARRFLIX
(Forgejo repo, Pi-hole DNS, Traefik file+label routes, compose env+labels,
onyx /etc/hosts, branding LoginDisclaimer, all repo refs, logo asset).
Theme: ElegantFin → Cineplex v1.0.6 (MRunkehl, pinned). Picked by research
agent over JellyFlix (halted), DarkFlix (10.8.x only), Theme Park (no
Netflix preset). Real #E50914 + Netflix Sans webfont + transform:scale
hover + gradient login backdrop. Doc 04 updated with full candidate
matrix, theme-history subsection, rollback-to-ElegantFin snippet.
Logo asset saved at assets/logo.png (235x85 RGBA).
Live: https://arrflix.s8n.ru → 302. tv.s8n.ru + nasflix.s8n.ru retired (404).
2026-05-08 02:57:34 +01:00
# Admin Guide — arrflix.s8n.ru
2026-05-08 02:20:02 +01:00
The single page that tells you what to do and where to read more.
Anything not on this page lives in `docs/` — links inline.
2026-05-08 02:32:42 +01:00
What's next on this deploy → [`ROADMAP.md` ](ROADMAP.md ).
2026-05-08 02:20:02 +01:00
---
## Where things live
| Thing | Where |
|---|---|
| Compose file | `docker-compose.yml` (this repo) → deployed at `nullstone:/opt/docker/jellyfin/` |
| Config + cache | `nullstone:/home/docker/jellyfin/{config,cache}/` |
2026-05-08 02:53:46 +01:00
| Media root | `nullstone:/home/user/media/{movies,tv}/` |
2026-05-08 02:20:02 +01:00
| Traefik route | `/opt/docker/traefik/config/jellyfin-test.yml` (file-provider — see [docs/04 § routing-quirk ](docs/04-theming-and-users.md )) |
Rename: nasflix → ARRFLIX + apply Cineplex theme
Domain + repo rename: nasflix.s8n.ru → arrflix.s8n.ru, NASFLIX → ARRFLIX
(Forgejo repo, Pi-hole DNS, Traefik file+label routes, compose env+labels,
onyx /etc/hosts, branding LoginDisclaimer, all repo refs, logo asset).
Theme: ElegantFin → Cineplex v1.0.6 (MRunkehl, pinned). Picked by research
agent over JellyFlix (halted), DarkFlix (10.8.x only), Theme Park (no
Netflix preset). Real #E50914 + Netflix Sans webfont + transform:scale
hover + gradient login backdrop. Doc 04 updated with full candidate
matrix, theme-history subsection, rollback-to-ElegantFin snippet.
Logo asset saved at assets/logo.png (235x85 RGBA).
Live: https://arrflix.s8n.ru → 302. tv.s8n.ru + nasflix.s8n.ru retired (404).
2026-05-08 02:57:34 +01:00
| Pi-hole DNS pin | `/opt/docker/pihole/etc-pihole/custom.list` → `192.168.0.100 arrflix.s8n.ru` |
2026-05-08 02:20:02 +01:00
| User wrapper | `bin/add-jellyfin-user.sh` (always use this) |
---
## Daily ops
### Add a new user
**Always** use the wrapper. UI signup skips the canonical home layout + subtitle/audio prefs.
```bash
JELLYFIN_TOKEN=< admin-token > ./bin/add-jellyfin-user.sh < username > < password >
```
What it does → [docs/04 § friend playbook ](docs/04-theming-and-users.md ).
Why it exists (Jellyfin has no native global default) → see same doc.
### Add new media
1. Drop source into `/home/admin/Downloads/<show or movie>/` on onyx.
2. Run cleanup: strip junk per [docs/07 ](docs/07-pre-import-cleanup.md ). Use `bin/cleanup-import.sh` once written; for now follow the rules in that doc by hand.
3. Normalize filenames per [docs/08 ](docs/08-filename-normalization.md ). Use `bin/normalize.py` once written.
4. Stage to `/home/admin/staging-jelly-<title>/<canonical-name>/` .
5. `scp -r` to `nullstone:/home/user/media/<lib>/` .
Rename: nasflix → ARRFLIX + apply Cineplex theme
Domain + repo rename: nasflix.s8n.ru → arrflix.s8n.ru, NASFLIX → ARRFLIX
(Forgejo repo, Pi-hole DNS, Traefik file+label routes, compose env+labels,
onyx /etc/hosts, branding LoginDisclaimer, all repo refs, logo asset).
Theme: ElegantFin → Cineplex v1.0.6 (MRunkehl, pinned). Picked by research
agent over JellyFlix (halted), DarkFlix (10.8.x only), Theme Park (no
Netflix preset). Real #E50914 + Netflix Sans webfont + transform:scale
hover + gradient login backdrop. Doc 04 updated with full candidate
matrix, theme-history subsection, rollback-to-ElegantFin snippet.
Logo asset saved at assets/logo.png (235x85 RGBA).
Live: https://arrflix.s8n.ru → 302. tv.s8n.ru + nasflix.s8n.ru retired (404).
2026-05-08 02:57:34 +01:00
6. Trigger refresh: `curl -X POST -H "Authorization: MediaBrowser Token=$TOKEN" https://arrflix.s8n.ru/Library/Refresh` .
2026-05-08 02:20:02 +01:00
7. Verify: hit the URL, check artwork + titles + episode counts.
8. **Only after confirmed working** : delete the source download + the staging dir.
Naming + folder rules: [docs/05 ](docs/05-file-structure-rules.md ).
### Library not scraping right
Symptoms → fix:
| Symptom | Cause | Fix doc |
|---|---|---|
| No posters / backdrops | `EnableInternetProviders=false` or wrong fetcher name | [docs/01 ](docs/01-artwork-and-images.md ) |
| Episode titles blank or filenames | Series has empty `ProviderIds` (never matched) | [docs/02 § Identify flow ](docs/02-metadata-and-titles.md ) |
| Wrong show matched | Auto-match picked sequel/reboot | [docs/02 § locking the right show ](docs/02-metadata-and-titles.md ) |
| Polish/wrong language | Library `PreferredMetadataLanguage` mismatch | [docs/02 § language cascade ](docs/02-metadata-and-titles.md ) |
### Subtitles not auto-downloading
→ [docs/03 § OpenSubtitles plugin setup ](docs/03-subtitles.md ).
Owner needs an opensubtitles.com account (NOT .org). Free tier = 20/day.
### Theme broke after Jellyfin upgrade
ElegantFin imports from `cdn.jsdelivr.net/gh/lscambo13/ElegantFin@main/...` — auto-fixes itself most of the time. If the upstream theme breaks on a JF version bump, pin to a known-good tag. Procedure: [docs/04 § maintenance ](docs/04-theming-and-users.md ).
---
## Operational rules (these are non-negotiable)
1. **Wrapper-only user creation.** Don't create users in the Dashboard UI. Always run `bin/add-jellyfin-user.sh` so the layout + prefs are consistent. Doc 04.
2. **Stage before import.** Never drop raw downloads into `/home/user/media/` . Always clean + normalize first. Docs 05/07/08.
3. **Verify before delete.** Don't delete source downloads or old library entries until the new content is confirmed playing in the Jellyfin UI.
Rename: nasflix → ARRFLIX + apply Cineplex theme
Domain + repo rename: nasflix.s8n.ru → arrflix.s8n.ru, NASFLIX → ARRFLIX
(Forgejo repo, Pi-hole DNS, Traefik file+label routes, compose env+labels,
onyx /etc/hosts, branding LoginDisclaimer, all repo refs, logo asset).
Theme: ElegantFin → Cineplex v1.0.6 (MRunkehl, pinned). Picked by research
agent over JellyFlix (halted), DarkFlix (10.8.x only), Theme Park (no
Netflix preset). Real #E50914 + Netflix Sans webfont + transform:scale
hover + gradient login backdrop. Doc 04 updated with full candidate
matrix, theme-history subsection, rollback-to-ElegantFin snippet.
Logo asset saved at assets/logo.png (235x85 RGBA).
Live: https://arrflix.s8n.ru → 302. tv.s8n.ru + nasflix.s8n.ru retired (404).
2026-05-08 02:57:34 +01:00
4. **No bind-mount drift.** If you change `docker-compose.yml` , commit + push to `git.s8n.ru/s8n/ARRFLIX` in the same step. The repo is the source of truth for the deploy. Doc memory: `feedback_always_commit_to_my_git.md` .
5. **No public DNS.** `arrflix.s8n.ru` resolves only via Pi-hole locally. Do NOT add a Gandi A record. LAN-only is the threat model.
2026-05-08 02:20:02 +01:00
---
## Reference docs (read on demand)
| Doc | When to read |
|---|---|
| [01-artwork-and-images ](docs/01-artwork-and-images.md ) | Artwork missing or wrong; want to install Fanart.tv |
| [02-metadata-and-titles ](docs/02-metadata-and-titles.md ) | Wrong show matched; bad titles; multi-episode files |
| [03-subtitles ](docs/03-subtitles.md ) | OpenSubtitles config; sidecar `.srt` naming; ffmpeg extraction |
| [04-theming-and-users ](docs/04-theming-and-users.md ) | Theme tweaks; multi-user policies; SyncPlay |
| [05-file-structure-rules ](docs/05-file-structure-rules.md ) | What folder/filename to use for any new media |
| [06-per-library-themes ](docs/06-per-library-themes.md ) | Want Movies-as-Netflix vs Anime-as-Crunchyroll skins |
| [07-pre-import-cleanup ](docs/07-pre-import-cleanup.md ) | What to strip from a download before import |
| [08-filename-normalization ](docs/08-filename-normalization.md ) | How to rename files into canonical form |
---
## Emergency rollback
| Operation | Rollback |
|---|---|
| Bad CustomCss change | `curl -X POST .../System/Configuration/branding` with prior backup |
| Compose change broke startup | `git checkout HEAD~ docker-compose.yml && docker compose up -d` |
| Library scan loop stuck | Settings → Dashboard → Scheduled Tasks → cancel "Scan Media Library" |
| New media import wrong | Don't panic. The source download is still in `/home/admin/Downloads/` . Delete the bad import dir on nullstone, redo cleanup/normalize step |
---
## Current state (snapshot)
2026-05-08 02:26:30 +01:00
- **Library**: TV Shows → `Futurama (1999)` , S01– S04, **72 episodes + 9 featurettes** , English audio, 1080p HEVC, locked to TMDB 615 / TVDB 73871 / IMDb tt0149460. Polish set deleted 2026-05-08.
- **Disk**: nullstone /home 109G free
2026-05-08 02:20:02 +01:00
- **Theme**: ElegantFin v25.12.31
- **Plugins**: OpenSubtitles v20 (creds pending — see [docs/03 ](docs/03-subtitles.md ))
- **Users**: `s8n` (admin), `guest` (non-admin, password `123` , change recommended)
2026-05-08 02:26:30 +01:00
- **Home layout (per-user, applied to both)**: resume / resumeaudio / nextup / latestmedia (My Media tile row dropped)
2026-05-08 02:20:02 +01:00
Last verified: 2026-05-08