import { Aside } from ‘@astrojs/starlight/components’;
Orimora is configured entirely through environment variables (and team-level preferences in the database). The source of truth is .env.example at the repository root; this page gives a structured overview and links related behavior.
Variable Required Description APP_URLYes (prod)Public base URL, e.g. https://wiki.example.com. Drives magic links and OAuth redirects. Dev: http://localhost:5173. NODE_ENV— development or production.PORT— HTTP listen port (default 3000 in Docker; Vite dev uses its own port).
Variable Required Description DATABASE_URLYes PostgreSQL 16+ connection string. REDIS_URLYes Used for sessions, rate limiting, queues, and BullMQ workers.
Variable Required Description SESSION_SECRETYes 64 hex chars (32 bytes). Signs session cookies. MAGIC_LINK_SECRETYes 64 hex chars. Signs magic-link JWTs.
Generate both with:
node -e " console.log(require('crypto').randomBytes(32).toString('hex')) "
If SMTP is unset , magic-link email is not sent (use OAuth or another strategy in dev).
Variable Description SMTP_HOSTServer hostname SMTP_PORTUsually 587 (STARTTLS) or 465 SMTP_USERUsername SMTP_PASSWORDPassword (name in .env.example) SMTP_FROMFrom address
Variable Description GOOGLE_CLIENT_IDOAuth client ID GOOGLE_CLIENT_SECRETOAuth client secret
Authorized redirect URI (replace host with yours):
{APP_URL}/auth/google/callback
Variable Description OIDC_ISSUERIssuer URL OIDC_CLIENT_IDClient ID OIDC_CLIENT_SECRETClient secret OIDC_SCOPESpace-separated scopes (default openid email profile)
Redirect URI pattern:
{APP_URL}/auth/oidc/callback
Variable Description COLLAB_SECRETOptional shared secret for the collab endpoint COLLAB_MAX_CONNECTIONSMax concurrent WebSocket connections
The editor connects to /collab on the same origin as the app.
S3-compatible storage for attachments when enabled in the product:
Variable Description S3_BUCKETBucket name S3_REGIONRegion S3_ACCESS_KEY / S3_SECRET_KEYCredentials S3_ENDPOINTCustom endpoint (e.g. MinIO)
Variable Required Description LLM_ENCRYPTION_KEYYes 64 hex chars — encrypts API keys stored for LLM providers.
Variable Description CRON_SECRETBearer token for POST /api/admin/cron.cleanup — trash purge, pending invite reminders. If empty, external cron must not call the endpoint (or it will reject).
Variable Description ORIMORA_API_KEYConvenience for local tooling / MCP (yarn mcp) — create a key in Settings → Developers and paste it here.
Some defaults are stored per team and updated via the app or internal APIs, for example:
Concern Notes Default document width normal / wideDefault language for members Locale string Revision retention Upper bound of stored snapshots per document
See the admin settings UI and REST API overview for integration boundaries.
Store `SESSION_SECRET`, `MAGIC_LINK_SECRET`, `LLM_ENCRYPTION_KEY`, and database credentials in a **secret manager** in production. Never commit `.env`.