Umbryx Core installation¶
End-to-end from a fresh clone to a working instance. Commands are the real ones from the repository.
1. Get the source¶
2. Configure the environment¶
Minimum day-one values (see the Configuration reference for the full list):
DB_PASSWORD="<strong-postgres-password>"
JWT_SECRET="$(openssl rand -hex 32)"
ENCRYPTION_KEY="$(python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")"
ADMIN_PASSWORD="<strong-admin-password>"
APP_ENV=production
With APP_ENV=production the backend refuses to start without an
explicit, well-formed ENCRYPTION_KEY — do not rely on
auto-generation outside dev.
3. Start the stack¶
This builds the backend and frontend images and starts five services:
db (PostgreSQL 16), redis, backend, frontend, nginx.
Database migrations run automatically on backend startup (Alembic
upgrade head) — there is no manual migration step.
4. First login¶
Open http://<host>:3000.
- On a fresh database the login screen offers to create the administrator account (first-run setup).
- Set
SETUP_TOKEN=<random>in.envbeforehand if you want that screen gated with a token. - If
ADMIN_USERNAME/ADMIN_PASSWORDare set in the environment at first start, the admin is created automatically instead.
Continue with Verification.
Alternative: the installer wizard¶
Air-gapped Core¶
An offline bundle can be built with scripts/build-airgap-bundle.sh
(images + checksums + compose + installer). The same script exists in
both editions; note that Core does not need any license activation
afterwards.
Updating¶
Migrations run on startup. Back up before upgrading — especially the
data/ directory and the database, since ENCRYPTION_KEY-encrypted
data is unrecoverable without it (see
Backup and restore).
Common installation problems¶
| Symptom | Cause / fix |
|---|---|
Backend exits: ENCRYPTION_KEY must be explicitly set when APP_ENV='production' |
Expected fail-fast — set a valid Fernet key in .env |
Backend exits: invalid format (not a valid Fernet key) |
Typo in the key; regenerate |
password authentication failed for user "umbryx" |
DB_PASSWORD changed after the DB volume was initialized — reset the volume (docker compose down -v, data loss) or restore the old password |
| App unreachable | Check the published PORT (default 3000) and that docker compose ps shows all services healthy |
| Migrations fail | Ensure the code and the database come from the same version; restore a backup or alembic stamp <revision> deliberately |
More in Troubleshooting.