When it comes to personal finance for long time I was using YNAB. The budgeting app based on zero based budget. I was YNAB user when it was a desktop app. I liked the fact that it was one-time purchase. But in 2015 the YNAB was rewritten in a SAAS application and switched to subscription model and currently it costs $99 annually. Me personally I think it is too much for such an app and I am not feeling comfortable with putting my financial data to online YNAB.
Plain text accounting
For some time I was using still YNAB as desktop app, but with some MacOS update the app does not longer run. So I was looking for other software. After YNAB I discovered plain text accounting.
Plain text accounting is a way of doing bookkeeping and accounting with plain text files and scriptable, command-line-friendly software, such as Ledger, hledger, or Beancount. (Quote from plaintextaccount.org)
At first I was using hledger, then I switched to Beancount. But although they are great tools, I found that they are really good at looking into the past, but it is not that easy to budget the available money.
While searching for envelope based extension to plain text accounting apps, I discovered Actual Budget . I was really grateful to the creator James Long of the software and the contributors. In the past I even tried to recreate YNAB on my own, so I can appreciate how good Actual is.
Actual is open source, the data lives where you want - locally, on NAS, on homelab cluster, in the cloud, you name it. But the most important fact is that I have control about it.
Running on local
The install is as easy as running, you don’t need anything more than Docker.
Of course you can also run it as npm app.
Running on Kubernetes cluster
When it comes to deploying on k8s, it is not difficult. What is needed is
In my homelab I am using Traefik proxy with IngressRoute CRD, but any other will work.
Please be aware that although there is password needed for login to access Actual Budget, it is not required to authenticate to access example.com/data/default-db.sqlite. As you can see I am using a traefik-forward-auth middleware. It uses this service to provide Google/OpenID oauth based login and authentication. This way your data will be secure and not accessible.