Deployment verification¶
Checks to run after any installation or upgrade. All commands are real.
Service health¶
docker compose ps # all services Up; db/backend report (healthy)
curl -s http://localhost:3000/api/health
# {"status": "ok"|"degraded", ...} — checks database and Redis connectivity
Inside the stack: docker logs umbryx_backend --tail 50 should show
migrations applied and Uvicorn started, with no tracebacks.
First login¶
- Open
http://<host>:3000— the login screen loads (the SPA is served by the nginx container). - First run: create the administrator account (or log in with the
ADMIN_*credentials you set). GET /api/auth/statusbefore setup returns{"initialized": false}— a quick way to script the check.
Functional smoke test¶
After logging in:
- Create a project (sidebar → New project) — you become its
owner. - Add a scope entry (Scope tab).
- Infra → Connections → add an attacker SSH target (a reachable
box with
nmapinstalled). - Recon → Scans → Nmap → target a host in scope → Run.
- Jobs shows the job running with live output; when done, Hosts contains the discovered host and ports.
Edition check¶
curl -s -H "Authorization: Bearer <token>" http://localhost:3000/api/system/edition
# {"edition": "ce" | "ee", ...}
In EE also check GET /api/system/license/state — the tier, features
and lifecycle stage (active) are reported there.
What "healthy" looks like¶
| Check | Expected |
|---|---|
docker compose ps |
5 services Up, db/backend (healthy) |
/api/health |
{"status": "ok"} |
| Login | 200, session cookie set |
| Scan job | progresses queued → running → done (requires an attacker target) |
| WebSocket | live updates arrive (badges, presence) — see Troubleshooting if behind a proxy |