Quick start
You need a Linux host running Docker with Compose v2, and an API key for a model - Anthropic’s, or any OpenAI-compatible one, local models included.
-
Get the reference compose file. It runs the doctor, its socket proxy and an optional SMART sidecar for drive health, which starts only with
--profile smart.Terminal window mkdir container-doctor && cd container-doctorcurl -O https://raw.githubusercontent.com/sebastianbuechler/container-doctor/main/compose.example.yaml -
Create the data directory, owned by the user the doctor runs as (
1000:1000unless you setDOCTOR_UIDandDOCTOR_GID):Terminal window mkdir -p data && sudo chown 1000:1000 data -
Set the minimum. Put a model and a dashboard password in a
.envfile next to the compose file. The password is required - without it (or OIDC) the dashboard refuses every request - and placeholders such aschange-meare refused; generate one withopenssl rand -base64 24:.env ANTHROPIC_API_KEY=sk-ant-...DOCTOR_WEB_PASSWORD=<openssl rand -base64 24>.env DOCTOR_LLM_PROVIDER=openaiDOCTOR_OPENAI_BASE_URL=https://openrouter.ai/api/v1DOCTOR_OPENAI_API_KEY=sk-or-...DOCTOR_MODEL=openai/gpt-6-lunaDOCTOR_WEB_PASSWORD=<openssl rand -base64 24>.env DOCTOR_LLM_PROVIDER=openaiDOCTOR_OPENAI_BASE_URL=http://ollama:11434/v1DOCTOR_MODEL=<a model you have pulled>DOCTOR_WEB_PASSWORD=<openssl rand -base64 24> -
Start it.
Terminal window docker compose -f compose.example.yaml up -dAdd
--profile smartto start the SMART sidecar as well. -
Open the dashboard at
http://<host>:8080and sign in with the password.
Any OpenAI-compatible endpoint works the same way; see Models and cost for free, cheap and local options.
It starts in observe mode: it detects incidents and diagnoses them, and
changes nothing. Read a week of its diagnoses before you let it act - see
Your first week.
Check that it works
Section titled “Check that it works”Two commands, run inside the doctor’s container, tell you whether the Docker endpoint and the model are wired up correctly:
# What the Docker endpoint permits - restart yes, create nodocker compose -f compose.example.yaml exec container-doctor python -m app.preflight
# One synthetic incident through the model, without touching a containerdocker compose -f compose.example.yaml exec container-doctor python -m app.selftestNext steps
Section titled “Next steps”- Installation - hosts, Docker managers and what the compose file sets up.
- Settings - everything but secrets can be changed on the dashboard.
- Environment variables - every setting, generated from the code.