Sorry, noob here. I have been using Linux for a decade at least, but some basic stuff still stump me. Today, it’s file sharing: The idea is that the server is good at CPU and the NAS is good at storage. My NAS does run Docker but the services are slow; and my server runs a bunch of Docker containers just fine but has limited disk space (SSD).
Want:
- Share a directory on my NAS, so that my homelab server can use it.
- Security is not important; the share does not need to be locked down.
Have:
- Server+NAS are on their own little 1Gb Cisco switch, so network latency should be minimal.
- Linux NAS and Linux server have separate users/UID/GID.
Whatever I try, it always ends up with errors about ‘access denied’ or read-only or something. I conclude that I am not smart enough to figure it out.
Help?
I’m 100% sure that your problem is permissions. You need to make sure the permissions match. Personally, I created a group specifically for my NFS shares then when I export them they are mapped to the group. You don’t have to do this, you can use your normal users, you just have to make sure the UID/GID numbers match. They can be named different as long as the numbers match up.
make sure the UID/GID numbers match
But how? Can I change the numbers?
I totally get that Linux is by design a multi-user system, but it is frustrating to deal with when I am the only person to ever work with these machines. I know that my docker user+group is 1038/66544 but most docker commands require sudo so I am not even sure those values are the right ones. It is so non-transparent what ID’s are in effect, for what commands --and on what machine!-- when I am just me.
Basically when you make a new group or user, make sure that the NUMBER that it’s using matches whatever you’re using on your export. So for example: if you use groupadd -g 5000 nfsusers
just make sure that whenever you make your share on your NAS, you use GID of 5000 no matter what you actually name it. Personally, I make sure the names and GIDs/UIDs are the same across systems for ease of use.
Also, to add to this: you’re setup sounds almost identical to mine. I have a NAS with multiple TBs of storage and another machine with plenty of CPU and RAM. Using NFS for your docker share is going to be a pain. I “fixed” my pains by also using shares inside my docker-compose files. What I mean by that is specify your share in a volume section:
volumes:
media:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.0.0,ro"
device: ":/mnt/zraid_default/media"
Then mount that volume when the container comes up:
services:
...
volumes:
- type: volume
source: media
target: /data
volume:
nocopy: true
This way, I don’t have to worry as much. I also use local directories for storing all my container info. e.g.: ./container-data:/path/in/container