BudgetOS is a self-hosted web application for managing personal finances. It provides a complete sol
6.6K
1.5.6, 1.5, 1, latestamd64, arm64BudgetOS 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.

# 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.
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
| Variable | Default | Description |
|---|---|---|
SESSION_SECRET | — | Required. Secret key for session encryption |
NODE_ENV | production | Environment mode |
PORT | 3000 | HTTP port |
HOST | 0.0.0.0 | Bind address |
COOKIE_SECURE | false | Set to true behind HTTPS proxy |
| Variable | Default | Description |
|---|---|---|
DB_TYPE | sqlite | Database: sqlite, postgres, or mysql |
DB_PATH | ./data/budgetos.db | SQLite file path (when DB_TYPE=sqlite) |
DB_TYPE=postgres)| Variable | Default | Description |
|---|---|---|
POSTGRES_HOST | localhost | PostgreSQL host |
POSTGRES_PORT | 5432 | PostgreSQL port |
POSTGRES_DB | budgetos | Database name |
POSTGRES_USER | budgetos | Database user |
POSTGRES_PASSWORD | — | Database password |
DB_TYPE=mysql)| Variable | Default | Description |
|---|---|---|
MYSQL_HOST | localhost | MySQL/MariaDB host |
MYSQL_PORT | 3306 | MySQL/MariaDB port |
MYSQL_DB | budgetos | Database name |
MYSQL_USER | budgetos | Database user |
MYSQL_PASSWORD | — | Database password |
| Variable | Default | Description |
|---|---|---|
SMTP_HOST | — | SMTP server hostname |
SMTP_PORT | 587 | SMTP server port |
SMTP_SECURE | false | Use 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 |
To start with sample data for testing:
docker exec budgetos node src/database/seed.js
This creates:
[email protected] / Admin123!| Transactions | Reports |
|---|---|
![]() | ![]() |
| Forecast | Recurring |
|---|---|
![]() | ![]() |
| Bank Import | Categories |
|---|---|
![]() | ![]() |
See all screenshots in the User Guide.
| Document | Description |
|---|---|
| User Guide | Complete guide for end users with screenshots |
| Admin Guide | Installation, configuration, user management |
BudgetOS supports three database backends via Knex.js:
| Database | Best for | Docker Compose Example |
|---|---|---|
| SQLite | Single-user, simple setup | Default (no config needed) |
| PostgreSQL | Production, multi-user | See Admin Guide |
| MariaDB | Production, multi-user | See Admin Guide |
| Path | Purpose |
|---|---|
/app/data | SQLite database file (budgetos.db). Not needed when using PostgreSQL or MariaDB |
/app/uploads | Temporary storage for bank import files (CSV, Excel, QIF, OFX/QFX) |
/app/logs | Application logs (budgetos.log) |
Content type
Image
Digest
sha256:466661462…
Size
119 MB
Last updated
2 days ago
docker pull ppcm/budgetos