Skip to content
ibnHatab edited this page Jul 4, 2026 · 1 revision

Setup

Stand up the Ground Station: the Mender OTA gateway + the GS containers. The GS is a standalone docker compose — it never compiles or checks out the Theia source; its only coupling to the fleet is the .mender artifact contract.

Components

Dir What
mender/server/ Mender OSS server bring-up (up.sh clones + composes Mender at a pinned tag; traefik + S3 route fixes)
mender/artifact/ build-artifact.sh — pack a Theia release-dir into a .mender artifact
fleet/ fleet.py — Mender Management API client (upload / deploy / status / devices)
enroll/ rig_enroll.py — day-0 device enrolment over com gRPC (identity + PKI + VPN auth-key)
docker-compose.yml the Ground Station: Mender GW + the operator UX (web + API)

Bring-up

# 1. stand up the Mender GW (clones Mender OSS, composes it; ~2-3 GB, opt-in)
mender/server/up.sh up

# 2. bring up the Ground Station (web + API + colony-api)
docker compose up -d

# 3. enrol a rig (day-0: identity + accept in deviceauth)
mender/server/enroll-rig.sh <rig-host>          # mender-client side
#   or, over com gRPC (richer: PKI + VPN key):
enroll/rig_enroll.py <rig> ...

The GS web UI is then reachable at :8090 (prod) / :5173 (Vite dev). The colony-api container (:8081 on the GS docker network) is the deploy engine the GS drives — see the Operator Guide.

The .mender artifact contract

The device's on-device side — the theia-release / theia-swp Mender update modules + the Mender→UCM handoff state-scripts — lives in the theia repo and ships in the runtime .deb. The GS drives it remotely; it does not contain it. The tarball shape is the only coupling:

<artifact>.mender
  └─ manifest/machines.json         {app, roles, arity, on, machines}
  └─ manifest/<machine>/{machine,executor,application}.json
  └─ bin/<fc>                        the app FC executables (overlay)

Local docker fleet (dev mirror)

theia rig up (in a theia workspace) brings up theia-{central,compute,frontal}

  • a theia-etcd sidecar as host-network SSH rigs (:2201/:2202/:2203) — the local mirror of a real fleet the GS provisions over SSH, exactly as the Tutorial does.

Clone this wiki locally