I recently did something like this myself with an RPi 4 and an external drive over USB to replace Google Photos (with PhotoPrism). For tunneling (and custom domain) I used cloudflared which works surprisingly well: https://github.com/cloudflare/cloudflared . I wrote about it here: https://domh.dev/blog/replacing-google-photos-with-photopris... That being said, I love that someone is working on making this stuff easie…
My main concern is that when it comes to self-hosting photos and videos, that's against the TOS for Cloudflare's free tier. If enough people start using it I assume they'll crack down. Bandwidth isn't free.