First run
These steps apply to Installation Methods 1–3 (Docker Compose). Method 4 (local development) already includes its own root key and Superadmin steps inline, so skip this page if that’s what you used.
-
Build and start everything (already done per method, repeated here for reference: the
webcontainer’s entrypoint runs migrations andcollectstaticautomatically on every start):Terminal window docker compose up -d --build # or: docker compose --profile tailscale up -d --build -
Generate the instance root key. Do this once, before creating any engagements:
Terminal window docker compose exec web python manage.py generate_root_keyCopy the printed value into
secrets/root_key.txt(seesecrets/README.md), then restart so it picks it up:Terminal window docker compose up -d web -
Create the first Superadmin. There are two ways to do this, so pick one:
-
Via the web UI (recommended): visit
/setup/on whichever address applies to your method (e.g.https://<your-domain>/setup/, orhttp://localhost:8000/setup/for Method 3) and fill in the form. This page only ever works before any Superadmin exists on the instance; once you’ve created one, it redirects to the login page instead. -
Via the CLI, useful for scripted or automated deployments:
Terminal window docker compose exec web python manage.py bootstrap_superadmin --username admin --email admin@example.comYou’ll be prompted for a password (14+ characters).
Either way, on first login you’ll be walked through TOTP MFA enrollment (QR code plus confirmation), which is required for every local account, with no way to skip it.
-
-
Visit
/login/(or you’re probably already there from step 3).
What’s next
Section titled “What’s next”- Dashboard & navigation, to orient yourself in the UI.
- User management, to invite your team.
- Roles & permissions, to decide who can do what before adding more staff accounts.