Move from an empty host to a migrated, seeded, and licensed instance, covering services, startup gates, a smoke-test login, and a signed license token loaded safely.
This guide takes you through a first PMAP deployment on Docker Compose. You stand up the full service set with one command, learn the four dev service ports and the strict startup order the Go binary follows before it accepts traffic, and confirm every backing dependency is reachable.

It is written for operators running the first install on their own infrastructure. By the end you can control the migration gate so 435 schema migrations apply exactly when you intend, control the seed gate so the bundled POC snapshot loads once on a fresh database, smoke-test an admin login, load a signed Ed25519 license token validated at the door, then close the gates for routine restarts.
Inside this guide
- Review the architecture, service topology, and the gated startup sequence.
- Prepare the env file and bring up the service set with one docker compose command.
- Confirm the four backing services are reachable before going further.
- Open the migration gate to apply the schema, then the seed gate to load the POC snapshot.
- Smoke-test the admin login and check infrastructure health from the console.
- Load the signed Ed25519 license token and verify the write gate is open.
- Plan backups, then close the gates to finish the first run.
Before you start
- A host with Docker Engine and the docker compose plugin, with permission to bind the four service ports.
- The PMAP api/ directory checked out, which holds the compose file and the embedded migration and seed corpus.
- Environment values for PostgreSQL, Redis, and MinIO credentials plus the API JWT signing secret, set in an env file.
- A signed Ed25519 license token issued by the Privia license-creator app, ready to paste into the License tab.
- Network access to the host on the API port 8080 from the browser you will use for the smoke-test login.
- A backup target for the PostgreSQL dump and the MinIO object store you will protect after first run.


