Setup

Configuration

Server settings, environment variables, and the admin console.

Settings registry

Most runtime knobs live in the database-backed settings registry and are edited in the admin console (/admin) — branding, registration, legal documents, retention, SMTP, rate limits, upload limits, bots.

Environment

The required environment is three values: TYTO_VERSION, SERVER_DOMAIN and CORS_ALLOW_ORIGIN. Everything else has a working default:

  • CORS_ALLOW_ORIGIN — origins of your web clients (space- or comma-separated; several web clients are fine). Browsers only: native desktop/mobile clients don’t use CORS, so with no web client it stays empty.
  • Secrets (database passwords, Meilisearch master key, LiveKit key/secret, JWT/Mercure/media/VAPID app keys) are auto-generated into the shared secrets volume on first boot by the secrets-init service. Any of them set in .env overrides the generated value — that’s the path for a managed database or an external LiveKit.
  • Public URLs (DEFAULT_URI, SERVER_API_URL, LIVEKIT_PUBLIC_URL, Mercure) derive from SERVER_DOMAIN, the API’s public hostname. Behind a reverse proxy (BEHIND_PROXY=true) SERVER_DOMAIN stays that real public hostname; set the URLs explicitly only if they differ from it.
  • MAILER_DSN is an optional fallback — real SMTP lives in the admin panel.

The full variable-by-variable reference — proxy and port overrides, voice, external services, the auto-generated secrets — is in Advanced configuration; the same list ships annotated as .env.prod.example in the core repo.

Email

Configure SMTP in Admin → Settings → Email, including the From address used for registration and digest mail. A test-email button verifies the configuration end to end.