Citadel
Getting started

Docker Compose configuration

Change Citadel settings without losing your installation data.

Citadel's installation settings live in .env beside docker-compose.yml in your installation directory. Application settings, such as Platforms and Deployments, are managed in the browser.

Prepare the environment

The installation guide downloads the environment template as .env. Open that file in a text editor to change settings.

Enter the database password without surrounding quotes. A long, randomly generated password containing letters and numbers avoids environment-file parsing problems.

Do this only for a new installation. Keep your existing .env when upgrading. The example is a local HTTP setup, not a ready-made public installation.

Settings most installations need

SettingExample defaultWhen to change it
PG_PASSWORDEmptyAlways set a long, unique database password before starting
CITADEL_IMAGEEmpty → ghcr.io/citadel-p/citadel:latestOptional: pin a specific version or use another registry
CITADEL_BIND_ADDRESS127.0.0.1Change only after configuring secure network access
CITADEL_HTTP_PORT18000Change if this host port is already in use
CITADEL_EDGE_PORT18001Host port for the separate Edge Agent connection
Transport__ModeDisabledChoose ReverseProxy or Direct for HTTPS network access
Transport__PublicUrlhttp://localhost:18000Set to the browser address users will open
EdgeAgent__PublicGrpcUrlhttp://localhost:18001Set to the reachable gRPC address for Edge Agents
AllowedHostsLocal hostnamesInclude the hostname of your shared installation

The supplied PostgreSQL values are PG_HOST=pg_db, PG_PORT=5432, PG_USER=citadel, and PG_DATABASE=citadel. These match the Compose database service. Do not change them independently on an existing installation.

Transport mode

  • Disabled: HTTP for local evaluation on loopback or an isolated test network.
  • ReverseProxy: an HTTPS proxy sits in front of Citadel. Configure the immediate trusted proxy addresses and public URLs.
  • Direct: Citadel serves TLS. Configure certificate and key paths, then include compose.direct-tls.yml.

The complete instructions are in TLS and secure Agent transport. Browser traffic and Edge Agent traffic use separate listeners. Their container ports (8000 and 8001) differ from the default host ports (18000 and 18001).

Optional settings

SettingDefaultPurpose
Passwords__MinimumLength15Minimum length for new or changed passwords; accepts 8–128 characters, with a fixed maximum password length of 128
Mfa__PolicyOptionalRequire two-factor authentication for administrators or all users
EnableSwaggerfalseShow API reference pages on your installation
JobConfiguration__MonitoringInterval10Collect metrics every 10 seconds
JobConfiguration__FlashInterval60Save buffered metrics every 60 seconds
Jwt__AccessToken__ValidForMinutes15Access-token lifetime
Jwt__RefreshToken__ValidForDays30Refresh-token lifetime
Automations__EnabledtrueAllow automation execution
Automations__MaxParallelRuns4Limit concurrent automation runs

Leave Jwt__Key and Secrets__EncryptionKey unset to let Citadel generate and save them in citadel_data. Jwt__Issuer and Jwt__Audience normally follow the public URL when not explicitly configured. Back up the data volume with PostgreSQL so these keys remain available during recovery.

For additional options, use the environment variable reference. Unattended administrator setup is explained in first-run setup.

Apply a setting change

Save .env, then run from your installation directory:

docker compose up -d
docker compose ps

Include your TLS overlay if you use one. Changing an environment variable requires recreating the container; docker compose restart alone does not load the new value. Keep .env, certificates, and bootstrap password files out of screenshots and shared support files.

On this page