I use digikam with sidecar files on my main photo editing PC.
We sync this directory with a media server on the local network that enables all of the local devices to access the photos and tags. In theory, it means we could run digikam on another device as well, and sync data between them via updates to the sidecar files, but in practice, we don’t do this and the media server is effectively read only.
Then, we sync the media server images with a photoprism instance that we have running on external hosting. Photoprism recognises the keywords and sidecar data from digikam, which lets me search and access the images from anywhere.
Kinda? My bare bones initial self hosted media streaming setup was put together by my partner. It’s no longer bare bones, because I’ve since upgraded it, added new functionality and I keep it going.