Deployment
Self-host Fabrik on your own infrastructure with Docker Compose — 7 services, clearly scoped dependencies, and a production topology you can reason about.
Fabrik ships as a Docker Compose stack. One .env file, one docker-compose up -d, and you have a working deployment. There is no hosted SaaS — every Fabrik installation runs inside your own environment, which keeps credentials, query data, and MIM snapshots inside your perimeter.
What you're deploying
A single install is 7 long-running services on one Docker network:
| Service | Role | Image |
|---|---|---|
| backend | Django + Daphne ASGI (HTTP + WebSocket) | fabrik-backend:latest |
| frontend | React + Vite dev server (prod: nginx-served static) | fabrik-frontend:latest |
| celery-worker | Background tasks (queries, AWX, MIM import) | fabrik-backend:latest |
| celery-beat | Scheduled task dispatcher | fabrik-backend:latest |
| postgres | Primary relational store (users, queries, audit) | postgres:17-alpine |
| neo4j | ACI MIM graph (class hierarchy, relationships) | neo4j:5.26 |
| redis | Celery broker, cache, Channels layer | redis:8-alpine |
Backend, workers, and beat all share one image — same code, different commands. That keeps the build matrix small and ensures every Python process sees identical migrations and dependencies.
Deployment model
Fabrik is self-hosted, Docker-first. A production topology looks like this:
The reverse proxy terminates TLS and enforces per-endpoint rate limits (see Production setup). Internal services are not exposed to the public network — all cross-service traffic stays on the fabrik-network bridge.
Where to go next
Prerequisites
Host requirements, Docker versions, domain, TLS, and sizing guidance.
Environment variables
Every .env key that matters, with defaults, constraints, and production tips.
Services
What each of the 7 services does, how it depends on the others, and how to monitor it.
Production setup
Production overrides, nginx reverse proxy, TLS, rate limiting, and the compose profile that ties it together.
Upgrading and backup
Backup strategy for Postgres, Neo4j, and volumes. Upgrade and rollback procedures.