Install
Two paths work today: the Docker image and an install from source. Both bring an embedded PostgreSQL database and a demo company.
As of November 2026 there is no tagged release yet. Desktop installers (.exe, .dmg, .deb) and the PyPI package are prepared but not published. The image tagged edge is built from the main branch.
System requirements
| Docker | Docker Engine with Compose v2 (Linux) or Docker Desktop (Windows, macOS). Image for amd64 and arm64 |
|---|---|
| Memory | At least 3 GB on a dedicated server. The project docs call this a floor, not a recommendation |
| From source | Python 3.12 or newer, Node.js 22 or newer, Git |
| Database | Embedded PostgreSQL in the data directory (default), or your own PostgreSQL 16+ server via DATABASE_URL |
| Port | 8080 (Docker), 8000 and 5173 (development from source) |
Which path for what
| Docker | One command, data in a volume. For testing and for production use in a small firm. |
|---|---|
| Docker Compose | Database and application separate, for a server. |
| Source | For development, or when you have no Docker. |
1. Docker (Windows, macOS, Linux)
One container with the application and its database; all data lives in the obe-data volume. On Windows and macOS, install Docker Desktop first.
$ docker run -d --name openbusinesserp --restart unless-stopped -p 8080:8080 -v obe-data:/data ghcr.io/datadrivenconstruction/openbusinesserp:edge After about a minute, open http://localhost:8080. docker logs -f openbusinesserp shows the progress.
2. Docker Compose with a separate PostgreSQL container
For a server where the database and the application run separately. The files come from the repository; OE_IMAGE_TAG=edge is needed because there is no latest tag yet.
$ mkdir openbusinesserp && cd openbusinesserp $ curl -fsSL https://raw.githubusercontent.com/datadrivenconstruction/OpenBusinessERP/main/docker-compose.quickstart.yml -o docker-compose.yml $ curl -fsSL https://raw.githubusercontent.com/datadrivenconstruction/OpenBusinessERP/main/docker-compose.quickstart.image.yml -o docker-compose.override.yml $ echo "POSTGRES_PASSWORD=$(openssl rand -base64 24)" > .env $ echo "JWT_SECRET=$(openssl rand -hex 32)" >> .env $ echo "OE_IMAGE_TAG=edge" >> .env $ docker compose pull app $ docker compose up -d
3. From source (Windows, macOS, Linux)
For development, or to try it without Docker. The backend starts the embedded database itself; the interface runs as a development server.
$ git clone https://github.com/datadrivenconstruction/OpenBusinessERP.git $ cd OpenBusinessERP/backend $ python3 -m venv .venv $ source .venv/bin/activate $ pip install -e ".[server]" $ openbusinesserp serve --port 8000
> git clone https://github.com/datadrivenconstruction/OpenBusinessERP.git > cd OpenBusinessERP\backend > py -3.12 -m venv .venv > .venv\Scripts\Activate.ps1 > pip install -e ".[server]" > openbusinesserp serve --port 8000
$ cd OpenBusinessERP/frontend $ npm install $ npm run dev
Then open http://localhost:5173.
First sign-in
The sign-in page offers demo accounts. The demo administrator is demo@openbusinesserp.com with the password DemoPass1234!. For your own company, the setup wizard at /setup walks through company details, tax, bank, logo, outgoing mail and the first invoice.
On a server reachable from the internet: turn the demo data off with SEED_DEMO=false, create your own administrator and put HTTPS in front through a reverse proxy.
Backup
A complete backup has two parts: the database, and the data directory with uploaded files, logo and settings. The backup function in the interface exports one user’s records only and is not a company backup.
$ docker stop openbusinesserp $ docker run --rm -v obe-data:/data -v "$PWD":/out alpine tar czf /out/obe-data-$(date +%F).tar.gz -C /data . $ docker start openbusinesserp
$ docker compose exec -T postgres pg_dump -U oe -Fc openestimate > backup-$(date +%F).dump # check the volume name with docker volume ls (prefixed with the project name) $ docker run --rm -v openbusinesserp_app_data:/data -v "$PWD":/out alpine tar czf /out/app-data-$(date +%F).tar.gz -C /data .
From source: quit the program, then copy the .openestimate folder in your home directory (or the folder in OE_DATA_DIR). A copy taken while the database runs is unusable.
Keep copies on another machine, and test a restore before you need one. Backup and restore in the manual.
Updates
Back up first. On start, the application brings the database schema up to date itself.
$ docker pull ghcr.io/datadrivenconstruction/openbusinesserp:edge $ docker stop openbusinesserp && docker rm openbusinesserp $ docker run -d --name openbusinesserp --restart unless-stopped -p 8080:8080 -v obe-data:/data ghcr.io/datadrivenconstruction/openbusinesserp:edge
$ docker compose pull app $ docker compose up -d
$ git pull $ cd backend && pip install -e ".[server]" $ cd ../frontend && npm install