On my sparkbox server I have custom configurations for immich and jellyfin. However when the auto updates happen my configurations get reset to default. I had claude make a config check to let me know what has been reset upon updates. === Checking Jellyfin === [WARN] Jellyfin: sparkboxsbmedia network MISSING [WARN] Jellyfin: SSD config volume MISSING (reverted to old path) [WARN] Jellyfin: Gelato volume mounts MISSING === Checking Immich === [WARN] Immich: immich-ml container has REAPPEARED (remote ML was supposed to be permanent) === Checking mergerfs pool === Issues found above. Reapply fixes from the session summary doc, Sections 3 (Jellyfin) and 6 (Immich). after which i would have to go back and reconfigure everything to my settings. I was wondering if there was a way for my configurations to be more permanent and not affected by the daily sparkbox updates.
5 replies
Chris wrote:
Good news — there is a supported way to do exactly this. Drop a file at /opt/sparkbox/state/overrides/<module.yml. It gets merged on top of that module's compose on every sparkbox up, and it lives under state/, which the upgrade preserves — so an update can't revert it. The filename is the module id (media.yml, immich.yml, jellyfin.yml); inside you target the service by name and include only a services: block. Apply with sudo sparkbox up, then confirm with docker inspect sb-<app. Your extra network, SSD config path and Gelato mounts all belong there. Full guide: docs/PER-APP-OVERRIDES.md. One caveat — overrides aren't included in SparkBox's backups, so keep your own copy. The immich-ml one is different: there's no supported switch to keep that container off, so I'm flagging that part to Tom rather than guessing. — Chris
Chris wrote:
One correction to my own answer, before you spend time on it — the filename I listed could send you down a dead end. Your Jellyfin is the media bundle's (container sb-jellyfin-media), and that lives in the media module. So its overrides belong in media.yml, not jellyfin.yml. jellyfin.yml is the separate standalone Jellyfin module — a file there would merge onto a container you don't run and silently do nothing, which looks exactly like the reverting you're already fighting. One more inside that file: the service key is jellyfin-media, not jellyfin. Your extra network, SSD config path and Gelato mounts all go under it. Immich is its own module, so immich.yml was right. — Chris
itchgabe wrote:
Hi! just to clarify I am not using the media bundle. I am using jellyfin by itself. I can confirm this with docker ps -a which shows only sb-jellyfin.
Chris wrote:
That settles it — sb-jellyfin is the standalone module, so please scratch my last message entirely. My first answer was the right one for your box: state/overrides/jellyfin.yml, with the service key jellyfin. The media.yml and jellyfin-media advice applies only to the bundle, which you do not run — sorry for the detour. So: put your extra network, the SSD config path and the Gelato mounts under services: jellyfin: in that file, apply with sudo sparkbox up, and confirm with docker inspect sb-jellyfin. Immich is unchanged — immich.yml, exactly as first described. — Chris
Chris wrote:
One gap in what I told you, before you spend time on it: the network is the one thing that cannot go in a services-only file. Compose needs it declared at the top of the file too, or sparkbox up stops with "refers to undefined network". The real name also carries the project prefix. So jellyfin.yml wants both blocks: networks: sparkboxsbmedia: external: true services: jellyfin: networks: - sbjellyfin - sbproxy - sparkboxsbmedia The SSD config path and the Gelato mounts go under that same jellyfin: key as volumes, and those are fine as-is. Check the whole file before applying with: docker compose -f /opt/sparkbox/modules/jellyfin/docker-compose.yml -f /opt/sparkbox/state/overrides/jellyfin.yml config No error means it will apply cleanly. Our own guide says services-only, which is wrong for networks - I have flagged that to Tom to get fixed. -- Chris