Skip to main content

Server Configuration Reference

This page documents all ServerConfig fields and environment variables for running a Multiforum instance.

ServerConfig Fields

The ServerConfig type in the database stores server-wide settings.

Basic Information

FieldTypeDescription
serverNameString!Unique identifier for the server (must match VITE_SERVER_NAME)
serverDescriptionStringPublic description shown on the homepage
serverIconURLStringURL to server icon/logo image
rulesJSONServer-wide rules (Markdown supported)

Feature Toggles

FieldTypeDefaultDescription
enableDownloadsBooleantrueAllow downloadable file attachments
enableEventsBooleantrueAllow event creation

File Settings

FieldTypeDescription
allowedFileTypes[String]List of allowed file extensions (e.g., [".stl", ".zip"])

Plugin Settings

FieldTypeDescription
pluginRegistries[String]URLs to plugin registry endpoints
pluginPipelinesJSONPipeline configuration for plugin execution

Relationships

RelationshipTargetDescription
Admins[User]Server administrators
Moderators[ModerationProfile]Server-level moderators
PendingAdminInvites[User]Pending admin invitations
PendingModInvites[User]Pending moderator invitations
SuspendedUsers[Suspension]Server-level suspended users
SuspendedMods[Suspension]Server-level suspended moderators
AllowedPlugins[Plugin]Allowed plugins
InstalledVersions[PluginVersion]Installed plugin versions

Role Relationships

RelationshipTargetDescription
DefaultServerRoleServerRoleDefault permissions for all users
DefaultModRoleModServerRoleDefault moderator permissions
DefaultElevatedModRoleModServerRoleElevated moderator permissions
DefaultSuspendedRoleServerRolePermissions for suspended users
DefaultSuspendedModRoleModServerRolePermissions for suspended moderators

Backend Environment Variables

Required

VariableDescription
NEO4J_URINeo4j connection URI (e.g., bolt://localhost:7687)
NEO4J_USERNeo4j username
NEO4J_PASSWORDNeo4j password
AUTH0_DOMAINAuth0 tenant domain
AUTH0_CLIENT_IDAuth0 client ID

Server Settings

VariableDefaultDescription
PORT4000Server port

File Storage

VariableDescription
GCS_BUCKET_NAMEGoogle Cloud Storage bucket name
GOOGLE_CREDENTIALS_BASE64Base64-encoded GCP service account JSON

Email

VariableDefaultDescription
EMAIL_PROVIDERresendEmail provider: "resend" or "sendgrid"
RESEND_API_KEY-Resend API key (if using Resend)
SENDGRID_API_KEY-SendGrid API key (if using SendGrid)
EMAIL_FROM-Sender email address
SUPPORT_EMAIL-Support contact email

Plugins

VariableDescription
PLUGIN_SECRET_ENCRYPTION_KEYEncryption key for plugin secrets

Monitoring

VariableDescription
SLACK_WEBHOOK_URLSlack webhook for mutation logging

Testing

VariableDescription
E2E_MOCK_AUTHEnable mock auth for testing
PLAYWRIGHT_MOCK_AUTHEnable mock auth for Playwright
GENERATE_OGM_TYPESSet to "true" to generate OGM types

Frontend Environment Variables

Required

VariableDescription
VITE_GRAPHQL_URLGraphQL API endpoint
VITE_SERVER_NAMEServer name (must match backend ServerConfig)
VITE_AUTH0_DOMAINAuth0 tenant domain
VITE_AUTH0_CLIENT_IDAuth0 client ID
VITE_AUTH0_CLIENT_SECRETAuth0 client secret
VITE_AUTH0_AUDIENCEAuth0 API audience
VITE_AUTH0_CALLBACK_URLAuth0 callback URL
VITE_LOGOUT_URLLogout redirect URL

Application Settings

VariableDescription
VITE_BASE_URLBase URL for the frontend
VITE_SERVER_DISPLAY_NAMEUser-facing server name
VITE_ENVIRONMENTEnvironment: development, staging, production
VITE_ENABLE_LANGUAGE_PICKEREnable language selection

Authentication

VariableDescription
VITE_AUTH0_SCOPEAuth0 permission scopes
VITE_AUTH0_URLAuth0 token endpoint

External Services

VariableDescription
VITE_GOOGLE_MAPS_API_KEYGoogle Maps API key
VITE_GOOGLE_MAP_IDGoogle Maps Map ID (for styling)
VITE_OPEN_CAGE_API_KEYOpenCage geocoding API key
VITE_GOOGLE_CLOUD_STORAGE_BUCKETGCS bucket for uploads
VITE_OPEN_GRAPH_API_KEYOpenGraph API key
VITE_LIGHTGALLERY_LICENSE_KEYLightgallery license

Error Tracking

VariableDescription
VITE_SENTRY_DSNSentry Data Source Name
VITE_SENTRY_AUTH_TOKENSentry authentication token

Deployment

VariableDescription
NITRO_PRESETDeployment preset (vercel, netlify, node-server)
GRAPHQL_URL_FOR_TYPESGraphQL URL for codegen

Testing

VariableDescription
VITE_AUTH0_USERNAMETest user username
VITE_AUTH0_PASSWORDTest user password
VITE_AUTH0_USERNAME_2Secondary test username
VITE_AUTH0_PASSWORD_2Secondary test password

ServerRole Permissions

Default permissions for user roles:

PermissionDescription
canCreateChannelCreate new channels
canCreateDiscussionPost discussions
canCreateEventCreate events
canCreateCommentComment on content
canUpvoteDiscussionUpvote discussions
canUpvoteCommentUpvote comments
canUploadFileUpload files
canGiveFeedbackGive feedback comments

ModServerRole Permissions

Default permissions for moderator roles:

PermissionDescription
canReportReport content
canGiveFeedbackGive feedback
canHideCommentArchive comments
canHideDiscussionArchive discussions
canHideEventArchive events
canEditCommentsEdit others' comments
canEditDiscussionsEdit others' discussions
canEditEventsEdit others' events
canSuspendUserSuspend users
canLockChannelLock channels
canOpenSupportTicketsOpen support issues
canCloseSupportTicketsClose support issues
canArchiveImageArchive images
canPermanentlyRemoveImagePermanently delete images
canDeleteWikiDelete wiki pages

Initial Setup

When setting up a new server, create the ServerConfig:

CREATE (s:ServerConfig {
serverName: "your-server-name",
serverDescription: "Your server description",
enableDownloads: true,
enableEvents: true
})

Add the first admin:

MATCH (u:User {username: "your-username"})
MATCH (s:ServerConfig {serverName: "your-server-name"})
CREATE (u)-[:ADMIN_OF_SERVER]->(s)

Create default roles (via admin panel or directly in database).