Home → Architecture → Airgap deployment
Ironmark installs on an airgap network from a signed offline bundle. In normal operation there are no outbound network calls — no telemetry, no license phone-home, no auto-update. Updates are opt-in and travel the same way the original install did: a signed bundle, hand-carried in.
Ships as a single IM_setup.tar.gz with a detached .sig signed by the vendor. The bundle contains everything needed to install on a clean Debian/Ubuntu box:
| Application | Backend + frontend + SDM packages |
| Python wheels | ~60 wheels prebuilt for manylinux2014_x86_64. No pip network fetch required. |
| System deps | MySQL 8, nginx, Node, Java (for Apache FOP) — as .deb files or system-installed via the install script |
| Setup script | install.sh handles user creation, MySQL init, systemd unit install, nginx config, and cert setup |
| Bundle size | ~128 MB |
Same script for airgap and connected installs. The connected path optionally uses Let's Encrypt; airgap uses a self-signed or customer-supplied cert.
/opt/ironmark/setup./install.sh — installs deb deps from the bundle, sets up MySQL, deploys the app, configures nginx, seeds a fresh DBTypical time on a clean nanode-equivalent VM: ~10 minutes end-to-end.
Same bundle format. Two update paths:
install.sh --upgrade path used for the initial install. Preserves data + DB.Both paths verify the bundle's detached signature against the customer's installed pubkey. Unsigned or tampered bundles are rejected at the load stage.
Licenses are signed .irm files issued by the vendor. Customer installs verify against the license pubkey, offline, at boot and periodically. On expiry, reads and exports keep working; publish is gated until renewal. No phone-home for enforcement.
mysqldump against the ironmark schema. Restore with mysql./opt/ironmark/app/data/ holds project graphics, imported IADS DTDs, reference docs, and outputs. Rsync-friendly.