Wealthfolio
wealthfolio/wealthfolio:latest
https://hub.docker.com/r/wealthfolio/wealthfolio
bridge
sh
false
https://forums.unraid.net/topic/198598-afadil-wealthfolio/
https://wealthfolio.app
Wealthfolio is a beautiful, open-source, local-first personal finance and investment tracker that keeps all of your data in your own SQLite database with no cloud dependency.
Productivity:
http://[IP]:[PORT:8088]/
https://raw.githubusercontent.com/wealthfolio/wealthfolio-unraid/main/templates/wealthfolio.xml
https://raw.githubusercontent.com/wealthfolio/wealthfolio/main/assets/brand/icon.png
--user=99:100 --health-cmd="wget --quiet --tries=1 --spider http://127.0.0.1:8088/api/v1/healthz || exit 1" --health-interval=30s --health-timeout=10s --health-retries=3 --health-start-period=15s
Buy me a coffee
https://www.buymeacoffee.com/afadil
Wealthfolio is a beautiful, open-source, local-first personal finance and investment tracker. Track investments, net worth, spending, and simulations across multiple accounts and asset types — all stored in your own SQLite database with no cloud dependency.
**Image:** The official `wealthfolio/wealthfolio` image is multi-arch (`linux/amd64` and `linux/arm64`), so it runs on both x86 servers and ARM boards. For predictable upgrades, pin to a specific version tag (e.g. `wealthfolio/wealthfolio:3.4.0`) instead of `:latest`.
### Required configuration
Three variables must be set before the app will start with auth enabled:
1. **WF_SECRET_KEY** — a 32-byte key used to encrypt secrets at rest and sign session tokens. Generate it ONCE and keep it safe:
`openssl rand -base64 32`
Losing this key means losing access to all stored API keys and broker credentials.
2. **WF_AUTH_PASSWORD_HASH** — an Argon2id PHC hash of your login password. Generate it with:
`printf '%s' 'your-password' | argon2 yoursalt16chars -id -e`
Use `printf`, not `echo -n`: `echo` behaves inconsistently across shells and can append a trailing newline, producing a hash that will never match your password. Paste the full `$argon2id$...` string. This is required unless you set `WF_AUTH_REQUIRED=false` (e.g. when a reverse proxy handles authentication).
3. **WF_CORS_ALLOW_ORIGINS** — the exact origin URL you will use to reach the app, matching scheme, host, and port (e.g. `http://192.168.1.10:8088` or `https://wealthfolio.example.com`).
### Permissions (UID override)
The image runs as UID 1000 internally. The template adds `--user=99:100` so the process runs as Unraid's `nobody:users`, keeping files under `/mnt/user/appdata/wealthfolio` owned correctly. If you are upgrading from a version before v3.4.0, fix ownership once after updating:
`chown -R 99:100 /mnt/user/appdata/wealthfolio`
### Backups
Back up the entire `/mnt/user/appdata/wealthfolio` folder (it holds the SQLite database and the encrypted secrets file) together with your `WF_SECRET_KEY`. The database is useless without the key, and the key is useless without the database.
### Documentation
Full Unraid self-hosting guide: https://wealthfolio.app/docs/guide/self-hosting/unraid
https://assets.wealthfolio.app/images/landing/hero-light-v3.png
https://assets.wealthfolio.app/images/landing/performance-dashboard.webp
https://assets.wealthfolio.app/images/landing/investment-tracking.webp
https://assets.wealthfolio.app/images/landing/net-worth.webp
https://assets.wealthfolio.app/images/landing/portfolio-insights.webp
https://assets.wealthfolio.app/images/landing/account-page.webp
8088
/mnt/user/appdata/wealthfolio
true
60
300000
0.0.0.0:8088
/data/wealthfolio.db
text