I can’t answer all of it, but much of what you’re asking for can be accomplished with a simple samba share. If you can handle nextcloud, you can set up samba.
It’s perfectly reasonable to use the same device to run your web services and as your NAS. There’s no reason you can’t divide them up later if you want.
You’ll need to pick a file system, I suggest either BTRFS or ZFS though there are several options. BTRFS is neat because it’s flexible - you can make huge changes without ever dismounting. You’ll want to plan for a multiple-drive solution, and you’ll need to decide how you’d like to balance performance, space efficiency, and failure tolerance. Whatever you do, pick one single drive size and stick with it – different disk sizes xan work, but there are restrictions and they complicate things.
A good backup is automatic, versioned, and encrypted. You preferably want one offsite and one onsite for anything irreplaceable. Restic is a good tool, as is Borg backup, as are many other options. Personally I run a restic job nightly, with backblaze b2 as a destination. I also have a local backup on normally-unplugged drives that I run manually every couple weeks.
For plumbing, tailscale is really nice. Easy to set up, and you get remote access to everything with minimal config and no holes in your firewall.
Regarding hardware, you have many options. Old laptops actually make great homelabs:
Their biggest drawback is a lack expandability/upgradability, though you can get pretty good USB drive bays to partially address that. Another option is the intel NUC family and its competitors, basically tiny desktops built out of laptop parts. A third option is to build a normal desktop PC, either into a normal case or a rack-mount one if you have the space. The off-the-shelf options work, but are limiting in my experience. That said, they’re the way to go if you don’t want to do a lot of tinkering.
Whichever solution you go with, personally I wouldn’t start with any less than 4 drive bays. More is better, you can’t have too many. You should be able to shuck your old drives and put them into any 3.5" drive bay.
For reference, my setup is an intel NUC with a thunderbolt 10 drive bay plugged in. I have a mishmash of disks, ~48tb total in BTRFS raid 1giving me 24tb usable. Running a good handful of docker containers and a samba share, all accessible over tailscale.
Sorry for the info dump, happy to answer questions.
I’m currently on photoprism like you, but I am looking to switch to immich.
I solved the sharing problem by having a family-only instance locally (accessible via tailscale), connected via WebDAV to a public instance on a cheap VPS (which I also use for other things). We have to share twice, but I don’t have any holes in my firewall. Currently I don’t believe immich can do something like this, but I’d love to be proven wrong
Neurospicy