Skip to content

Configuration ​

All Hub services are configured via environment variables, managed by envix through each service's ConfigModule.

Common Variables ​

These variables are shared across all services:

VariableRequiredDescription
PORTNoHTTP server port (default varies by service)
AUTHUP_URLYesAuthup identity provider URL
REDIS_URLNoRedis connection URL (for pub/sub and caching)
AMQP_URLNoRabbitMQ connection URL
COOKIE_PREFIXNoNamespace prefixed onto the access_token cookie the authup middleware falls back to when a request carries no Authorization header (e.g. a bucket/file stream download). See Frontend Variables — must match client-ui's COOKIE_PREFIX.

Authup upgrade to beta.68 ​

Upgrade the Authup server and all Hub services together. Hub now requires Authup 1.0.0-beta.68 and reads GET /authorization using the service's own CLIENT_ID / CLIENT_SECRET credentials. Grant that client permission_read with realmScope: "ownOrNull" for a single realm, or "any" when serving multiple realms. The default "own" grant cannot read global policy definitions. The built-in system client already has the required access.

Each authenticated HTTP request and socket connection fetches one catalog and combines it with the caller's introspected grants. All permission checks within that request/connection reuse the local evaluator. Catalog errors fail the request; there is no fallback to permission names. Catalogs are not cached across requests. Existing token-introspection caching and socket-session lifetimes still apply, so changes to grants are visible when those are refreshed.

This preserves policy trees and grant realm scopes at the evaluator boundary. Existing endpoints that only perform a permission pre-check still perform a pre-check: this upgrade does not add row-policy checks or collection filtering to those endpoints. Restricting every entity read/write by resource attributes is a separate service-level change.

The frontend kit uses a single POST /authorization/check batch for UI gates and refreshes it at the policy expiry returned by Authup. Hub navigation follows those refreshes. Browser users do not need permission_read merely to render menus.

Authup's beta.67 upgrade also applies its folders/event-aggregate migration and pins database timestamps to UTC. Follow the Authup upgrade notes for existing databases that used local time. Beta.68 quotes newly serialized strings; Hub's text transformer reads both these and legacy unquoted messenger payloads, so no Hub data migration is needed.

Database Variables ​

Used by server-core, server-storage, and server-telemetry:

VariableRequiredDescription
DB_TYPEYesmysql, postgres, or better-sqlite3
DB_HOSTYes*Database hostname
DB_PORTYes*Database port
DB_USERNAMEYes*Database username
DB_PASSWORDYes*Database password
DB_DATABASEYesDatabase name (or :memory: for SQLite)

*Not required for SQLite.

SQLite has no upgrade path ​

Migrations only run for mysql and postgres. On SQLite the schema is built from the entity classes by synchronize(), and only when no schema exists yet — so an existing SQLite database is never migrated or altered on upgrade.

Schema changes therefore break a persistent SQLite deployment. The rename of the analysis table to analyses is one such change: a SQLite database created before it keeps the old table, and queries against the new name fail.

Use SQLite only for tests and throwaway/in-memory (:memory:) instances. For any database you intend to keep, use MySQL or PostgreSQL. To carry an existing SQLite database across a schema change, export its data and re-import it into a freshly created database.

Storage Variables (server-storage) ​

VariableRequiredDescription
MINIO_ENDPOINTYesMinIO/S3 endpoint URL
MINIO_ACCESS_KEYYesS3 access key
MINIO_SECRET_KEYYesS3 secret key
MINIO_USE_SSLNoEnable SSL for MinIO connection
MINIO_PORTNoMinIO port

Telemetry Variables (server-telemetry) ​

VariableRequiredDescription
VICTORIA_LOGS_URLYesVictoriaLogs endpoint URL
EVENT_RETENTION_DAYSNoDays an audit/event row is kept before the daily sweep removes it (default 7; 0 = keep forever)

Frontend Variables (client-ui) ​

The full list lives in the frontend reference. Two of them are deployment decisions rather than service addresses, and go together:

VariableRequiredDescription
NUXT_PUBLIC_COOKIE_DOMAINNoDomain attribute for the UI's session cookies. Leave empty.
NUXT_PUBLIC_AUTHUP_COOKIE_PREFIXNoNamespace prefixed onto every session cookie name. Set this whenever NUXT_PUBLIC_COOKIE_DOMAIN is widened, so Authup's own hosted pages can't collide with the UI's cookies on that domain.

Setting a prefix is only safe once the backend agrees on it: server-core, server-storage, server-telemetry and server-messenger each fall back to reading the access_token cookie (for requests that can't carry an Authorization header — a stream download is a top-level navigation) when the identity middleware finds nothing else. That fallback needs the same prefix, via each service's own COOKIE_PREFIX env var (see Common Variables) — set it to the exact same value as NUXT_PUBLIC_AUTHUP_COOKIE_PREFIX / COOKIE_PREFIX, verbatim (no separator is inserted automatically on either side).

Where Authup is served matters ​

The UI and Authup's own hosted pages persist their sessions under the same cookie names. If both can see each other's cookies, they hydrate, rotate and revoke each other's tokens, and the user is logged out on the next page reload.

Empty (host-only) cookies are correct in every layout. Setting a Domain delivers the cookies to every subdomain of that value — including Authup's host, if it sits below it — in which case also set NUXT_PUBLIC_AUTHUP_COOKIE_PREFIX to keep the two cookie sets apart. Serving Authup on a path of the UI's own origin no longer needs either variable as of Authup 1.0.0-beta.64 (authup#3495): the consoles scope their own cookies to that sub-path automatically.

The layout matrix and the upgrade caveat are documented under Session cookies.