ezBookkeeping

stack Finance

Personal finance app for logging what you spend and earn across accounts and currencies, with receipt photos, scheduled transactions and charts. Imports bank statement files, GnuCash and Firefly III, and installs on a phone like an app.

Install ezBookkeeping

It isn't in the main Portainer Templates list yet, so use this one. Portainer takes one URL at a time, so it swaps out whatever list you had before.

In Portainer, head to Settings --> App Templates, paste this in as the URL and save.

https://raw.githubusercontent.com/NotAFlightRisk/portainer-templates-extras/main/templates.json
  1. Open App Templates and pick ezBookkeeping.
  2. Fill in Secret key and Database password. Everything else can stay as it is.
  3. Hit Deploy the stack, then open http://<your-server>:8100 in a browser.

Before you start

Set both secrets before you deploy (openssl rand -hex 32 makes good ones), since the stack won't start without them, and keep them the same when you redeploy. Put the address you'll actually type in the browser in the address field too, or receipt photos won't load. Then open http://<your-host>:8100 (or whichever port you picked) and create an account. Tick Use Preset Transaction Categories on the second step, or you start with none. Every account gets its own separate books, but sign-ups stay open, so once you've made yours add EZBOOKKEEPING_SIGNUPS = false to the stack's environment variables and update the stack. Exchange rates come from the European Central Bank, and maps load from OpenStreetMap. Everything lives in Postgres, in the postgres-data volume, with receipt photos and avatars in ezbookkeeping-storage. Docs: ezbookkeeping.mayswind.net

Settings

What the Portainer form asks for. With compose they go in the .env file instead.

VariableWhat it's forDefault
EZBOOKKEEPING_SECRET_KEYSecret key (required) Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or two-factor logins stop working. Needs filling in
EZBOOKKEEPING_DB_PASSWORDDatabase password (required) Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or ezBookkeeping can't reach its database. Needs filling in
EZBOOKKEEPING_PORTHost port for the web UI 8100
EZBOOKKEEPING_URLAddress you'll open it on Like http://192.168.1.10:8100/. Receipt photos, profile pictures and the phone QR code all point here, so they break on any other address. http://localhost:8100/

Services

The containers this stack runs, with ports as they come out of the box.

ServiceImagePorts
ezbookkeepingmayswind/ezbookkeeping:latest8100:8080
postgrespostgres:17-alpineInternal only

More apps