A self-hosted web frontend for Tricount (by bunq), built on top of the unofficial tricount-api.
1.7K
A self-hosted web frontend for Tricount (by bunq), built on top of the unofficial tricount-api Python client.
/health)| Tag | Description |
|---|---|
latest | Latest stable release |
v1.2.3 | Specific release version |
main | Latest commit on main branch (may be unstable) |
Compose files are available in the deploy/ folder of the repository.
git clone https://github.com/geertmeersman/tricount-web.git
cd tricount-web/deploy
mkdir data
docker compose up -d
Open http://localhost:5000 and register the first account — it becomes admin automatically.
Use docker-compose.proxy.yml from the deploy/ folder, or add your own network config. Place behind nginx, Traefik or Caddy with HTTPS.
All data is stored in the mounted ./data/ directory:
| File | Description |
|---|---|
tricount.db | SQLite database — users, tokens, recurring expenses, invites, labels |
Back this directory up regularly. It contains your device credentials and all tricount tokens.
Add these to your .env to enable a weekly balance email every Monday at 08:00.
APP_BASE_URL=https://tricount.yoursite.com
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
[email protected]
SMTP_PASSWORD=your-app-password
[email protected]
Users opt in individually from their Profile page. If SMTP_HOST is not set, the job is skipped silently.
The /health endpoint returns {"status": "ok", "db": true} (HTTP 200) or HTTP 503 when degraded. Add to your compose file:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
interval: 30s
timeout: 5s
retries: 3
This app does not use your Tricount email or password. It connects as an anonymous device (UUID + RSA key pair), generated automatically when you register. Your username and password are local to this web UI only.
Content type
Image
Digest
sha256:18f74850b…
Size
110 MB
Last updated
1 day ago
docker pull geertmeersman/tricount-web