Self-Hosting Guide

Run Expense Budget Tracker on your own server with Docker Compose and Postgres.

Requirements

  • Docker and Docker Compose
  • Postgres 18 (included in the Compose file)

Quick Start

git clone https://github.com/kirill-markin/expense-budget-tracker.git
cd expense-budget-tracker
cp .env.example .env
make up

This starts Postgres, runs migrations, and launches:

  • the web app at http://localhost:3000
  • the auth service at http://localhost:8081
  • the FX worker in Docker Compose

Configuration

Copy .env.example to .env and adjust:

  • MIGRATION_DATABASE_URL — owner role used by migrations
  • DATABASE_URL — app role for the web process
  • AUTH_DATABASE_URL — auth schema role for the auth service
  • AUTH_MODEnone for local use, cognito for email OTP environments
  • AUTH_DOMAIN, COOKIE_DOMAIN, and ALLOWED_REDIRECT_URIS — auth routing and cookies

When AUTH_MODE=cognito, you also need the Cognito settings and SESSION_ENCRYPTION_KEY from .env.example.

Updating

git pull
make up

Docker Compose rebuilds the services and reruns migrations through the migrate container.

AWS Deployment

For production deployment on AWS (ECS Fargate + RDS + ALB + Cognito), see the AWS CDK guide.