I would particularly be interested in self-hosted solutions that still support image recognition, which is very useful for large libraries. Does such a thing even exist?
(Or, for optimal performance, the hybrid solution: put the library in a sparsebundle disk image, put that on the NAS, and then mount the disk image over SMB. This is what Time Machine does under the covers, because it vastly improves the overhead of filesystem operations over directly manipulating the files in SMB.)
(It's also frustrating that the VoiceOver image recognition is far superior to Photos', but is inaccessible to the Photos app.)