Comment on Using Immich in combination with NAS permissions

PeriodicallyPedantic@lemmy.ca ⁨1⁩ ⁨day⁩ ago

Yes, except for the NAS user ownership of those files.

I think there might be a way to do the file ownership too, which I’ll get to at the end, but I don’t think its necessary. for now here is my setup:

First off, you need to be using Storage Templates.
Second, you need to have either a fresh install, or users need to be set up with storage labels that aren’t their intended final storage labels.

In docker, you’ll need to set up an external NFS volume for every user. I use portainer to manage my docker stacks, and its pretty easy to set up. I’m not sure how to do it with raw docker, but I dont think its complicated.

in your docker compose files, include something like this

services:
  immich-server:
    # ...
    volumes:
      - ${UPLOAD_LOCATION}:/data
      - /etc/localtime:/etc/localtime:ro
     - type: volume
        source: user1-share
        target: /data/library/user1-storage-label
        volume:
          subpath: path/to/photos/in/user1/share
    - type: volume
        source: user2-share
        target: /data/library/user2-storage-label
        volume:
          subpath: path/to/photos/in/user2/share
    # and so on for every user
  # ...

volumes:
  model-cache:
  user1-share:
    external: true
  user2-share:
    external: true
  # and so on for every user

There are 2 things about this setup:

  1. it does not scale automatically. this is fine as long as you don’t intend to be adding/removing users often.
  2. it is only saving the photos and videos. all thumbnails and transcoded videos, etc, get saved to ${UPLOAD_LOCATION}. For me this is fine, I dont want to pollute my NAS with a bunch of transient data, but if you want that info then for every user, in addition to the target: /data/library/user1 target you’ll also need a target: /data/thumbs/user1, target: /data/encoded-video/user1, etc.

finally, redeploy, and add your users (making sure that the user’s storage labels match the target directories) or change your user storage labels (to match the target directories, and run the migration job). the storage label must not have existed before you deployed, otherwise it’ll get masked by the mount and you wont see the existing data.

You may also want to add similar volumes for external libraries (I gave every user an external “archive” library for their old photos) like this:

    - type: volume
        source: user1-share
        target: /archive/user1-storage-label
        volume:
          subpath: path/to/photo/archive

and once immich allows sharing external libraries (or turning external libraries into sharable albums) I’ll also include a volume for a shared archive.

To address the file ownership:\n I honestly don’t think its important, as long as your user has full access to the files, its fine. But if you insist then you have a separate share for every user and set up the NFS server for that share to squash all to that share’s user. Its a little less secure, but you’ll only be allowing requests from that single IP, and there will only be a request from a single user from that server anyways.
Synology unfortunately doesn’t support this, they only allow squashing to admin or guest (or disable squashing).

source
Sort:hotnewtop