Skip to main content

Server Configuration Reference

Multiforum configuration has two layers:

  1. Environment variables describe deployment capabilities, credentials, image versions, and public URLs.
  2. ServerConfig and related role nodes contain administrator-controlled forum settings.

Use .env.quickstart.example for local evaluation and .env.production.example with the production Compose overlay. The examples in the deployment repository are authoritative and are validated in CI.

Automatic setup

When the database is empty, the backend creates ServerConfig, default roles, and the initial administrator relationship. Manual Cypher initialization is no longer required for the supported Compose paths.

The quick-start uses:

MULTIFORUM_AUTH_PROVIDER=local-dev
MULTIFORUM_BOOTSTRAP_EMAIL=admin@multiforum.local
MULTIFORUM_BOOTSTRAP_USERNAME=admin
MULTIFORUM_BOOTSTRAP_PASSWORD=multiforum-local-admin

Production uses Auth0 and MULTIFORUM_SUPERADMIN_EMAIL. Local bootstrap password authentication must never be exposed publicly.

Production deployment variables

Instance and network

VariableDescription
MULTIFORUM_DOMAINPublic hostname without scheme or path
MULTIFORUM_INSTANCE_NAMEUser-facing instance name
MULTIFORUM_BIND_ADDRESSHost address for diagnostic ports; production defaults to loopback
CADDY_ACME_EMAILACME contact used by Caddy

Pinned images

VariableDescription
MULTIFORUM_NEO4J_IMAGETested Neo4j image reference
MULTIFORUM_BACKEND_IMAGEOfficial backend image reference
MULTIFORUM_BACKEND_PULL_POLICYCompose pull policy
MULTIFORUM_FRONTEND_IMAGEOfficial frontend image reference
MULTIFORUM_FRONTEND_PULL_POLICYCompose pull policy
MULTIFORUM_CADDY_IMAGETested Caddy image reference

Use release or immutable sha-* tags in production rather than edge or latest.

Required secrets and identity

VariableDescription
NEO4J_PASSWORDNeo4j password
MULTIFORUM_SUPERADMIN_EMAILVerified Auth0 break-glass administrator email
PLUGIN_SECRET_ENCRYPTION_KEY32-character key used to protect plugin secrets
AUTH0_DOMAINAuth0 tenant domain
AUTH0_CLIENT_IDAuth0 Regular Web Application client ID
AUTH0_AUDIENCEAuth0 API identifier
NUXT_AUTH0_CLIENT_SECRETAuth0 Regular Web Application client secret
NUXT_AUTH0_SESSION_SECRETLong secret protecting frontend sessions

The production overlay derives the frontend base URL, logout URL, callback base, and GraphQL proxy configuration from MULTIFORUM_DOMAIN. Do not recreate the former VITE_AUTH0_* or VITE_GRAPHQL_URL configuration.

Optional object storage

VariableDescription
GCS_BUCKET_NAMEPublic image/upload bucket
GCS_PRIVATE_DOWNLOAD_BUCKET_NAMEPrivate downloadable-file bucket
GOOGLE_CREDENTIALS_BASE64Base64 service-account JSON

If these remain empty, upload capabilities remain disabled.

Optional maps and geocoding

VariableDescription
GOOGLE_MAPS_API_KEYBrowser-restricted Google Maps key
GOOGLE_MAP_IDOptional Google Map ID
OPEN_CAGE_API_KEYOpenCage geocoding key

The production image receives these values at runtime through NUXT_PUBLIC_* runtime configuration. Rebuilding the frontend is not required.

Optional email

VariableDescription
EMAIL_PROVIDERresend or sendgrid
EMAIL_FROMSender address
RESEND_API_KEYResend API key
SENDGRID_API_KEYSendGrid API key
SENDGRID_FROM_EMAILOptional SendGrid-specific sender address

Email gracefully no-ops when it is unconfigured.

Capability status

The backend reports setup state for authentication, email, maps, geocoding, uploads, downloads, events, and plugins. Each capability can distinguish configured from enabled and report missing required variables. The frontend uses this as the source of truth for Admin → Instance Setup and feature placeholders.

ServerConfig fields

Basic information

FieldTypeDescription
serverNameStringInstance identifier/name
serverDescriptionStringPublic description
serverIconURLStringServer icon URL
rulesJSONServer-wide rules

Feature toggles

FieldTypeDescription
enableDownloadsBooleanAllow download features when storage is configured
enableEventsBooleanAllow event features
allowedFileTypes[String]Server-level allowed file extensions

Plugins

FieldTypeDescription
pluginRegistries[String]Plugin registry endpoints
pluginPipelinesJSONOrdered event pipeline configuration

Installed plugin versions, administrators, moderators, suspensions, invitations, and default roles are represented through relationships from ServerConfig.

Default roles

First-run setup creates default user, moderator, elevated moderator, suspended user, and suspended moderator roles. Administrators can review their detailed permissions under Admin → Roles. See the Admin Settings Reference for the permissions and membership workflow.

Validate configuration

Before a production start or upgrade:

docker compose \
--env-file .env.production \
-f docker-compose.yml \
-f docker-compose.production.yml \
config --quiet

Compose rejects empty required production values. After startup, run:

scripts/verify-self-hosting.sh --env-file .env.production