Quickstart
Deploy Floprints with Docker Compose on any cloud or on-prem. PostgreSQL, app container, and Let's Encrypt TLS in one stack.
This guide deploys the reference production stack from the Floprints repo: Traefik (TLS), app (nginx + Node API + console SPA), and PostgreSQL.
Prerequisites
- A Linux host with Docker and Docker Compose
- A DNS A/AAAA record pointing your domain at the host
- Inbound TCP 80 and 443 for Let’s Encrypt HTTP-01
1. Prepare environment
git clone <your-blueprints-repo>
cd blueprints
cp .env.example .env
Fill in .env (minimum):
DOMAIN=floprints.example.com
ACME_EMAIL=ops@example.com
POSTGRES_PASSWORD=<strong-password>
SESSION_SECRET=<32-char-secret> # openssl rand -hex 16
KEK_PRIMARY=<64-char-hex> # openssl rand -hex 32
PUBLIC_URL=https://floprints.example.com
Secrets
Never commit .env. In production, source DATABASE_URL, SESSION_SECRET, and KEK_PRIMARY from a secret manager.
2. Build or pull the app image
pnpm install
pnpm --filter @blueprints/console run generate
pnpm --filter @blueprints/api run build
docker build -t ghcr.io/your-org/floprints:latest .
Update compose.yml app.image and migrate.image to your registry tag.
3. Migrate and start
docker compose run --rm migrate
docker compose up -d
Open https://<DOMAIN>/auth/setup to create the first admin account.
4. Configure AWS Bedrock
In the console:
- Settings → Providers — Add AWS Bedrock: region, access keys (envelope-encrypted), execution role ARN, runtime container URI, gateway ARN
- Settings → General — Set default composer model if needed
- Settings → Tools — Configure MCP servers and built-in tool credentials
5. Create your first workflow
- Go to Workflows → New
- Describe your workflow to the Floprints Composer
- Review the proposed plan, then Deploy
- When status is ready, open the workflow and Run
Upgrades
docker compose pull
docker compose run --rm migrate
docker compose up -d
Local development
For development on your workstation:
pnpm install
pnpm dev # common build + API (port 9000) + console dev server
Use compose.dev.yml for a local Postgres instance if needed.