Sorry this isn't a helpful answer but over in Android-land, Syncthing does exactly this for me right now. I paired Syncthing with a script that pushes any new photos to a self-hosted gallery. It's as fast if not faster than Google Photos and totally independent of any Google ecosystem. Add another offsite Syncthing machine and now you have a magical offsite backup.
This is something I really want, but I've never been quite sure how to set it up properly. Ideally I'd want to run it in the cloud so I don't have to be on my home network (and don't have to expose my home network in that way). I have a VPS that I use for a variety of things, but it doesn't have enough space for my photos. Syncthing doesn't seem to support S3 as storage.
I suppose I could put it on a machine at home, and expose it to the internet (perhaps using Wireguard), but I have very limited upload bandwidth (25Mbps), and would still want to sync the files to S3 (say with a script that runs nightly). I guess the initial sync would take forever, and then new photos would be relatively quick.
I guess I could also put it on my VPS and use something like Amazon's NFS service as the backing store. But I expect that would be quite a bit more expensive than the lower-cost S3/Glacier tiers I'd prefer to use.
With that kind of upload speed, I can see why you'd want cloud hosting. I'm paranoid enough to want a local copy so my first instinct is to still sync to home with an inotify script to trickle-push everything to S3 (quicker to start than a nightly script).