Docker & GHCR bootstrap
The stack runs from compose recipes in the repo. Clone once, then bring up a
recipe with scripts/openfdd_stack_up.sh (it pulls the GHCR images and waits
on health).
git clone https://github.com/bbartling/open-fdd.git
cd open-fdd
./scripts/openfdd_stack_up.sh standalone
workspace/ holds site state. See Build recipes
for the full recipe/env matrix.
Image channels
image: ghcr.io/bbartling/openfdd-central:${OPENFDD_IMAGE_TAG:-nightly}
| Channel | Tag | Use |
|---|---|---|
| Nightly | nightly |
Default for dev and new installs |
| Beta | beta or 3.3.0-beta.N |
After maintainer promotion |
| Stable | latest or 3.3.0 |
Production (when published) |
OPENFDD_IMAGE_TAG applies to every stack image at once. See
Release channels.
Arch: openfdd-central + openfdd-web (+ protocol/fieldbus) publish linux/amd64 and linux/arm64. Hub openfdd-mqtt stays amd64 (Recipe 1). Confirm before a Pi boot:
docker manifest inspect ghcr.io/bbartling/openfdd-central:nightly
docker manifest inspect ghcr.io/bbartling/openfdd-web:nightly
Recipes
Named product recipes (see Build recipes):
| Named recipe | Compose helpers | Services | Arch |
|---|---|---|---|
| Recipe 1 — cloud hub | central, Railway hub |
mqtt + central + web | amd64 |
| Recipe 2 — OT edge | csv / react + protocol, or standalone |
central + web + protocol (mqtt optional) | amd64 + arm64 |
| Compose helper | Command | Services |
|---|---|---|
| standalone | ./scripts/openfdd_stack_up.sh standalone |
mqtt + central + ui + fieldbus (OT all-in-one) |
| central | ./scripts/openfdd_stack_up.sh central |
mqtt + central + ui (Recipe 1 shape) |
| edge | ./scripts/openfdd_stack_up.sh edge |
fieldbus only (optional MQTTS to a hub) |
| csv / react | ./scripts/openfdd_stack_up.sh csv |
central + ui (Recipe 2 without broker) |
Build locally instead of pulling GHCR:
./scripts/openfdd_stack_up.sh standalone --build
First login & health
cd ~/open-fdd
./scripts/openfdd_health_check.sh
curl -s http://127.0.0.1:8080/api/health | jq '{version, image_tag}'
Open the UI at http://<host>:3000. When OPENFDD_JWT_SECRET is set, sign in
with the admin/operator/viewer password from OPENFDD_ADMIN_PASSWORD.
Reach the UI over Tailscale, VPN, or a reverse proxy — not raw public internet.
Never run docker compose down -v. Never delete workspace/.