I did used to use Mylio [1] which is a really lovely solution that uses a sort of internal P2P approach - your images don't go near a cloud host if you don't want them to. It just keeps your "vaults" updated with each other - a vault can be on a NAS / desktop / mobile. The issue I had with it was that the mobile scenario is a bit shonky - required you to have your phone on at the same time as one of your other vaults in order to sync mobile photos, and that proved too fiddly to maintain.