I believe Ente supports all of this, and can be self-hosted. All of the AI stuff is done locally.
I pay them for service/storage as it’s e2ee and it doesn’t matter to me if they or I store the encrypted blobs.
They also have a CLI tool you can run from cron on your NAS or whatever to make sure you have a complete local copy of your data, too.
https://ente.io - if you use the referral code SNEAK we both get additional free storage.