Skip to content

Quick start

This walks through a self-hosted install: start the server, add a source, add a destination, and see an incident arrive end to end.

Terminal window
docker compose up -d

See Install with Docker Compose for the full setup, including .env and TLS. What you’ll see: docker compose ps shows infrainbox and postgres running.

The server has no user yet, so it prints a one-time link to its own log:

Terminal window
docker compose logs infrainbox | grep 'setup token'

The line ends .../setup#token=.... Open it in a browser — the token is single-use and only works while the instance has no administrator yet. Fill in a username, password, your workspace’s name and its time zone (this is what “23:00” means for quiet hours later).

What you’ll see: the dashboard loads, signed in as the new workspace’s administrator.

Go to Add source. For this walkthrough, pick a generic source (or use the events API directly — see Events API for the full recipe and every field). Name it and create it.

What you’ll see: a key shown once, shaped like iik_src_…, plus the ingest URL. Copy both now — InfraInbox stores only a hash of the key and can’t show it to you again.

Terminal window
curl -X POST https://infrainbox.example.com/v1/events \
-H "Authorization: Bearer iik_src_…" \
-H "Content-Type: application/json" \
-d '{"title": "Backup failed", "severity": "CRITICAL", "dedupKey": "quickstart-test"}'

What you’ll see: a 202 response with an eventId and an incidentId — CRITICAL opens an incident by default.

5. Add a destination and put it on the default route

Section titled “5. Add a destination and put it on the default route”

Go to DestinationsAdd Telegram destination. Paste a bot token from @BotFather, then use Find my chats to pick the chat you want alerts in (message the bot once first, so it has something to find).

Then open Notifications → Routing → Default route and add the Telegram destination to the CRITICAL row, alongside the built-in InfraInbox Push.

What you’ll see: the new destination listed as one of CRITICAL’s destinations.

Send the same test event again (a new dedupKey if you want a fresh incident instead of an occurrence on the last one):

Terminal window
curl -X POST https://infrainbox.example.com/v1/events \
-H "Authorization: Bearer iik_src_…" \
-H "Content-Type: application/json" \
-d '{"title": "Backup failed", "severity": "CRITICAL", "dedupKey": "quickstart-test-2"}'

What you’ll see: the incident in the Inbox, and the Telegram message arriving in the chat you picked.