Skip to content

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>
docker compose pull && docker compose up -d

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):

  1. GET /api/system/license/activation-request — "Download activation request" saves umbryx-activation-request.c2v.json (hardware-id hashes, the instance's public key, a fresh nonce).
  2. Send the C2V file to the vendor; receive a signed .lic token.
  3. Upload it (System → License → upload, POST /api/system/license/upload). The token's Ed25519 signature, expiry, tier and instance binding are verified on apply.
  4. 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.