Skip to content

Maintenance and operations

Day-2 procedures for operators. Availability: both editions unless noted.

Updating an existing instance

./update.sh

Backs up .env and a DB dump to backups/, tags the current images as :rollback, rebuilds (source checkout) or loads images (airgap bundle), recreates containers without touching volumes, and waits for the backend health check. ./update.sh --rollback restores the previous images; database migrations are not auto-reverted — restore the dump from backups/ if a true revert is needed.

Start / stop / restart

docker compose up -d            # start (also applies config changes)
docker compose restart backend  # restart one service
docker compose down             # stop (data volumes persist)

Alembic migrations run automatically on every backend start — there is no separate migration command in normal operation. For development, backend/Makefile exposes make db-status, db-upgrade, db-downgrade, db-new, db-history (require DATABASE_URL).

Health checks

curl -s http://localhost:3000/api/health        # db + redis connectivity
docker compose ps                               # service states

In the UI: System → Health (worker pool: running, active jobs, max workers; entity counts) and System → Metrics (totals, job status counts). The Jobs view shows a live worker badge (⚙ active/max +queue).

Logs

docker compose logs -f backend --tail 200

Structured application logs also land in the UI under System → Logs (filterable; GET /api/system/logs). The DevOps Log (Admin → DevOps Log) records platform-side actions — what Umbryx itself did to infrastructure (EE deploys, workstation provisioning) with filters by stack/level/category.

Upgrades

git pull                        # or docker compose pull for image deploys
docker compose up -d --build
  • Migrations apply on startup; jobs awaiting ROE approval survive a backend restart
  • Back up first — see Backup and restore
  • EE↔Core moves are image swaps; the schema is shared

Configuration changes

Edit .env, then docker compose up -d (recreates containers with the new environment). Variables marked "no restart" in the Configuration reference are read per-request.

Redis / worker backend

The default internal worker pool needs no extra services. Switching to WORKER_BACKEND=arq requires enabling the worker compose service; if the arq pool is unreachable the platform falls back to in-process execution.

Rate limits (built-in)

Login 5/min (+ account lockout after 10 failures for 30 min when Redis is up), report exports 10/min, webhook ingestion 120/min, credential reveal 30/min. Disabled only in APP_ENV=test.