Lazy Beancount is Beancount accounting system packaged in Docker with batteries included:
- Fava with fava-dashboards
- Beancount-import for automatic transaction categorisation and review UI:
- Importers set up to work out of the box:
- Wise, Monzo, Revolut, IBKR (Evernight/beancount-importers, uabean)
- more importers can be integrated/enabled on request
- configuration for multiple accounts using YAML config
- UI for statement file upload
- Importers set up to work out of the box:
- Additional web interfaces (Streamlit-based) for:
- regularly providing total values of the accounts for automatic balancing
- fetching currency/commodity prices
- Pre-installed plugins:
- Configuration generator supporting any number of accounts (cash, investments, savings, crypto), multiple currencies and auto-conversions
- Extensive configuration example with comments, including common useful shortcuts and solutions to common problems
- All tested together (manually) in a coherent setup
with the goal to enable gradual and incremental migration of personal finances into Beancount.
Full guide is located at https://lazy-beancount.xyz/. The approach follows these principles:
- Some of the values should be tracked precisely (e.g. net worth)
- Other things are an approximation (e.g. in expenses breakdown, unclassified or some misclassified entires are ok)
- Data entry should be automated or easy
- But it should be possible to track things to any level of precision if you choose to
git clone https://github.com/Evernight/lazy-beancount
cd lazy-beancount/example_data
env UID=$(id -u) GID=$(id -g) docker compose up
This will pull repository with the example and config templates, and also pull and run the latest version of the package from the Docker Hub. After this is done, go to http://localhost:8777/.
Fava is also available on port 5003, importer interface is available on port 8101 (ports are overridable via config in docker-compose.yml).
On Mac you can also remove user
parameter from docker-compose.yaml
and just use docker compose up
You can pull image from the public repository:
docker pull vandereer/lazy-beancount:latest
or build it yourself:
git clone https://github.com/Evernight/lazy-beancount
cd lazy-beancount
docker build . -t vandereer/lazy-beancount:latest
To start, run:
./lazy_beancount.sh example_data
Use ./lazy_beancount.sh data
when you want to start adding your own data under the data
directory.
Commands are available in the container as:
docker exec -it lazybean bean-price example_data/main.bean -i --date=2024-01-05
You can also run container using Podman, via lazy_beancount_podman.sh
script.
If you want to be able to upgrade individual packages and experiment with other (and your own) plugins or additional importers, you may go down this route.
First, clone this repository into your desired location
git clone https://github.com/Evernight/lazy-beancount
cd lazy-beancount
Install conda
brew install miniconda
Then create and activate the environment
conda create -n lazy-beancount-env python=3.12.3
conda activate lazy-beancount-env
Install required packages in the environment
pip3 install -r requirements.txt
Run Fava on your ledger from the repository folder
PYTHONPATH=PYTHONPATH:. fava main.bean
Go to http://127.0.0.1:5000 and explore Fava.
I'd not recommend exposing the ports, various system and data through a public server unless you really know what you're doing. This setup has not been developed and tested for security and authentication when run as a public service.
This is mostly an integration project and would not have been possible without all of the great code from authors and contributors of all the repositories mentioned above, the Beancount and plain text accounting community. Please support, star and otherwise contribute to respective projects.
- Feel free to create an issue or contribute a fix.
- lazy-beancount.xyz has giscus connected to enable commenting directly at pages.
- matrix chat for small questions.