Replace legacy jellyfin app with fafflix (adult, cheeztv pattern) #415

Merged
benvin merged 1 commits from benvin/fafflix into main 2026-08-25 20:06:54 +10:00
Member

Why

Rebuild the adult media instance as fafflix, mirroring the kids instance (cheeztv) HA pattern (Postgres-backed jellyfin-ha fork, Valkey transcode-lease store, shared-RWX transcode, CNPG + k8up/restic backups, static CephFS media PVs). Ben: "replace the adult jellyfin with the same pattern as kids." The adult instance holds no data currently, so the wipe/replace is sanctioned.

Stacked on top of benvin/cheeztv (#413) — base is that branch, not main.

How

  • Add apps/base/fafflix/ — cheeztv pattern with s/cheeztv/fafflix on names/namespace/labels/secrets/buckets and the Vault kv path kubernetes/namespace/fafflix/default/k8up-restic.
  • Media: mount the shared movies/tv CephFS subvolumes' adult subtree at /media/movies and /media/tv, plus the kids subtree at /media/movies-kids and /media/tv-kids (same two static PVs, new unique volumeHandles fafflix-media-{movies,tv}-static) so fafflix can resume kids content started on cheeztv. All media mounts readOnly, matching cheeztv.
  • Hostname preserved: fafflix keeps serving the legacy jellyfin host jellyfin.k8s.syd1.au.unkin.net (TLS secret fafflix-tls, cert-manager re-mints). The dedicated fafflix domain switch is explicitly deferred — no fafflix.unkin.net created.
  • config PVC on cephfs-raid5-delete (delete variant).
  • Remove apps/base/jellyfin/ + its overlay; swap jellyfin->fafflix in the media-apps ApplicationSet directory glob and the media AppProject namespace destination.
  • Third-party images stay canonical upstream; the in-house jellyfin-ha image ref is unchanged.

Verification

  • kustomize build + kubeconform -strict clean on the fafflix overlay and the whole media appset scope (fafflix/cheeztv/arrstack): 0 invalid, 0 errors.
  • No dangling apps/base/jellyfin references; jellyfin.k8s.syd1.au.unkin.net now served by exactly one app (fafflix); no fafflix.unkin.net anywhere.
## Why Rebuild the adult media instance as `fafflix`, mirroring the kids instance (`cheeztv`) HA pattern (Postgres-backed jellyfin-ha fork, Valkey transcode-lease store, shared-RWX transcode, CNPG + k8up/restic backups, static CephFS media PVs). Ben: "replace the adult jellyfin with the same pattern as kids." The adult instance holds no data currently, so the wipe/replace is sanctioned. Stacked on top of `benvin/cheeztv` (#413) — base is that branch, not main. ## How - Add `apps/base/fafflix/` — cheeztv pattern with `s/cheeztv/fafflix` on names/namespace/labels/secrets/buckets and the Vault kv path `kubernetes/namespace/fafflix/default/k8up-restic`. - Media: mount the shared movies/tv CephFS subvolumes' `adult` subtree at `/media/movies` and `/media/tv`, plus the `kids` subtree at `/media/movies-kids` and `/media/tv-kids` (same two static PVs, new unique volumeHandles `fafflix-media-{movies,tv}-static`) so fafflix can resume kids content started on cheeztv. All media mounts readOnly, matching cheeztv. - **Hostname preserved:** fafflix keeps serving the legacy jellyfin host `jellyfin.k8s.syd1.au.unkin.net` (TLS secret `fafflix-tls`, cert-manager re-mints). The dedicated fafflix domain switch is explicitly deferred — no `fafflix.unkin.net` created. - config PVC on `cephfs-raid5-delete` (delete variant). - Remove `apps/base/jellyfin/` + its overlay; swap `jellyfin`->`fafflix` in the `media-apps` ApplicationSet directory glob and the `media` AppProject namespace destination. - Third-party images stay canonical upstream; the in-house `jellyfin-ha` image ref is unchanged. ## Verification - `kustomize build` + `kubeconform -strict` clean on the fafflix overlay and the whole media appset scope (fafflix/cheeztv/arrstack): 0 invalid, 0 errors. - No dangling `apps/base/jellyfin` references; `jellyfin.k8s.syd1.au.unkin.net` now served by exactly one app (fafflix); no `fafflix.unkin.net` anywhere.
benvin changed target branch from benvin/cheeztv to main 2026-08-25 19:59:10 +10:00
unkin-agent added 1 commit 2026-08-25 20:04:36 +10:00
Replace legacy jellyfin app with fafflix (adult, cheeztv pattern)
ci/woodpecker/pr/vector-test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/kubeconform Pipeline was successful
55151439d8
Rebuild the adult media instance as 'fafflix' following the same HA pattern
as the kids instance (cheeztv): Postgres-backed jellyfin-ha fork, Valkey
transcode-lease store, shared-RWX transcode, CNPG + k8up/restic backups,
static CephFS media PVs.

- Add apps/base/fafflix (namespace/labels/secrets/buckets/Vault path fafflix-*)
- fafflix mounts the shared movies/tv subvolumes' adult subtree at
  /media/{movies,tv} plus the kids subtree at /media/{movies,tv}-kids so it can
  resume kids content started on cheeztv; new unique static PV volumeHandles
- Keep serving the legacy hostname jellyfin.k8s.syd1.au.unkin.net (fafflix-tls);
  dedicated fafflix domain deferred, no new public host
- config PVC on cephfs-raid5-delete
- Remove apps/base/jellyfin + overlay; swap jellyfin->fafflix in the media
  ApplicationSet glob and AppProject namespace destination
- No data currently on the adult instance, so the wipe/replace is sanctioned
unkin-agent force-pushed benvin/fafflix from 0cd5446d6b to 55151439d8 2026-08-25 20:04:36 +10:00 Compare
benvin merged commit fe689dc08e into main 2026-08-25 20:06:54 +10:00
benvin deleted branch benvin/fafflix 2026-08-25 20:06:54 +10:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unkin/argocd-apps#415