Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

The whole project is configured by a single config.yml file at the root of the repository: the backend, tracker, and frontend build all read it. It is git-ignored. Some of those values are overridden by the Environment Variables in .env at runtime

cp config.example.yml config.yml
cp example.env .env

config.example.yml documents every key and serves as the reference. Settings are annotated with tags for each environment:

  • # Production: Settings that must be changed before deploying publicly (secrets, domain URLs, SMTP).
  • # Bare-metal: Settings requiring host-specific adjustments when running without Docker.
  • # Development: Settings useful during local testing (e.g. verbose logging).
  • # Optional: Optional integrations and external plugins.

.env is used by Docker Compose to configure passwords and tokens shared across multiple services (such as PostgreSQL, Redis, Chevereto, and Ergo IRC).

For a local test with Docker Compose, the default credentials work out of the box. For a production environment, change all secrets and URLs.

Environment Variables

Any setting in config.yml can be overridden via environment variables using the naming convention: ARCADIA_<SECTION>__<KEY> (single underscore after ARCADIA_, double underscore __ between sections and keys). Environment variables always take precedence over values in config.yml.

Note

Docker Compose vs. Host Environment: Docker Compose uses .env to interpolate ${VARIABLE} expressions defined in compose.yml. Arbitrary ARCADIA_<SECTION>__<KEY> variables placed in .env are not automatically forwarded into containers unless they are explicitly declared under environment: in compose.yml or added via compose.override.yml.

Common Environment Variable Overrides

SettingYAML KeyEnvironment Variable
Database passworddatabase.passwordARCADIA_DATABASE__PASSWORD=secret
Database hostdatabase.hostARCADIA_DATABASE__HOST=db
Redis passwordredis.passwordARCADIA_REDIS__PASSWORD=secret
Redis hostredis.hostARCADIA_REDIS__HOST=redis
API host & portapi.host, api.portARCADIA_API__HOST=0.0.0.0, ARCADIA_API__PORT=8080
Tracker host & porttracker.host, tracker.portARCADIA_TRACKER__HOST=0.0.0.0, ARCADIA_TRACKER__PORT=8081
JWT Secretapi.jwt_secretARCADIA_API__JWT_SECRET=supersecret
Tracker API Keytracker.api_keyARCADIA_TRACKER__API_KEY=anothersecret

Site Customization & Theming

For configuring the site logo, favicon, custom landing pages, and unauthenticated CSS/JS stylesheets, see Customization & Theming.

Optional Integrations

Some services bundled with Arcadia require additional configuration: