Sign inSign up

ppcm/budgetos

By ppcm

Updated 2 days ago

BudgetOS is a self-hosted web application for managing personal finances. It provides a complete sol

Image
Web servers
Content management system
Web analytics
0

6.6K

ppcm/budgetos repository overview

BudgetOS

Self-hosted personal finance management for individuals and families

Docker Node.js SQLite PostgreSQL MariaDB License


Supported Tags

  • 1.5.6, 1.5, 1, latest

Quick Reference


What is BudgetOS?

BudgetOS is a self-hosted web application for managing personal finances. It provides a complete solution for tracking bank accounts, credit cards, transactions, and generating financial reports.

Dashboard

Key Highlights
  • Multi-user support with role-based access control
  • Multi-database support (SQLite, PostgreSQL, MariaDB)
  • Bank import from CSV, Excel, QIF, OFX/QFX files
  • Automatic categorization with customizable rules
  • Financial reports with trends, forecasts, and category breakdowns
  • Multilingual interface (English, French, German, Spanish, Italian, Portuguese, Russian, Chinese)

Features

Core Finance
  • Bank Accounts — Checking, savings, investment, and credit card accounts with color coding
  • Transactions — Full CRUD with search, filters, sorting, date ranges, and expandable details
  • Credit Cards — Immediate and deferred debit types with customizable billing cycles
  • Recurring Transactions — Scheduled operations with multiple frequencies
Import & Reconciliation
  • Bank Import — CSV, Excel (.xlsx), QIF, OFX/QFX file support with smart column mapping
  • Auto-Reconciliation — Duplicate detection and automatic matching
  • Manual Reconciliation — Dedicated mode for reconciling against bank statements
Organization
  • Categories — Three-column layout (Income, Expenses, Transfers) with icons and colors
  • Payees — Manage merchants and beneficiaries with logos and alias learning
  • Categorization Rules — Automatic transaction classification
Analytics
  • Dashboard — Financial overview with balance summary and recent transactions
  • Trend Reports — Income vs. expenses bar chart over 12 months
  • Category Reports — Spending breakdown with donut chart
  • Forecast — Cash flow projections at 30, 60, and 90 days
Administration
  • Multi-User — Role-based access control (Super Admin, Admin, User)
  • User Management — Create, edit, suspend users
  • Group Management — Organize users into groups
  • System Settings — Public registration toggle, default group configuration

Quick Start

# Create data directory
mkdir -p budgetos-data

# Run with Docker
docker run -d \
  --name budgetos \
  -p 3000:3000 \
  -v $(pwd)/budgetos-data:/app/data \
  -e SESSION_SECRET=your-secret-key-change-me \
  ppcm/budgetos:latest

Open http://localhost:3000 and create your admin account.

Using Docker Compose

Create a docker-compose.yml file:

services:
  budgetos:
    image: ppcm/budgetos:latest
    container_name: budgetos
    ports:
      - "3000:3000"
    volumes:
      - ./data:/app/data
      - ./uploads:/app/uploads
      - ./logs:/app/logs
    environment:
      - SESSION_SECRET=your-secret-key-change-me
      - NODE_ENV=production
    restart: unless-stopped

Then run:

docker compose up -d
Environment Variables
General
VariableDefaultDescription
SESSION_SECRETRequired. Secret key for session encryption
NODE_ENVproductionEnvironment mode
PORT3000HTTP port
HOST0.0.0.0Bind address
COOKIE_SECUREfalseSet to true behind HTTPS proxy
Database
VariableDefaultDescription
DB_TYPEsqliteDatabase: sqlite, postgres, or mysql
DB_PATH./data/budgetos.dbSQLite file path (when DB_TYPE=sqlite)
PostgreSQL (when DB_TYPE=postgres)
VariableDefaultDescription
POSTGRES_HOSTlocalhostPostgreSQL host
POSTGRES_PORT5432PostgreSQL port
POSTGRES_DBbudgetosDatabase name
POSTGRES_USERbudgetosDatabase user
POSTGRES_PASSWORDDatabase password
MariaDB / MySQL (when DB_TYPE=mysql)
VariableDefaultDescription
MYSQL_HOSTlocalhostMySQL/MariaDB host
MYSQL_PORT3306MySQL/MariaDB port
MYSQL_DBbudgetosDatabase name
MYSQL_USERbudgetosDatabase user
MYSQL_PASSWORDDatabase password
SMTP / Email (optional)
VariableDefaultDescription
SMTP_HOSTSMTP server hostname
SMTP_PORT587SMTP server port
SMTP_SECUREfalseUse SSL/TLS (true for port 465)
SMTP_USERSMTP authentication username
SMTP_PASSSMTP authentication password
SMTP_FROMSender email address
APP_URLPublic URL for email links
Demo Data

To start with sample data for testing:

docker exec budgetos node src/database/seed.js

This creates:

  • Admin account: [email protected] / Admin123!
  • Sample accounts, categories, and transactions

Screenshots

TransactionsReports
TransactionsReports
ForecastRecurring
ForecastRecurring
Bank ImportCategories
ImportCategories

See all screenshots in the User Guide.


Documentation

DocumentDescription
User GuideComplete guide for end users with screenshots
Admin GuideInstallation, configuration, user management

Database Support

BudgetOS supports three database backends via Knex.js:

DatabaseBest forDocker Compose Example
SQLiteSingle-user, simple setupDefault (no config needed)
PostgreSQLProduction, multi-userSee Admin Guide
MariaDBProduction, multi-userSee Admin Guide

Volumes

PathPurpose
/app/dataSQLite database file (budgetos.db). Not needed when using PostgreSQL or MariaDB
/app/uploadsTemporary storage for bank import files (CSV, Excel, QIF, OFX/QFX)
/app/logsApplication logs (budgetos.log)

License

PolyForm Noncommercial 1.0.0

Tag summary

Content type

Image

Digest

sha256:466661462

Size

119 MB

Last updated

2 days ago

docker pull ppcm/budgetos