Skip to content

Configuration

Lef edited this page Oct 3, 2026 · 1 revision

Configuration

All settings live in .env in the repo root (gitignored). env.template lists everything with comments. docker-compose.yml passes the values into the containers.

After changing .env, recreate the affected container so it picks up the new values (a plain restart is not enough):

docker compose up -d backend

The settings that matter

Variable What it does
FLASK_SECRET_KEY, JWT_SECRET_KEY Secrets for sessions and login tokens. Generate your own (see Installation)
POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD Database name and credentials. Used by both the postgres container and the backend
DATABASE_TYPE postgresql (SQLite is legacy, only for old migrations)
DATABASE_HOST Must be localhost, because the backend runs on the host network
LM_STUDIO_URL Default http://localhost:1234
LM_STUDIO_MODEL auto picks the model LM Studio has loaded. Or set an exact id like google/gemma-4-e2b
LM_STUDIO_TIMEOUT Seconds to wait for a reply (compose default 120)
LM_STUDIO_REASONING_EFFORT none turns off "thinking" on reasoning models like Gemma 4. Leave empty for the model default. See AI Models
OLLAMA_URL, OLLAMA_MODEL Ollama on the host. The router uses llama3.2:3b
SMTP_* Optional. Leave SMTP_HOST empty to skip welcome emails
MAIL_ADMIN_ALERT_EMAIL Optional. Gets an email when someone tries a wrong invite code (needs SMTP)
BOOK_SOURCE_URL Only for books/sync.sh, see World of Darkness Books

Invite codes (backend/invites.json)

Registration is invite only. The file is gitignored; start from backend/invites.template.json:

{
  "invites": {
    "ADMIN-XXXXXX-XXXXXX": {
      "type": "admin",
      "description": "My admin account",
      "max_uses": 1,
      "uses": 0,
      "created_at": "2026-10-04T00:00:00",
      "created_by": "setup"
    }
  }
}
  • type is admin or player
  • uses goes up by one on each registration. When it reaches max_uses the code stops working
  • The backend re-reads the file on each registration, so no restart is needed after editing it

Use random codes (for example ADMIN-$(openssl rand -hex 3)-$(openssl rand -hex 3)), not the template examples.

Clone this wiki locally