Sign inSign up

ppcm/budgetos

By ppcm

•Updated 4 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

7.0K

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_SECRET—Required. 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_PASSWORD—Database password
⁠MariaDB / MySQL (when DB_TYPE=mysql)
VariableDefaultDescription
MYSQL_HOSTlocalhostMySQL/MariaDB host
MYSQL_PORT3306MySQL/MariaDB port
MYSQL_DBbudgetosDatabase name
MYSQL_USERbudgetosDatabase user
MYSQL_PASSWORD—Database password
⁠SMTP / Email (optional)
VariableDefaultDescription
SMTP_HOST—SMTP server hostname
SMTP_PORT587SMTP server port
SMTP_SECUREfalseUse SSL/TLS (true for port 465)
SMTP_USER—SMTP authentication username
SMTP_PASS—SMTP authentication password
SMTP_FROM—Sender email address
APP_URL—Public 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 Guide⁠Complete guide for end users with screenshots
Admin Guide⁠Installation, 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:26be33bab…

Size

119.1 MB

Last updated

4 days ago

docker pull ppcm/budgetos