I'm currently using HomeGallery[0] behind Authelia[1] for authentication to view so many images effectively. For uploading, I'd been using Nextcloud, but it began to lag noticeably after a few thousand photos. I switched to FileRun[2] with symlink'd photo directories and a user for each family.
With HomeGallery, I get the desired performance on mobile devices with de-duplication and tagging. My instance detects objects fine, but I owe it troubleshooting time to figure out face recognition. The "similar images" feature can be fun with so many photos. A nice tagging modal on keybind per image would be a nice-to-have.
Using FileRun for uploads works fine, but I also needed a continuous cron job for docker exec to generate any missing thumbnails.
[0] https://github.com/xemle/home-gallery (or https://home-gallery.org/)
[1] https://github.com/authelia/authelia (or https://www.authelia.com/)