Ok before anyone asks I have read all of the old post about mounting and I can't get this figured out. It has to be a something I'm doing wrong. Here is my HDD list: sda 8:0 0 238.5G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 513M 0 part └─sda3 8:3 0 238G 0 part / sdb 8:16 0 4T 0 disk ├─sdb1 8:17 0 4T 0 part /run/media/jellyfin/Media Drive 1 └─sdb2 8:18 0 128M 0 part sdc 8:32 0 4T 0 disk ├─sdc1 8:33 0 4T 0 part /run/media/jellyfin/Media Drive 2 └─sdc2 8:34 0 128M 0 part sdd 8:48 0 1024G 0 disk └─sdd1 8:49 0 1024G 0 part /run/media/jellyfin/Media Drive 3 sde 8:64 0 2T 0 disk ├─sde1 8:65 0 16M 0 part └─sde2 8:66 0 2T 0 part /run/media/jellyfin/Media Drive 4 sr0 11:0 1 1024M 1 rom I would like all of my Movies to be on Media Drive 1 all of my TV shows to be on Media Drive 2 all music to Media Drive 3 and DVR on Media Drive 4 If anyone could help that would be great.
23 replies
Chris wrote:
Hey rhilyard — the reason this feels stuck is how the media stack sees your drives. SparkBox hands Jellyfin and the arr apps one media folder (Settings → Media Root), and inside it they expect three subfolders: Movies, TV, and Music. Your drives are auto-mounted under /run/media/jellyfin/ — those paths have spaces (which SparkBox rejects) and they're desktop mounts that disappear on reboot. The fix is to mount each drive at a stable, space-free path like /mnt/drive1, then point Media Root at one folder holding Movies, TV and Music. Heads-up: splitting Movies/TV/Music across separate drives means downloads copy instead of hardlink, using extra space and slowing imports. I can walk you through the four mounts.
Chris wrote:
Happy to — and you've found the exact spot that catches most people. SparkBox is built around one media drive: keeping Movies, TV, Music and DVR all on one drive is what makes downloads instant and stops your space from doubling. Pick one of your 4TB drives as the main one. Then it's two steps. First, point SparkBox at that drive — run sudo sparkbox set-env MEDIAROOT /path/to/your/drive in a terminal (or set Media Root under Settings → config in the dashboard). Second, run sudo sparkbox restart media and give it a few minutes; SparkBox creates the Movies, TV and Music folders for you. So I can give you the exact permanent-mount lines: is this a UGREEN NAS or a Linux desktop? The other three drives can join later as extra folders in Jellyfin and Sonarr — just know files moved to them copy instead of link.
Boogie wrote:
I'm not sure that will work, I too have more than one drive running plex on another system and I cant seem to connect Jellyfin to more than one drive.
rhilyard wrote:
I'm trying to mount drive 1 and I get this error. jellyfin@jellyfin-OptiPlex-990:~$ sudo mount /dev/sdb1 /mnt/drive1 Mount is denied because the NTFS volume is already exclusively opened. The volume may be already mounted, or another software may use it which could be identified for example by the help of the 'fuser' command.
Chris wrote:
That error actually tells us the answer — drive 1 is already mounted, so nothing is broken. Your desktop auto-mounted it when you signed in, which is why you see it at /run/media/jellyfin/Media Drive 1 in your list. A drive can only be mounted in one place at a time, so we unmount it from there first, then move it to the clean /mnt/drive1 path. Run these three lines, one at a time: sudo umount /dev/sdb1 sudo mkdir -p /mnt/drive1 sudo mount /dev/sdb1 /mnt/drive1 Then run ls /mnt/drive1 — if you see your folders, it worked. One heads-up: your desktop may grab the drive again on its own after a reboot, so once this is working I will show you the step that makes it stick.
rhilyard wrote:
First error jellyfin@jellyfin-OptiPlex-990:~$ sudo unmount/dev/sdb1 sudo: 'unmount/dev/sdb1': command not found jellyfin@jellyfin-OptiPlex-990:~$
Chris wrote:
Just a typo — nothing broken. The command is umount (no "n" in the middle) and it needs a space before the drive path, so it is two words: sudo umount /dev/sdb1. Then run the next two lines as before: sudo mkdir -p /mnt/drive1 and sudo mount /dev/sdb1 /mnt/drive1. Finish with ls /mnt/drive1 to confirm your folders show up.
Chris wrote:
Good catch, and you're right that it isn't one-click today. SparkBox's media apps — Jellyfin, Sonarr, Radarr — all share a single media folder, and that's on purpose: it's what lets downloads import instantly (hardlinks) instead of copying and doubling your space. By default Jellyfin only sees that one folder. Adding a second drive is possible but needs a hand-added mount — there's no dashboard setting for it yet — and files on that second drive copy instead of hardlink. It's on the team's feature list to make multiple drives a proper first-class setup. For now the cleanest path is one main media drive.
Boogie wrote:
I was able to mount my other folders using Portainer and editing the Jellyfin config to add the other folders that I wanted it to see. I then went into Jellyfin and updated the Movies and TVShows libraries to see the folders that I wanted them to also scan. That make work for you as well.
Chris wrote:
Nice — glad you got your extra folders showing. One caveat so it doesn't surprise you later: mounts added by hand in Portainer aren't part of SparkBox's compose file, so they get dropped whenever SparkBox recreates the Jellyfin container (a restart media or an update). The library entries you made inside Jellyfin will stay, but the folder mounts underneath won't. For the main media drive, the durable path is MEDIAROOT (Settings - Media Root), which mounts one root into every media app and survives updates.
Boogie wrote:
Good to know.... as soon as i reset it removed my folders from Portainer. I created link files within my MEDIAROOT folder and used those to share the data from the Plex server.
Chris wrote:
Just one thing to check so this behaves the way you're expecting. Jellyfin's container only has your Media Root mounted into it, so a link file that points at a folder outside Media Root (like where your Plex library actually lives) reads as a broken link inside the container — the folder can appear but come up empty. If the Plex data is on a separate drive, the dependable route is mounting that drive's path into Media Root rather than linking across drives. Tell me where the Plex data lives and I'll point you at the cleanest option.
rhilyard wrote:
Sorry I thought I checked that. I got all the steps done above. What do I need to do next?
Chris wrote:
Nice — that means Drive 1 is mounted at /mnt/drive1, so the last step is pointing SparkBox at it. Run these two lines in your terminal, one at a time: sudo sparkbox set-env MEDIAROOT /mnt/drive1 sudo sparkbox restart media Give it a couple of minutes and SparkBox creates the Movies, TV and Music folders right on that drive. Then run sparkbox urls and open the Jellyfin address to see them. Your other three drives can join later as extra Jellyfin libraries (they just copy files over instead of moving them instantly). Paste back what restart media prints.
rhilyard wrote:
Ok I have movies in my jellyfin. Next how do I get my Tv shows to list from the other drive?
Chris wrote:
Great progress — Drive 1 is done. TV shows are the same idea: mount Drive 2, then point Jellyfin at it. Mount your other 4TB (Drive 2) exactly like Drive 1: sudo umount /dev/sdc1 sudo mkdir -p /mnt/drive2 sudo mount /dev/sdc1 /mnt/drive2 Then run: ls /mnt/drive2 — if you see your TV folders, it worked. Reply back and I will give you the short step that makes Jellyfin show that drive as your TV library and keep it through updates.
Chris wrote:
Perfect — that's both drives in. The last piece is pointing Jellyfin at drive 2 so it shows your TV shows, in a way that stays put through updates. Run this to open a small settings file: sudo nano /opt/sparkbox/state/overrides/media.yml Paste exactly this in, then save with Ctrl+O, Enter, Ctrl+X: yaml services: jellyfin-media: volumes: - /mnt/drive2:/data/drive2 Then run sudo sparkbox up media and give it a minute. When it's back, open Jellyfin → Dashboard → Libraries → Add Media Library, choose Shows, and add the folder /data/drive2. Your TV shows will list from drive 2 then.
rhilyard wrote:
Chris, Thanks for all the help. I do have have one more ask. I would like to setup ErsatzTV. When I try to edit other video patch in the local media sources tab it can't find the drive. (/mnt/drive2/Commericals. I think I read somewhere that I need to grant access in docker container but I have no idea how to do that.
Chris wrote:
This one's a container-visibility fix, not a broken drive. ErsatzTV runs in its own container and only sees folders that are handed to it. Out of the box it gets your Media Root (Drive 1) at /media, so Drive 2 is not inside it and /mnt/drive2 does not exist from ErsatzTV's point of view. Hand it over with a small one-time override. Open: sudo nano /opt/sparkbox/state/overrides/ersatztv.yml Paste this, then save with Ctrl+O, Enter, Ctrl+X: services: ersatztv: volumes: - /mnt/drive2:/media/drive2:ro Then run: sudo sparkbox up ersatztv Give it a minute, then in ErsatzTV point the media source at /media/drive2 - your commercials folder sits inside it.
rhilyard wrote:
The error message when I sudo sparkbox up ersatztv. Plus would tunarr be a better app? If it is how would I go about make that work with my setup of drives? [OK] This server's network address changed: 172.20.0.5 is gone, it is now 192.168.1.78. Saved address updated so app links, the Access page and BookStack point at the right place. [OK] Domain setting was the old address (172.20.0.5) — now 192.168.1.78. (A real domain name here is never changed.) [INFO] .env changed since last up — recreating the affected containers to pick up new values [WARN] VPNPROVIDER=surfshark with VPNDOT='on': Surfshark blocks encrypted DNS inside the tunnel — if the VPN connects but apps report DNS/SSL errors, set VPNDOT=off. [INFO] Tailscale is on — allowing the tailnet range (100.64.0.0/10) back out of the VPN tunnel so the apps behind it answer remotely. [ERROR] Module 'ersatztv' was NOT started: YOUR per-app override file doesn't parse. [ERROR] /opt/sparkbox/state/overrides/ersatztv.yml failed to parse /opt/sparkbox/state/overrides/ersatztv.yml: go-yaml load error in scanner (while scanning a simple key) at L5.C1-L6.C1: could not find expected ':' [ERROR] SparkBox's own compose file is fine, so 'sparkbox update' will NOT help — it re-renders our files and never touches yours. [ERROR] Fix the YAML above, or set it aside to start without it: [ERROR] sudo mv /opt/sparkbox/state/overrides/ersatztv.yml /opt/sparkbox/state/overrides/ersatztv.yml.disabled && sudo sparkbox up ersatztv [ERROR] Override format + working examples: docs/PER-APP-OVERRIDES.md
Chris wrote:
Yes — Tunarr is a supported SparkBox app and a good ErsatzTV alternative, and it works with the drives you've already got mounted. Turn it on with sudo sparkbox enable tunarr then sudo sparkbox up, and it'll build channels from those drives. Before you switch, though: your ErsatzTV error is just a typo in the file you hand-edited, not something broken in SparkBox. In /opt/sparkbox/state/overrides/ersatztv.yml one line is missing its colon (that's what "could not find expected ':'" means). Set it aside so ErsatzTV starts fresh: sudo mv /opt/sparkbox/state/overrides/ersatztv.yml /opt/sparkbox/state/overrides/ersatztv.yml.disabled && sudo sparkbox up ersatztv.
rhilyard wrote:
Ok Chris I now have drive 2 mounted. Onto the next steps!
rhilyard wrote:
Chris that would be very helpful if you could walk me through it. From what I can see this is where most get hung up with the install.