app and worker containers — no embedded database — and an ekso.json with placeholder connection strings for you to fill in.
Pick this if you have a managed Postgres on AWS RDS / Azure Database / Supabase / Neon, a SQL Server estate with spare capacity, or strict policy that data lives in your existing instance. For a clean-slate install with no external dependencies, see Docker - full stack instead.
Prerequisites
- Docker Engine 20+ on Linux, Docker Desktop on macOS or Windows
-
An empty database on Postgres 16+ or SQL Server 2025, plus credentials with
CREATErights so Ekso can apply its schema on first boot -
pgvector installed on Postgres (one-time per database):
- A free license — fetch one at ekso.app/get-started
SQL Server 2025 is the minimum because Ekso uses native vector search. Earlier versions don’t have the required types and DiskANN index support.
Install
-
Download the bundle (
ekso-docker-byod.zip) from your welcome email. -
Unzip somewhere persistent. The zip contains
docker-compose.yml,ekso.json, and aREADME.md. -
Edit
ekso.json— fill in the connection strings for your database. The full schema is documented in the configuration reference; the relevant fields are underDatabase. The same two fields (TransactConnection+MartConnection) take connection strings in the dialect implied byProvider: Postgres example:SQL Server example: -
Bring it up:
The API auto-applies the schema on first boot. Allow 30–60 seconds for that plus image pulls.
-
Open the install URL to land in the first-run wizard:
Transact vs Mart connections
Ekso splits database access into two connection strings:
For most installs, both connection strings point at the same database. Separating them onto a read replica is an optimization for reporting-heavy workloads — not a starting requirement.
Connection-string gotchas
What’s running
Three containers:
Your data lives in normal folders next to
docker-compose.yml:
For the full data model — automatic backups, restore commands, and the
docker compose down -v reassurance — see Data management.
Updating
./data/ and ./backups/ folders are untouched, and the bundle never touches your external DB. See Upgrading for release cadence, version pinning, and the rollback procedure.