Jellyfin extracted subtitle cache¶
Fetched: 2026-07-02
Sources:
- Jellyfin configuration docs: https://jellyfin.org/docs/general/administration/configuration/
- Jellyfin backup and restore docs: https://jellyfin.org/docs/general/administration/backup-and-restore/
- Jellyfin issue #12427: https://github.com/jellyfin/jellyfin/issues/12427
- Subtitle Extract issue #35: https://github.com/jellyfin/jellyfin-plugin-subtitleextract/issues/35
- Longhorn trim docs: https://longhorn.io/docs/1.12.0/nodes-and-volumes/volumes/trim-filesystem/
Local finding¶
Current Jellyfin docs split data/config/cache paths. In this deployment the live pod reports:
JELLYFIN_DATA_DIR=/configJELLYFIN_CONFIG_DIR=/config/configJELLYFIN_CACHE_DIR=/cache
The persistent library database, normal metadata, plugin config, intro-skipper data, and trickplay data are on the config PVC, not the cache PVC. Live evidence after the cache reset:
/config/metadata:13 GiB/config/data/jellyfin.db:606 MiB/config/data/trickplay:991 MiB/config/data/introskipper:166 MiB/config/data/subtitles -> /cache/subtitles
The live Jellyfin pod had roughly 63 GiB in /cache/subtitles. The chart
symlinks /config/data/subtitles to /cache/subtitles, so Jellyfin's extracted
subtitle store lives on the cache PVC rather than the config PVC.
The cache PVC was still a longhorn-home volume with the home recurring-job
group, so those rebuildable extracted subtitles were snapshotted and backed up.
Longhorn reported jellyfin-cache-home at roughly 67.6 GiB actual size on
k8s-worker-home-1, making it the largest contributor to the home-1 disk
pressure issue.
Decision¶
Do not pre-extract every embedded subtitle with the Subtitle Extract plugin. Jellyfin can still extract subtitles on demand, and Open Subtitles stays installed for external subtitle lookup.
apps/media/jellyfin now:
- stops installing the Subtitle Extract plugin
- removes any existing
Subtitle Extract*plugin directory during pod start - prunes
/cache/subtitlesduring pod start - declares the cache PVC with
longhorn-home-no-backupfor future recreates
Existing bound PVCs keep their immutable storage class until an intentional cache
PVC reset. The startup prune plus a Longhorn filesystem trim was attempted first
for the existing volume; the live reset was only used after Longhorn retained the
old cache blocks through a removed snapshot still present in the active chain.
That reset discards cache-only artifacts, not the core Jellyfin metadata stored
under /config.