CLI that generates ready-to-run Docker Compose stacks for Ignition 8.3 SCADA demos and SE engagements. Pick a system architecture (basic, scale-out, or hub-and-spoke), layer on services, and it writes a self-contained project: a hand-readable compose file, .env, file-config seed resources, and a POST-SETUP.md listing only what could not be pre-seeded.
See docs/docs/reference/seeding-matrix.md for which Ignition 8.3 connection types can be provisioned from the filesystem and env on a live 8.3.6 gateway. Full documentation lives in the docs/ Docusaurus site.
pipx install ignition-stackTo install from source instead of PyPI - the latest off main, or a specific branch:
pipx install git+https://github.com/knorrlabs/ignition-stack.git
pipx install git+https://github.com/knorrlabs/ignition-stack.git@<branch>Generate a project and bring it up:
ignition-stack create demo --arch basic
cd demo
docker compose up -dThe gateway reaches RUNNING with no UI prompts. The admin user is admin / password and the gateway is at http://localhost:9088. The default Postgres credentials are ignition / ignition on the db service.
Run create without --arch to walk the interactive wizard instead: it opens architecture-first, then layers database, edition, IIoT, services, and exposure on top, with a summary you can preview, tweak, or generate.
Everything that ships in the generated project is hand-readable: docker-compose.yaml, .env, scripts/docker-bootstrap.sh, and a services/ignition/ resources tree the gateway reads on first boot.
| Command | What it does |
|---|---|
create <name> |
Generate a project at ./<name>/ from an architecture and a few prompts. |
modules |
Download, verify, and manage the .modl / JDBC catalog. |
See the CLI reference for every command, argument, and option.
demo/
docker-compose.yaml # one gateway, one Postgres, one bootstrap init container
.env # values referenced by docker-compose.yaml
scripts/
docker-bootstrap.sh # seeds /data, sets gateway-network UUID, hands ownership to uid 2003
services/
ignition/
config/resources/core/config-mode.json
config/resources/dev/config-mode.json
projects/.gitkeep
The bootstrap script is run once per data volume. It copies the gateway's base data into a named volume, layers the project's services/ignition/ tree on top, sets a deterministic gateway-network UUID derived from the project name, and hands ownership of /data to uid 2003 so the gateway can write its resource caches.
Commissioning is fully env-driven (ACCEPT_IGNITION_EULA=Y, GATEWAY_ADMIN_PASSWORD, IGNITION_EDITION), so first boot needs no UI.