Skip to main content

Configuration reference

Generated from api/src/utils/config.ts. Secrets are read from Docker secret files at /run/secrets/<name> (with an env-var fallback for local dev); everything else is an environment variable.

Never commit secrets

The values for items marked secret belong in the secrets/ directory (mounted as Docker secrets) or a secret manager — never in source control or plain .env committed to a repo.

VariableTypeRequiredDefaultNotes
DATABASE_URLurlYes—Must be a valid URL.
db_passwordsecretYes—Docker secret file db_password (no env-var fallback).
integration_encryption_keysecretYes—Docker secret file integration_encryption_key (no env-var fallback).
JWT_SECRETsecretYes—Docker secret jwt_secret; min length 32.
OPENSEARCH_URLurlYes—Must be a valid URL.
TICKETRA_ADMIN_PASSWORDsecretYes—Docker secret admin_password; min length 12.
TICKETRA_ADMIN_USERNAMEstringYes—Required.
ALLOWED_ORIGINSstringNo—CORS allowlist — comma-separated list of allowed origins.
ATTACHMENTS_DIRstringNo/app/data/attachments—
AVATAR_DIRstringNo——
BACKUP_DIRstringNo/app/data/backups—
INTEGRATION_ENCRYPTION_KEYstringNo——
INTEGRATION_ENCRYPTION_KEY_FILEstringNo——
LOG_LEVELenumNoinfoOne of: debug, info, warn, error.
MAX_ATTACHMENT_SIZE_MBintegerNo10—
MAX_AVATAR_SIZE_MBintegerNo2—
NODE_ENVstringNo—Set to production in production (enables Secure cookies).
PORTintegerNo8080—
RATE_LIMIT_AVATAR_UPLOADS_PER_MINintegerNo3—
RATE_LIMIT_LOGIN_IP_PER_MINintegerNo30—
RATE_LIMIT_LOGIN_PER_MINintegerNo10—
SESSION_TTL_HOURSintegerNo8—