Installation Guide
Deploy BillManager on your own infrastructure using Docker.
This section is for administrators who want to run their own BillManager instance. If you're using the hosted version at app.billmanager.app, you don't need this guide.
Prerequisites
- Docker and Docker Compose installed
- PostgreSQL database (included in Docker Compose, or use your own)
- A domain name (optional, for production deployments)
Quick Start
1. Create docker-compose.yml
services:
billmanager:
image: ghcr.io/brdweb/billmanager:latest
ports:
- "5000:5000"
environment:
- DEPLOYMENT_MODE=self-hosted
- DATABASE_URL=postgresql://billsuser:your-db-password@db:5432/billmanager
- FLASK_SECRET_KEY=your-secret-key-here
- JWT_SECRET_KEY=your-jwt-secret-here
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
- POSTGRES_USER=billsuser
- POSTGRES_PASSWORD=your-db-password
- POSTGRES_DB=billmanager
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
postgres_data:
2. Generate Secure Keys
Generate secure random keys for your installation:
# Generate FLASK_SECRET_KEY
openssl rand -hex 32
# Generate JWT_SECRET_KEY (required for production!)
openssl rand -hex 32
# Generate database password
openssl rand -hex 16
Replace the placeholder values in docker-compose.yml with your generated keys.
In production, JWT_SECRET_KEY (or FLASK_SECRET_KEY) must be explicitly set. The application will refuse to start without it.
3. Start the Application
docker-compose up -d
4. Get Your Admin Password
On first startup, BillManager creates a default admin account with a randomly generated secure password. This password is printed to the container logs.
docker-compose logs billmanager | grep -A 5 "INITIAL ADMIN CREDENTIALS"
You will see output like:
============================================================
🔐 INITIAL ADMIN CREDENTIALS (save these now!)
Username: admin
Password: xK9mP2vL7nQr3wYz
You will be required to change this password on first login.
============================================================
The initial admin password is only shown once during first startup. Save it immediately!
5. Access BillManager
- Open your browser and navigate to
http://localhost:5000 - Log in with username
adminand the password from the logs - You will be required to change the password on first login
Using Your Own Database
If you have an existing PostgreSQL server:
services:
billmanager:
image: ghcr.io/brdweb/billmanager:latest
ports:
- "5000:5000"
environment:
- DEPLOYMENT_MODE=self-hosted
- DATABASE_URL=postgresql://user:password@your-db-host:5432/billmanager
- FLASK_SECRET_KEY=your-secret-key
- JWT_SECRET_KEY=your-jwt-secret
restart: unless-stopped
Database URL Format:
postgresql://USERNAME:PASSWORD@HOST:PORT/DATABASE