My solution is to use GnuCash with a git repository. I then use Google Keep to make notes of expenses on the go and once every few weeks I copy them in to the accounts. That way I get the full power of accounting software, with control of my data.
You can actually use gnucash with pgsql. It's centralized, but nobody wants to deal with merge conflicts on a sqlite database anyways.
If I had free time, I might cook up a web interface to add minor expenses with. But that's sort of the nature of gnucash -- those with cash to track typically have less time to track it with ^_^.