WYGIWYH
Opinionated, no-budget personal finance tracker with multi-currency support
Alternative to: ynab, mint, monarch money, actual budget
WYGIWYH (What You Get Is What You Have) is a principles-first finance tracker for people who prefer a no-budget, straightforward approach to managing money. It offers multi-currency accounts, custom currencies, automated transaction rules, a built-in dollar-cost-averaging tracker, and an automation-ready API, all through a self-hosted web app.
WYGIWYH Docker Compose example
Self-host WYGIWYH on your own server, homelab, or VPS starting from this Docker Compose example.
It runs WYGIWYH in Docker containers using the official eitchtee/wygiwyh:latest, postgres:15-bookworm images, with persistent volumes and automatic restarts preconfigured.
Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.
services:
web:
image: eitchtee/wygiwyh:latest
depends_on:
- db
environment:
# Timezone used by scheduled/async tasks
TZ: "UTC"
# Enable Django debug mode — keep false in production
DEBUG: "false"
# Public URL where users reach WYGIWYH (used for CSRF/allowed origins)
URL: "changeme"
# Whether the app is served over HTTPS
HTTPS_ENABLED: "true"
# Secret key used to sign sessions and tokens
SECRET_KEY: "changeme"
# Space-separated list of allowed hostnames
DJANGO_ALLOWED_HOSTS: "localhost 127.0.0.1 [::1]"
# PostgreSQL database name
SQL_DATABASE: "wygiwyh"
# PostgreSQL user
SQL_USER: "wygiwyh"
# PostgreSQL password
SQL_PASSWORD: "changeme"
# PostgreSQL host (service name on the compose network)
SQL_HOST: "db"
# PostgreSQL port
SQL_PORT: "5432"
# Number of Gunicorn worker processes
WEB_CONCURRENCY: "4"
# Number of background task workers (single-container mode)
TASK_WORKERS: "1"
volumes:
- media:/usr/src/app/attachments/
restart: unless-stopped
db:
image: postgres:15-bookworm
environment:
POSTGRES_DB: "wygiwyh"
POSTGRES_USER: "wygiwyh"
POSTGRES_PASSWORD: "changeme"
volumes:
- postgres_data:/var/lib/postgresql/data/
restart: unless-stopped
volumes:
media:
postgres_data:
Values set to changeme are required — replace them with your own
values before starting WYGIWYH.
Prefer a managed setup? WinterFlow installs, configures, and updates WYGIWYH for you using this same Docker Compose configuration.