Skip to content
Not released yet: nothing on these pages installs until 0.1, the first release. Run it on the sample tenant today.

Quickstart

Three commands start the stack and print a one-time setup link. No tenant to connect yet? Try the sample tenant first. You need Docker with Compose, and uv to install the pbmb command. The stack listens on 127.0.0.1 only, so put a reverse proxy with TLS in front of it before anyone else opens it (the Deploy part has one guide per target).

Terminal window
uv tool install powerbi-metrics-book
pbmb init ./powerbi-metrics-book-deployment --public-base-url https://metrics.example.com
cd ./powerbi-metrics-book-deployment

Replace the address with the https address people will open. pbmb init writes compose.yml, .env with new random passwords, access/ for your own policies, and an AGENTS.md for your agent. It changes nothing else and does not call the api.

Keep a copy of .env somewhere safe. Without it the database cannot be reached again. It is git-ignored, so do not commit it.

Terminal window
docker compose up -d

The first start pulls the image, creates the database and applies its migrations.

Terminal window
docker compose exec api server setup-link

The command prints an address. Open it in your browser. It works once, for 24 hours. Run the command again for a new one: each new link ends every earlier link and setup session.

The api never writes the link to its log, so only someone who can run commands in the container can start the setup. Once an admin exists there is no setup link.

The link opens the setup: a guide with a step rail, where each step says what to do, gives every value to copy and checks the result with a real call before the next step. Follow the Set up part in the same order. It uses the same words as the setup screens.

Both of these must pass before you open the link:

Terminal window
docker compose ps
curl -s http://127.0.0.1:3000/health

docker compose ps shows api, worker, postgres and cerbos as healthy. The curl answers {"ok":true,...} with the version. If the api is not healthy, read docker compose logs api: it names the bootstrap value that is missing or wrong.