I am looking for software with features that can handle a multi user/group/volume setup for cross photo app sharing. Below is an example of my architecture:
Drives 1 & 2 (setup in RAID 1 using mdam)
Access is limited to users 1 & 2
Given its own photos App Library/directory for uploads
Users 1 & 2 are the primary account/server owners
Drives 3 & 4 (setup in RAID 1 using mdam)
Access is limited to users 3 & 4
Given its own photos App Library/directory for uploads
Is something like this possible with NextCloud. I’ve seen recommendations range from using symlinks or the external drive management app, but they all mention folder structures and not the photos app. In the end I would like each user to open the iPhone application and sync/view their assigned storage space for photos.
Can you explain why you need two different storages? Cant you just use group folders? Also if some isolation between the two groups is required, you can check the admin settings for sharing (there the privacy and share within groups). If each user is supposed to have their own photo gallery/library, there is no need for these shared options (group folders or external storage, see below). Its trivial to share images between users in nextcloud, they don’t need to be on the same shared root directory.
Could you expand on the cross photo app sharing? What more concretely do you want to do? Cause there is the nextcloud memories which is an awesome photo gallery app, that does not touch the photo folder structure, so it should not affect any other programs looking at the files from example synced folders on a pc…
If you prefer to use that two volumes setup, yes you can “mount” these into nextcloud using external storage (specifically the local external storage option), and yes access to those can be limited to certain users or groups.
If you will do changes to the files outside of the nextcloud ecosystem, its best to mount the volumes this way (trough external storage) as nextcloud checks for changes with less assumptions about the state.
The built in albums/photos app is inferior to nextcloud memories, and should only be installed to obtain the album functionality (it can be hidden from the app-bar with custom-css).
Syncing of images to nextcloud can be done trough many means, such as the official apps/clients (though last i checked ios and android did not have proper two-way sync), outside apps supporting webDAV or nextcloud specifically such as Foldersync (for good two way sync) or even gallery apps directly…
Users choose themselves where they upload images, there is no weird forced folder-structure (or “photo library”) as in immich for example (both photos app and nextcloud memories have per user configurable source folder(s)). Unless photos are uploaded to groupfolders or shared external storage, photos reside in each users own file structure, just as any file, and each user can structure it how they want.
I know it would be entirely simpler to have 1 large drive setup with RAID 1 and to place user restrictions but I have two smaller drives given to me by users 3 & 4 that I would like to reuse. Those users only need 500GB and I already have 2 1TB drives for users 1 & 2. So it’s mostly about maximizing drives. This also allows users 3 & 4 purchase their own drive upgrades.
It is perhaps not really recommended. But you can find the group folders under /path/to/nextcloud/data/__groupfolders/[nr]. You can create it first, find it with a test file and then move it to another partition and set a soft link. Make sure that the authorisation is www-data:www-data. I don’t know if you need to run an occ files:scan --all. Note that, for example, the image preview, versions and the recycle bin are not on the second partition.
I have not tried it either. I think it is not a good idea.
Alternative. Why don’t you set up a Nextcloud https://cloud1.server.tld and a Nextcloud https://cloud2.server.tld? The users of the two groups can either share via federation via the servers or you can also set up the user of the second group on the first Nextcloud with a minimum quota. I would personally prefer that.
Set up one Nextcloud instance per storage pool, as @devnull already suggested, or maybe even better, one per “customer” or family.
mount the second pool via an external storage app, but this may have certain drawbacks depending on the individual use cases of your users, and a certain amount of storage on the first pool must/should still be allocated to each user.
use a NAS system such as Unraid, which allows you to create pools of unevenly sized disks and gradually add more disks.
buy larger disks to create a sufficient storage pool, and spread the cost proportionally among your users
Don’t host a Nextcloud instance for others
And to be honest, I would really think long and hard about point 5, because no offense, but it sounds to me like you are on a rather tight budget, and I wonder if you can guarantee a certain level of reliability, availability, and most importantly, backups! (and no, RAID is not backup)
If you want that, I would defintly go with one Nextcloud instance per user/family.
I will definitely consider a NextCloud instance per family. I initially got into NextCloud using the snap install (which I normally don’t use snap), but it made it easier to get used to.
I was able to setup a single instance and use the external storage to point to two different mdadm arrays. With permissions I was then able to restrict their access. I tested this and both families can now sync their iPhotos to their respective drive.
As to point 5 I entirely agree, and that goes beyond just IT. As any IT family situation goes it does fall on someone lol. I also forgot to mention that each mdadm array with have a daily rsnapshot backup to a “true” external hard drive that I also have multiples of.