Skip to content

Configuration

Two places hold configuration, and the line between them is not arbitrary.

Environment (.env) Admin panel
What How the process runs: ports, database, secrets, proxy trust, log level How the site behaves: titles, registration, forums, integrations
Changing it Edit the file, docker compose up -d Save the form; effective immediately
Who Whoever has the host Whoever has an admin account
Where it lives A file on the host The database

The rule behind the split: anything that needs a restart or a shell is environment; anything an administrator should be able to change without either is in the panel. That is why the Discord bot token, the OAuth client secrets and the shard’s auth token are not environment variables — they are entered in the panel and stored encrypted.

Admin → Settings, the screen most of a new deployment’s decisions live on.

Field What it does
Site title Overrides BRAND_NAME in the page title, the header and link previews.
Homepage teaser Rich text under the hero heading, when no custom hero layout is published.
Maintenance message What visitors see while the site is in maintenance mode.
Status message A short line for announcements — a maintenance window, an outage.
Contact email Where the contact form delivers, and the address it falls back to as a mailto: link while email is unconfigured.
Player registration Disabled, password, SSO, or both. Off by default.

Player registration is off until you turn it on

Section titled “Player registration is off until you turn it on”

A new site accepts no self-registration at all. The three ways to let people in:

  • Password — a normal sign-up form.
  • SSO — sign-up through a linked provider, which needs a provider configured first.
  • Invites — leave registration off entirely and issue invitations from Admin → Invites. See Users and roles.

The same screen carries the forum switches, because they are site-wide policy rather than per-Team settings:

  • Enable team forums — off by default. Switching them off hides them completely (every forum route answers not found) but deletes nothing: threads, posts, access grants and notification preferences all survive and come back exactly as they were.
  • Images in forum posts — disabled, remote URLs only, or uploads to your server. Enabling uploads means content stored on infrastructure you are responsible for, and the screen says so at some length before you can agree to it.
  • Post edit window — how long an author may edit their own post. Staff are not bound by it. Zero makes posts permanent once written; some bound is what stops a post being rewritten out from under someone quoting it.

Configured on the same screen and covered in Notifications and email: pick a mail transport, enter its host, port and credentials, and send a test. It depends on nothing else on the site — a relay is the recommended posture, a mailbox provider over SMTP the simplest, and your own MTA needs no credentials at all.

You wrote these in Install the site; this is what they mean when you come back to them.

Identity and process — NODE_ENV, PORT, INTERNAL_PORT, IMAGE_TAG. INTERNAL_PORT is the server-to-bot channel and must never be published or proxied.

Data and secrets — the DB_* group, JWT_SECRET, SECRET_ENC_KEY, BOT_INTERNAL_KEY. The last two are required in production, and SECRET_ENC_KEY is the key everything else encrypted at rest is keyed by: change it and the stored secrets become unreadable.

Behaviour at the edge — TRUST_PROXY, COOKIE_SECURE, COOKIE_NAME, JWT_EXPIRES_IN. COOKIE_NAME is worth one warning: changing it on a live site logs everybody out.

The BRAND_* variables and the /brand mount are how one prebuilt image runs as any community’s site. They get their own page: Branding and theming.