Self-host your budget so access, updates, and backups stay in your hands.

Expense Tracker is for people who want private monthly budgeting without connecting bank credentials or depending on a hosted budgeting account.

Backup and Restore screen showing export options and restore preview controls.

Start locally from source, then use a pinned image when you want a steadier install.

Quick local start

$ git clone git@github.com:taimoorq/expense_tracker.git
$ cd expense_tracker
$ cp .env.example .env
$ docker compose up --build

Repeatable production path

Use a versioned image such as ghcr.io/taimoorq/expense_tracker:v0.7.3. When you are ready to update, pull the new image, restart the stack, check the app, and export a fresh backup.

Recommended production habit: pin a release image, keep environment values outside git, export a backup before updates, and check the current month after each deploy.

Self-hosting gives you control, and it also gives you a few jobs.

You choose where data lives

The database, account labels, imports, recurring setup, and backup files live in your deployment.

You choose who can sign in

You decide who can sign in, how the app is exposed, and how credentials and server access are managed.

You choose when to update

Use release notes, pinned images, or a source checkout so updates happen on your schedule.

You verify recovery

Use export, import preview, and sample backups before server moves or upgrades that change how the app is hosted.

Before updates or moves, export a backup you can inspect.

The app includes versioned JSON exports, optional password protection, import previews, and sample backups so you can see what a restore expects.