Getting Started
Fifteen minutes from Compose to a test page
This is the 15-minute path: Compose up, admin account, a service that can page you, one test incident. Use the other guides in this section when you need install variants or a fuller first-week setup.
| Minutes | What you do | Done when |
|---|---|---|
| 0–5 | Run Compose and create the admin | You can sign in at http://localhost:3000 |
| 5–12 | Team → schedule → policy → service | The service routes to your current schedule |
| 12–15 | Open a test incident | It appears OPEN; you can acknowledge it |
Notifications (email/SMS/Slack) are optional for this path. Without a provider, the incident still exists; nobody is paged off-box.
1. Run OpsKnight (Compose)
git clone https://github.com/opsknight-labs/OpsKnight.git
cd OpsKnight
cp env.example .env
Generate the two secrets, then paste the output values into .env before you start:
openssl rand -base64 32
openssl rand -hex 32
NEXTAUTH_URL=http://localhost:3000
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXTAUTH_SECRET=PASTE_BASE64_OUTPUT
ENCRYPTION_KEY=PASTE_64_HEX_CHARACTER_OUTPUT
Dotenv files do not evaluate $(...) shell substitutions.
The Compose file constructs the application's container-only DATABASE_URL from POSTGRES_USER, POSTGRES_PASSWORD, and POSTGRES_DB; you do not need to change the host-development DATABASE_URL example for this path.
docker compose up -d
open http://localhost:3000
First boot sends you to /setup. Create the admin, copy the generated password once, then sign in.
Helm, Kustomize, and from-source installs: Installation. Env reference: Configuration.
2. Make something that can page
Stay on this machine. You do not need a second user for a first page.
- Teams — create
Platformand add yourself. - Schedules — create
Platform primary, add yourself on a 24×7 layer (or a short override covering now). - Policies — create
Platform page, one step: notify the schedule, a few minutes before the next step (you will ack before that). - Services — create
Checkout API, attach that policy.
Detail and screenshots: First Steps.
3. Fire a test incident
In the UI
- Incidents → Create Incident
- Title
Test page, serviceCheckout API, urgency High - Create
You should see status OPEN and a timeline entry. Click Acknowledge, then Resolve.
Optional: Events API (after you add an integration key on the service)
curl -X POST http://localhost:3000/api/events \
-H "Content-Type: application/json" \
-H "Authorization: Token token=YOUR_INTEGRATION_KEY" \
-d '{
"event_action": "trigger",
"dedup_key": "getting-started-test-1",
"payload": {
"summary": "Test page from getting started",
"severity": "critical",
"source": "getting-started"
}
}'
See Events API.
4. Confirm the install
curl -s http://localhost:3000/api/health
Expect "status":"healthy" (or "degraded" only if a non-database check failed). If the UI never loads, Troubleshooting.
After the first page
| Next job | Guide |
|---|---|
| Email / SMS / Slack so a real page leaves the box | Notifications |
| One public/private status page | Status page |
| Slack war rooms (this version) | Slack ChatOps |
| Ingest from monitoring | Integrations |
| OIDC SSO (not SAML) | OIDC |
There is no voice channel. Microsoft Teams and Google Chat are webhook formats, not Slack-style rooms.
Last updated for v1.4
Edit this page on GitHub