Skip to content

Before the session · ~30 minutes

Pre-work

Do this a few days ahead. The slow step is image pulls, and it only happens once.

The whole workshop runs on your own laptop — a complete observability stack in Docker, no shared backend, nothing to sign up for. Almost all of the 30 minutes below is containers downloading and building in the background while you do something else. Getting it out of the way this week is the difference between spending the session querying telemetry and spending it watching a progress bar.

Docker + uv ~5.5 GB RAM · ~5 GB disk Windows = WSL 2 only

Two lanes

Hands-on lane. Your laptop runs the stack and you type along with us. This is the better experience and the rest of this page is how you get there.

Watching lane. If your laptop can't run the stack — a locked-down corporate machine, not enough RAM, no time to prepare — come anyway. Every command and every expected output is written out in the guides, and the Take it home page lets you do the hands-on parts later with more time than three hours allows. It is not a consolation prize.

Part 2 is a guided demo for everybody, so a stack that's still pulling images at 15:30 Dublin costs you nothing.

What you need

  • Docker with the Compose plugin, version 2 or later — Docker Desktop, Colima, OrbStack or Rancher Desktop all work. Newer major versions, including v5, are fine.
  • uv for the Python tooling. One install command, and it brings its own Python.
  • ~5.5 GB of free RAM while the stack is running, and ~5 GB of free disk for images.
  • Git, and outbound HTTPS to github.com, ghcr.io, docker.io, registry.opsmill.io (Infrahub) and grafana.com (a Grafana plugin baked in at build time) — plus deb.debian.org and pypi.org, which the five locally-built images use. The preflight checks the registries for you; if your machine is behind a corporate proxy, get these allow-listed before the day.

Installing Docker

Install Docker Desktop (the easy default), Colima, or Rancher Desktop. For Docker Desktop, run the installer and open the Docker app once so the daemon starts. Official guide: https://docs.docker.com/desktop/setup/install/mac-install/.

Follow the Docker Engine install guide for your distro, then add your user to the docker group so commands don't need sudo:

sudo usermod -aG docker $USER
newgrp docker

Install Docker Desktop with the WSL 2 backend and run every workshop command inside a WSL 2 shell — not PowerShell, not Git Bash. If you have never set WSL up before, do it a few days ahead; it is the single most common thing that goes wrong on the morning.

Verify:

docker compose version
# Docker Compose version v2.x.x (or later, such as v5.x.x)
docker ps
# (an empty table is a healthy result — daemon's up, no containers yet)

Any docker compose version from v2 onward is supported; the version number does not need to start with 2. If you only see docker-compose (with a hyphen) reporting v1.x, install the Compose plugin alongside it — the workshop does not support the legacy v1 command.

Installing uv

One command on macOS, Linux and WSL:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv --version

uv installs its own pinned Python from the repo's .python-version, so you don't need a system Python.

Run the preflight

Clone the repo and let the preflight check Docker, Compose v2 or later, RAM, disk and registry reachability in one shot:

git clone https://github.com/network-observability/workshops.git
cd workshops

uv sync --all-packages          # install workspace deps into .venv/
uv run nobs preflight

You want every row ok. A warn on a registry reachability row is usually fine — some registries answer the probe with a 404 or 405 — but any fail needs sorting out before the day.

Pull the images

This is the slow part. Run it once, well ahead of the session, on a connection you trust:

source .venv/bin/activate       # put nobs on PATH for the rest of the session
nobs packt up                   # first run pulls + builds images, ~15–30 min
nobs packt status               # repeat until every row says 'ok'
nobs packt load-infrahub

A Grafana pull warning on the first run is expected

Compose may initially report pull access denied for packt/grafana before switching to a local build. The workshop's Grafana image is not pulled from a registry: nobs packt up builds it from the official Grafana base image and adds the required plugin. The run succeeded if the final summary says the packt/grafana image was Built, the grafana container was Started, and nobs packt status reports Grafana as ok.

Activating .venv/ is what lets you drop the uv run prefix. If you'd rather not, prefix everything with uv run (uv run nobs packt up, and so on) — the guides read the same either way.

When every row says ok and load-infrahub has completed once, you're done. Stop the stack and leave it:

nobs packt down                 # images stay cached; comes back in seconds

Only one workshop stack at a time

This repo also hosts a longer in-person workshop whose stack binds the same container names and host ports. nobs packt up will refuse to start while the other one's containers exist, and tells you which down command clears them. If you have never run the other workshop, this will never come up.

What you'll have running

Service URL Notes
Grafana http://localhost:3000 login admin / admin (or whatever you set in .env)
Prometheus http://localhost:9090 targets, rules, query browser
Alertmanager http://localhost:9093 active alerts + silences
Loki http://localhost:3001 LogQL endpoint (queried through Grafana)
Infrahub http://localhost:8000 source-of-truth UI + GraphQL playground
Prefect http://localhost:4200 workflow runs in Part 3
Sonda HTTP API http://localhost:8085 the synthetic telemetry control plane

On the morning

Fifteen minutes before we start:

cd workshops
source .venv/bin/activate
nobs packt up
nobs packt status               # every row ok
nobs packt reset                # clean baseline

Open Grafana once and click past both first-login pop-ups — the "change password" prompt (Skip) and the "Grafana Assistant is now available" modal (×). Doing that ahead of time saves you fumbling through them while we're talking.

Then head to Part 1.

If something is red

Start with the usual culprits: Docker Desktop not actually running, Compose v1 still first on PATH, low disk, a corporate proxy blocking ghcr.io or registry.opsmill.io, and WSL 2 not enabled on Windows.

If it still fails, open an issue on the workshops repo and paste your nobs preflight output — the whole block, copied out of your terminal.

And if it can't be sorted in time, come anyway. The watching lane is written for exactly this, and the Take it home page lets you do the hands-on parts later at your own pace.