Orbit documentation

Configuration

Orbit is configured with environment variables, normally in .env at the repository root. .env.example lists them all.

Database and storage

Variable Default Purpose
POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB orbit Postgres container credentials (Compose derives DATABASE_URL from them)
DATABASE_URL – postgres://user:pass@host:port/db (required for api and worker)
S3_ENDPOINT_URL – S3-compatible endpoint
S3_REGION us-east-1
S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY – Storage credentials
S3_BUCKET orbit-storage Bucket name
S3_FORCE_PATH_STYLE true Needed for SeaweedFS and MinIO

Authentication

Variable Default Purpose
JWT_SIGNING_KEY dev value Change in production. Signs all tokens
JWT_ACCESS_TTL_MINUTES 30 Access token lifetime (sessions refresh silently)
JWT_REFRESH_TTL_DAYS 14 How long a session can last without signing in again
INVITE_TOKEN_TTL_HOURS 72 Invitation link validity
SUPERADMIN_EMAIL, SUPERADMIN_PASSWORD – First superadmin, created at API start-up if missing
REQUIRE_SUPERADMIN_MFA true Superadmins must enrol two-step verification before using Overseer
MFA_OTP_LENGTH 6 Code length
MFA_CHALLENGE_TTL_SECONDS 600 Code validity
MFA_MAX_ATTEMPTS 5 Wrong attempts per code
MFA_RECOVERY_CODE_COUNT 8 Recovery codes issued
AUTH_BOOTSTRAP_MAX_ATTEMPTS, AUTH_BOOTSTRAP_RETRY_DELAY_SECONDS 20, 1.5 Retries while waiting for the database at start-up

URLs

Variable Purpose
APP_BASE_URL Dashboard address; used in password-reset and invitation links
PUBLIC_PORTAL_BASE_URL Portal address; used in confirmation links (defaults to APP_BASE_URL)
PUBLIC_SUBMISSION_CONFIRM_TTL_HOURS Confirmation link validity (default 72)
NEXT_PUBLIC_API_URL API address for the Next apps (build time)
NEXT_PUBLIC_DEFAULT_TENANT_SLUG Pre-fills Tenant ID on the sign-in page (build time). Useful for single-organisation installs
BACKEND_ADMIN_BASE_URL API address the Overseer server uses
PORT API port (8000)

Email (SMTP)

Variable Default Purpose
SMTP_HOST empty Empty = no email; messages are written to the API log
SMTP_PORT 587
SMTP_USERNAME, SMTP_PASSWORD –
SMTP_FROM orbit@localhost From address
SMTP_USE_TLS true

Emails Orbit sends: password reset, two-step codes, invitations, portal submission confirmations, and reports (manual and scheduled). Report emailing returns Email delivery is not configured (SMTP) when SMTP is empty.

Integrations

Variable Purpose
PLACEKIT_API_KEY Platform-default address-search key (tenants can override it)
NEXT_PUBLIC_PLACEKIT_API_KEY, NEXT_PUBLIC_PLACEKIT_COUNTRIES Client-side PlaceKit key and countries (e.g. ca) (build time)

Worker

Variable Default Purpose
WORKER_POLL_INTERVAL_SECONDS 5 Loop tick, and how often pending imports are claimed
WORKER_SCHEMA_POLL_INTERVAL 60 How often the active-tenant list is refreshed
WORKER_REMINDER_INTERVAL_SECONDS 60 Reminder generation (0 disables)
WORKER_SCHEDULE_INTERVAL_SECONDS 60 Report schedule executor (0 disables)
WORKER_CLEANUP_INTERVAL_SECONDS 3600 Expired portal submission cleanup (0 disables)

Misc

Variable Default Purpose
cors_origin * Allowed origins (comma list) for /v1/* and /api/*
cors_supports_credentials false
debug_mode false Verbose errors
buildBar / GIT_BRANCH, NEXT_PUBLIC_GIT_BRANCH dev Build label shown in the sidebar and /ping
appname Orbit Product name in emails