I have used Piwigo for this purpose the past 3.5 years. It’s running on a tiny Odroid HC-2 and solid state drive. The same device also runs Emby for video streaming. I started it with a free sub domain from afraid.org. I migrated to a real domain later. To run two services from one domain name you also need a reverse proxy and SSL certificate renewal, like SWAG or NGINX Proxy Manager or Zoraxy.
The main thing I’ve learned is keeping everything isolated repeatable. On my Odroid I learned to use Docker and Portainer for the apps. But there were a couple times I broke everything through updates/upgrades. Now I have a small Intel N305 (Minsforum UN305C), running ProxMox VE, and apps in Linux containers. The first I set up myself to learn but later I discovered some open source helper scripts https://tteck.github.io/Proxmox/. ProxMox seems a bit more complex than Docker/Portainer, but more flexible.
I’m using IPv4 only but I’m migrating to IPv6 soon to help with in-network routing to my domain. My advice would be unless you want to host your own DNS and override your domain to resolve to LAN, just use your IP:port on LAN and use the domain only outside your home.