====== Kresus ======
===== What is it ? =====
> Kresus is a free & libre personal management software which runs on your server.
In a few words, that's how we can resume the purpose of this application. Fore more details, please visit
https://kresus.org/en/
You can find there all features of the app and a few tutorials.
So you could ask why I am doing this web page then ? Well, because:
- my use case does not really match the app design. I mean I don't use it for a personal account, I don't get automatic feed from internet but I do use it for a 4-to-8-shared-users account.
- I share a few tips and give my feedback to thank people who worked on this app and still do.
===== How to test locally first ? =====
To start the app locally (on your Debian 12 laptop like me :-) ), you can reuse this tiny script which contains the strict minimum.
# Create workspace folder
mkdir -p ~/workspace/sandbox/kresus
# Go into it
cd ~/workspace/sandbox/kresus
# Create compose.yaml file
cat << EOF > compose.yaml
services:
db:
image: "postgres:16.11"
restart: unless-stopped
env_file:
- path: ./.env
required: true
volumes:
- postgres_data:/var/lib/postgresql/data/
kresus:
image: "bnjbvr/kresus:0.23.5"
restart: unless-stopped
ports:
- 9876:9876
depends_on:
- db
env_file:
- path: ./.env
required: true
volumes:
postgres_data:
EOF
A few comments about choices I've made (quite different from [[https://framagit.org/kresusapp/kresus/-/blob/main/support/docker-compose/docker-compose.yml?ref_type=heads|official compose file]]):
- I did not use apprise to notify anything because I don't need it.
- I removed the traefik proxy section since I already have a proxy in my future production environment.
- I do have only one persistent docker volume for the database because I don't use woob to retrieve any data from internet.
- Finally I use to use environment file instead of inline variables. Here is an example below.
cat << EOF > .env
POSTGRES_USER=kresus
POSTGRES_PASSWORD=OeSoh9Dob6phahWa
POSTGRES_DB=kresus
LOCAL_USER_ID=1000
KRESUS_DB_TYPE=postgres
KRESUS_DB_HOST=db
KRESUS_DB_PORT=5432
KRESUS_DB_USERNAME=kresus
KRESUS_DB_PASSWORD=OeSoh9Dob6phahWa
KRESUS_APPRISE_API_BASE_URL=http://apprise:8000
KRESUS_EMAIL_TRANSPORT=smtp
KRESUS_EMAIL_FROM=kresus@domain.com
KRESUS_EMAIL_HOST=localhost
KRESUS_EMAIL_PORT=25
KRESUS_EMAIL_USER=kresus
KRESUS_EMAIL_PASSWORD=kresus
EOF
Then you can start the stack and browser the app.
sudo docker compose up -d
firefox http://localhost:9876
===== Feedback =====
- It works and fulfills what I was looking for. Plus it is self-hosted so I love it :-) :-)
- I did quick test on smartphones and it seems to work well too. Very appreciated even if it was not on my wish list.
- My main expectations for this app were:
- Categorize money input/output
- View account balance in different time windows.
- Make queries with different criteria (dates, tags, categories...)
- All those points above are present and working, that's why I put kresus into my production environment. ;-)
- Some suggestions of improvement:
- Be able to create accounts as we want. By default, the app creates 3 accounts that we can only delete or rename. Weird 8-o
- Manage yearly budget instead or in addition to monthly budget.
- Make custom views in read only and shareable mode.
- Last but not least: when we setup a recurrent debit, then be able to create them for the full year in order to see the expected balance for the year,
Thanks to core devs for this great tool!