Umbryx EE installation¶
EE deploys like Core (same compose services, same schema) with two additions: licensed images and license activation.
1. Obtain licensed access¶
EE images (umbryx-ee:<version> from the vendor's private registry,
access included with the license) or an
air-gap bundle. Point the stack at them:
# .env
BACKEND_IMAGE=<private-registry>/umbryx/backend
FRONTEND_IMAGE=<private-registry>/umbryx/frontend
IMAGE_TAG=<licensed-version>
Upgrading an existing Core install is the same operation — the schema is shared, no export/import is needed.
2. Configure¶
The environment set is Core's plus four EE-only variables (see the
Configuration reference):
INFRA_TLS_VERIFY, INFRA_SSH_KNOWN_HOSTS, UMBRYX_VERIFY_DEPLOY,
and the cloud-state directory. Nothing license-related is configured
through env — the license is a signed token, not a variable.
3. Activate the license¶
Online (default): nothing to do at install time. Once a token has
been applied (below), the instance renews it automatically once per
24 h against the license server (LICENSE_SERVER_URL, default
https://update.umbryx.pro).
Applying a license token (System → License, platform admin):
GET /api/system/license/activation-request— "Download activation request" savesumbryx-activation-request.c2v.json(hardware-id hashes, the instance's public key, a fresh nonce).- Send the C2V file to the vendor; receive a signed
.lictoken. - Upload it (System → License → upload,
POST /api/system/license/upload). The token's Ed25519 signature, expiry, tier and instance binding are verified on apply. - For air-gapped instances, switch the channel to offline
(
PATCH /api/system/license/channel); online heartbeat is skipped entirely.
4. License lifecycle behavior¶
active → grace (expired, default 14 days, admins notified) →
wind_down (mutations blocked with 402; viewing, export and teardown
keep working). Data is never deleted; deployed infrastructure is
never stopped by the platform.
5. High availability (optional)¶
EE ships the HA recipe — deployed today via docker-compose.ha.yml
by hand (the installer's guided HA modes are planned, not yet in
install.sh); follow HA deployment
step for step:
This stands up pg_auto_failover (monitor + nodes), HAProxy +
keepalived VIP, and Redis Sentinel; the app layer is pointed at the
VIP. ENCRYPTION_KEY and JWT_SECRET must be byte-identical on every
app node. Full walkthrough: HA deployment.
Air-gapped EE¶
Build the offline bundle with scripts/build-airgap-bundle.sh
(backend/frontend/Postgres/Redis/nginx images, checksums, compose,
offline installer). Activate the license via the offline C2V → .lic
flow above. C2/redirector images are deliberately not part of the
bundle — package them separately with docker/build-images.sh for
your isolated segment.