Basically I have a Navidrome container and it’s pointing at my music in a network mounted folder, what’s the best way to ensure that it’s always there, even after a reboot of my Pi?
Call me old fashioned, but fstab…
Everyone’s saying fstab but if Navidrome is in a docker container, just mount it as a volume on your container. I found this guide that seems to document it fairly well.
https://phoenixnap.com/kb/nfs-docker-volumes
This is how I’m handling NFS mounts in my docker stacks.
So this is my preferred method, but I found the blog post really confusing. Subsequently, it failed.
navidrome: container_name: navidrome image: deluan/navidrome:latest ports: - "4533:4533" environment: ND_SCANSCHEDULE: 1h ND_LOGLEVEL: info volumes: - "/opt/navidrome/data:/data" - "/nfs/Shared Music:/music:ro" - type: volume - source: nfs - target: /nfs - volume: nocopy: true volumes: nfs: driver: local driver_opts: type: nfs o: "addr=XXX.XXX.XXX.XXX,nolock,soft,rw" device: ":/mnt/HD/Public"
What am I doing wrong?
I’m rather confused by the config you posted. The NFS config should all be down in the volumes: section the only thing you reference in the service section is the name of the volume you define and the path to mount in the container. Something like this (tho I’m guessing as to what should be what with your setup).
services: navidrome: container_name: navidrome image: deluan/navidrome:latest ports: - "4533:4533" environment: ND_SCANSCHEDULE: 1h ND_LOGLEVEL: info volumes: - /opt/navidrome/data:/data - music:/music volumes: music: driver_opts: type: nfs o: "addr=XXX.XXX.XXX.XXX,nolock,soft,ro" device: ":/nfs/Shared Music"
Thank you so much.
One more question, do I have to point it directly at the directory I want or can I point it at one above? Reason being, I have a film directory which I will point Jellyfin to too.
You can point it to any nfs file system you have exported on the file server. That’s entirely up to you.
Thank you
Assuming systemd, create a file like
/etc/systemd/system/dir-to-mount.mount
And then configure it per the systemd docs:
https://www.freedesktop.org/software/systemd/man/latest/systemd.mount.html
Then modify the docker unit file to have a dependency on the mount unit so it’s guaranteed to be up before docker starts.
Is this method superior to fstab?
I’ll let you in on a little secret: Fstab gets converted to mount units anyways.
It has the benefit that the container can’t start before the mount point is up without any additional scripts or kludges, so no race conditions or surprise behaviour. Using fstab alone can’t provide that guarantee. The other option is Autofs but it’s messier to configure and may not ship out of the box on modern distros.