Install & Upgrade
The free edition of Quantra runs entirely on your own machine as a set of Docker containers. One installer command brings up the whole app — database, pricing engine, and browser portal — preloaded with synthetic demo data so you can price something within minutes.
Before you start
You need Docker with the Compose v2 plugin. That's the only prerequisite.
- macOS / Windows: install Docker Desktop (it bundles Compose).
- Linux: install Docker Engine plus the
docker-compose-pluginpackage.
Make sure the Docker daemon is actually running before you install — the installer checks for it and stops with a clear message if it isn't. Around 4 GB of free disk is comfortable for the images and the database volume.
Apple Silicon (M-series Macs): the images are x86-64 and run under Rosetta/QEMU emulation. Everything works — the very first boot is just a little slower. The installer sets this up for you automatically.
Install
The free edition ships as a self-contained tarball. You don't need a registry account or a login token.
Download the free-edition bundle
Get quantra-free-<version>.tar.gz from the download page. The download is
email-gated — enter your email and the link is sent to you.
→ Download page (link coming soon — TODO: final download URL)
Unpack it
tar -xzf quantra-free-<version>.tar.gz cd quantra-free-<version>
The folder contains the compose file, an .env.example, the bundled images, and the installer script.
Run the offline installer
./install-offline.sh
That one command does everything:
- Checks Docker is installed and running.
- Loads the bundled images with
docker load(no registry, no token). - Creates your config: copies
.env.exampleto.env— the defaults are fine. - Starts the stack with
docker compose ... --profile self-hosted up -d. - Waits for the orchestrator to report healthy and for the demo data to finish seeding.
It is idempotent — safe to re-run if anything is interrupted.
Open the portal
When it prints “Quantra is up”, open http://localhost:5173. You're signed in automatically (see Getting Started). Try Products → IR Swap → New Swap, keep the prefilled As-Of date, pick a seeded curve and its index, and click Price for a non-zero NPV.
Managing the running app
All commands are run from the unpacked folder. The compose invocation is docker compose --env-file .env -f docker-compose.release.yml:
# status of every container docker compose --env-file .env -f docker-compose.release.yml ps # follow the orchestrator logs docker compose --env-file .env -f docker-compose.release.yml logs -f orchestrator # stop the app — KEEPS all your data docker compose --env-file .env -f docker-compose.release.yml down # start it back up docker compose --env-file .env -f docker-compose.release.yml up -d
Upgrade
When a new version is released, you upgrade in place. Your data is safe: everything you create — imported market data, saved products, curves — lives in a Postgres volume that the upgrade never touches, and the database schema is migrated forward automatically on boot.
Never run docker compose ... down -v. The -v flag deletes the postgres_data volume and with it all your data. To stop the app, use down without -v. To restart, up -d.
Upgrade in one command
From your existing deploy folder, run the bundled upgrade.sh:
# Tarball / offline edition — point at the NEW bundle's images: ./upgrade.sh --tarball /path/to/quantra-free-<newversion>/images.tar.gz --version <newversion> # Registry install — just pull the new images: ./upgrade.sh --version <newversion>
The script runs, in order:
- Backs up first, always. It takes a
pg_dumpof your database into./backups/quantra-db-<timestamp>.sql.gz. If the backup fails, the upgrade aborts and your running app is left untouched. - Gets the new images —
docker loadfrom the new tarball, ordocker compose pull. - Brings the stack up with the new images (never
-v). A one-shotmigratecontainer advances the schema over your existing data automatically. - Smoke-checks it — waits for the orchestrator to be healthy, confirms your data survived, and runs a pricing check.
- Reports the backup location and the rollback steps.
Take a manual backup any time — pg_dump ships inside the Postgres image, so no local database tools are needed:
docker compose --env-file .env -f docker-compose.release.yml \ exec -T postgres pg_dump -U quantra -d quantra \ | gzip > backups/manual-$(date +%Y%m%d-%H%M%S).sql.gz
Rollback
Migrations are additive and forward-only (there is no automatic downgrade). If you need to roll back, you restore the pre-upgrade backup and redeploy the previous version:
- Repoint
.envto the previous release: setQUANTRA_VERSION=<old-version>. - Restore your pre-upgrade backup into a fresh volume. This is the one sanctioned use of
-v— and only because you have a verified backup in hand:terminalDC="docker compose --env-file .env -f docker-compose.release.yml" $DC down -v # drops the volume — ONLY because we restore next $DC up -d postgres # fresh empty volume gunzip -c backups/quantra-db-<timestamp>.sql.gz | $DC exec -T postgres psql -U quantra -d quantra
- Bring the previous version back up:
$DC up -d.
Keep every pre-upgrade backup until you've confirmed the new version works. These files contain your data — store them somewhere safe.