Bluefin broke jellyfin storage access. How do I fix it?

taltamir

Dabbler
Joined
Aug 2, 2022
Messages
28
I am using Truenas Scale. Until today I was running angelfish and on it I was running jellyfin from truecharts.
I left storage persistance as default (PVC) because anything else breaks the app.
My actual videos are in a different zpool. accessed via "additional app storage"
where I use "hostpath" method to expose /mnt/vids on truenas scale as /mnt/vids on jellyfin jail

I just upgraded truenas to bluefin. now jellyfin won't run nor update.
I tracked down the issue to the "additional app storage" hostpath.
If I disable it I can run jellyfin and update it. but I have no access to my videos.

if I try to re-mount the vids zfs pool by using the "additional app storage" option I get the error:
Error: [EINVAL] chart_release_create.persistenceList.0.hostPath: Invalid path /mnt/vids. Mounting root dataset or path outside a pool is not allowed

Why is it calling it root? my root is on an entirely different zpool called tank.
Or is it thinking that I am mounting it to root on the jellyfin jail?

edit: or wait. could it be forbidden not because of the root thing. but because it is a path out a pool?
why in the world would you forbid using multiple pools? it is crucial for many apps to spread things around or access multiple pools.

Is there any way to fix this?
 
Last edited:

LarsR

Guru
Joined
Oct 23, 2020
Messages
719
You're probably confusing root dataset and system dataset.
The root dataset is the first dataset on every pool. By default the user of that dataset is root and it's permissions can't be changed.
Therefore you have to create a child dataset on the pool and put your files inside the child dataset because the permissions of the child dataset can be changed and edited. Then use the child dataset for shares and additional storage.

Next thing you propably will face is the hostpath validation. It's a safety check to prevent apps from starting if the same path is used as smb share and hostpath to map that share inside apps. This has been discussed multiple times here on the forum since bluefin was released.

There are multiple solutions to that:

1. Disable hostpath validation in your advances Settings of your app system (may cause permission issues if the app alters the permissions on the dataset)
2. If you're using truecharts apps you can switch from hostpath to nfs as described here: https://truecharts.org/manual/SCALE/guides/nfs-share
 

taltamir

Dabbler
Joined
Aug 2, 2022
Messages
28
You're probably confusing root dataset and system dataset.
The root dataset is the first dataset on every pool. By default the user of that dataset is root and it's permissions can't be changed.
Therefore you have to create a child dataset on the pool and put your files inside the child dataset because the permissions of the child dataset can be changed and edited. Then use the child dataset for shares and additional storage.

Next thing you propably will face is the hostpath validation. It's a safety check to prevent apps from starting if the same path is used as smb share and hostpath to map that share inside apps. This has been discussed multiple times here on the forum since bluefin was released.

There are multiple solutions to that:

1. Disable hostpath validation in your advances Settings of your app system (may cause permission issues if the app alters the permissions on the dataset)
2. If you're using truecharts apps you can switch from hostpath to nfs as described here: https://truecharts.org/manual/SCALE/guides/nfs-share
Thank you.

I tried moving the hostpath mountpoint to the various required subdirectories.
that didn't work due to a different error:
Error: [EINVAL] chart_release_create.persistenceList.0.hostPath: Invalid mount '/mnt/vids/movies' path. Following service(s) use this path: SMB Share
So I just went ahead and disabled hostpath safety checks. and now it works.

I will keep the NFS method in mind for other apps too.
But for this case I think I will stick with hostpath. as it lets the app do automatic ACL settings.
which is sometimes necessary for the app to work. NFS share doesn't
 
Last edited:

taltamir

Dabbler
Joined
Aug 2, 2022
Messages
28
2. If you're using truecharts apps you can switch from hostpath to nfs as described here: https://truecharts.org/manual/SCALE/guides/nfs-share
I switched to NFS after all.

I was initially hesitant because I remember that I had to let jellyfin take ownership of the files in order to play them.
With hostpath I do, which is why there is a checkbox to let it take ownership.

With NFS, letting it take ownership is not actually necessary. Making it a cleaner solution.
Also, it means I can now finally delete a file without having to first take ownership of it from jellyfin.

thanks again for the help
 
Top