Settings and Environment Variables

These variables are read by modules under SIEMatic/settings/. Boolean values accept 1, true, yes, or on (case-insensitive); other values are false.

Variable Default Purpose
DATABASE_ENGINE django.db.backends.sqlite3 Django database backend. Compose uses PostgreSQL.
DATABASE_HOST empty Database server hostname.
DATABASE_NAME db.sqlite3 Database name or SQLite file path.
DATABASE_PASSWORD empty Database user's password.
DATABASE_PORT empty Database server port.
DATABASE_USER empty Database username.
DEFAULT_FROM_EMAIL siematic@example.com Sender address for application email.
DJANGO_ALLOWED_HOSTS role-specific local hosts Comma-separated hostnames accepted by Django.
DJANGO_CSRF_TRUSTED_ORIGINS empty Comma-separated scheme://host origins Django accepts unsafe requests from. Set this to the external URL when running behind an ingress or route.
DJANGO_DEBUG False Enables Django debug mode. Never enable in production.
DJANGO_LOG_LEVEL INFO Python and Django logging level.
DJANGO_LOG_TO_FILE True Writes logs to logs/ in addition to stdout. Set false in containers, where the working directory may not be writable.
DJANGO_SECRET_KEY none (required) Django signing secret; startup fails when absent or left at the placeholder.
DJANGO_TIME_ZONE UTC Time zone used to render timestamps. Keep UTC when correlating with other systems.
DJANGO_TRUST_PROXY_PROTO_HEADER False Reads the request scheme from X-Forwarded-Proto. Only enable when a trusted proxy sets that header.
EMAIL_BACKEND file-based backend Django email backend import path.
EMAIL_HOST localhost SMTP server hostname.
EMAIL_HOST_PASSWORD empty SMTP password.
EMAIL_HOST_USER empty SMTP username.
EMAIL_PORT 25 SMTP server port.
EMAIL_USE_SSL False Connect to SMTP with implicit TLS. Mutually exclusive with EMAIL_USE_TLS.
EMAIL_USE_TLS False Upgrade the SMTP connection with STARTTLS. Mutually exclusive with EMAIL_USE_SSL.
INDEXER_CA_BUNDLE empty CA certificate bundle used by agents to verify the indexer.
INDEXER_HOSTNAME localhost Indexer hostname used by agent and indexer role settings.
INDEXER_MODE unset Selects the indexer's minimal URL configuration and disables the debug toolbar.
INDEXER_PASSWORD none Password used by an agent to authenticate to the indexer.
INDEXER_PORT 8000 Indexer port; Compose normally overrides this.
INDEXER_SSL_CERT empty Indexer TLS certificate path.
INDEXER_SSL_KEY empty Indexer TLS private-key path.
INDEXER_TLS value of SIEMATIC_TLS_ENABLED Enables TLS for agent-to-indexer transport.
INDEXER_USERNAME none Username used by an agent to authenticate to the indexer.
OIDC_GROUP_CLAIM realm_access.roles Dotted path to the roles claim. Keycloak nests realm roles here.
OIDC_GROUP_MAP {} JSON object mapping a provider role to the Django groups it grants, for example {"example-admin": ["Registered User"]}. Rewritten on every login.
OIDC_ISSUER empty Realm issuer URL, for example https://keycloak.example/realms/example. Setting it turns provider login on; leaving it empty keeps local passwords as the only option.
OIDC_OP_AUTHORIZATION_ENDPOINT derived from OIDC_ISSUER Override for a provider that does not use Keycloak's endpoint layout.
OIDC_OP_JWKS_ENDPOINT derived from OIDC_ISSUER Override for the signing key set.
OIDC_OP_TOKEN_ENDPOINT derived from OIDC_ISSUER Override for the token endpoint.
OIDC_OP_USER_ENDPOINT derived from OIDC_ISSUER Override for the userinfo endpoint.
OIDC_PROVIDER_NAME Keycloak Name shown on the login button.
OIDC_RP_CLIENT_ID empty Client ID registered in the realm. Required once OIDC_ISSUER is set.
OIDC_RP_CLIENT_SECRET empty Client secret for a confidential client.
OIDC_RP_SCOPES openid email profile Scopes requested at login.
OIDC_RP_SIGN_ALGO RS256 Algorithm the provider signs tokens with.
OIDC_STAFF_ROLES empty Comma-separated roles granting Django admin access. Empty means no role does.
OIDC_SUPERUSER_ROLES empty Comma-separated roles granting superuser. Empty means no role does.
SIEMATIC_AGENT_ID machine hostname Stable identity this agent reports to the indexer. Set it explicitly wherever the hostname changes on restart, such as a Kubernetes pod, or every restart registers a new agent.
SIEMATIC_AGENT_SYSMON_ONLY False Deprecated alias for SIEMATIC_AGENT_CORE_ONLY.
SIEMATIC_AGENT_CORE_ONLY False Uses the cross-platform Sysmon, network-security, and host-security-posture plugins instead of platform defaults.
SIEMATIC_ANON_THROTTLE_RATE 20/hour DRF anonymous request throttle rate.
SIEMATIC_INGEST_THROTTLE_RATE 20000/hour DRF event-ingestion throttle rate.
SIEMATIC_SEARCH_THROTTLE_RATE 120/min DRF search throttle rate.
SIEMATIC_AGENT_PROFILE empty Path to one JSON profile that replaces the default plugin list with one restricted plugin. Empty keeps the normal plugin set. Credentials come from environment variables, not the profile file.
SIEMATIC_TLS_ENABLED False Enables HTTPS-oriented cookie, redirect, and HSTS settings.

Agent profiles

An agent profile is one JSON document with version, plugin, and poll_interval. A kube_logs profile also has a non-empty targets list. Each target needs namespace, deployment or selector, container, index, source, and sourcetype. A keycloak_events profile needs realm, index, source, and host.

The loader requires INDEXER_USERNAME and INDEXER_PASSWORD. A Keycloak profile also requires KEYCLOAK_BASE_URL, KEYCLOAK_CLIENT_ID, KEYCLOAK_CLIENT_SECRET, and KEYCLOAK_TOKEN_REALM. It accepts the optional KEYCLOAK_CA_BUNDLE. Profiles never contain credentials.

Python settings

SIEMATIC_SEARCH["SUMMARY_DATE_FORMATS"] is an ordered list of Python strptime formats used to identify date columns in search-result summaries. Its defaults are %Y-%m-%d, %Y-%m-%d %H:%M:%S, %m/%d/%Y, and %d/%m/%Y. Add or replace entries in the Django settings module when result data uses a different date representation.