Skip to main content

ignition-stack

ignition-stack generates ready-to-run Docker Compose stacks for Ignition 8.3 SCADA demos and SE engagements. Pick an architecture, answer a few questions, and it writes a self-contained project: a hand-readable compose file, an .env, file-config seed resources the gateway reads on first boot, and a POST-SETUP.md listing only what could not be pre-seeded.

The goal is a stack that comes up with no UI prompts. Commissioning is env-driven and connections are file-seeded wherever Ignition 8.3 allows it, so docker compose up -d reaches a running gateway on its own.

pipx install git+https://github.com/knorrlabs/ignition-stack.git
ignition-stack create demo --arch basic
cd demo && docker compose up -d

That generates a one-gateway-plus-Postgres project and brings it up with a VALID database connection already wired in. See Installation and Quickstart for the full walkthrough.

How it fits together​

A generated project is plain Docker Compose with no hidden state. The CLI resolves your answers into that project and seeds as much as Ignition 8.3 can read from the filesystem.

  • Architectures decide the shape of the stack: how many gateways, in what roles, on what network layout.
  • Services are the containers that run alongside the gateways: databases, MQTT brokers, an identity provider, simulators, and an automation engine.
  • Concepts explain how generation, the capability resolver, the configuration record, and seeding work.
  • Guides cover the day-to-day tasks: tearing a stack down, declarative config, and more.
  • Reference is the lookup layer: every CLI command and the Ignition 8.3 seeding matrix.
  • Changelog is what's new in each release.

Every stack is re-runnable​

Every create writes a configuration record alongside the runnable tree. Pass it back to create -f to recreate or clone the stack under a new name — the same file is the input for a fully declarative workflow.

New here?​

Start with Installation, then generate your first stack in the Quickstart. If you want to understand what the tool does before running it, read How generation works.