Skip to main content

Configuration reference

Configuration is read from a TOML file (FileConfig in src/config.rs); the daemon writes a fully-populated default template on first boot. Every field can be overridden by a DENIA_* environment variable — env wins. See ADR-023.

Resolution order

Value precedence (first match wins):

  1. DENIA_* environment variable
  2. TOML file value
  3. Hardcoded default

Config file path (first match wins): $DENIA_CONFIG_FILE (or the CLI --config flag) → operator home via $SUDO_USER$XDG_CONFIG_HOME/denia/config.toml$HOME/.config/denia/config.toml/root/.config/denia/config.toml.

Core

Env overrideTOML keyDefaultPurpose
DENIA_ADMIN_TOKENadmin_tokenauto-generated 64 hexBootstrap bearer for /v1 (min 64 chars)
DENIA_BIND_ADDRbind_addr127.0.0.1:7180Management API listen address
DENIA_DATA_DIRdata_dir/var/lib/deniaRoot for state, artifacts, runtime, logs
DENIA_DATABASE_PATHdatabase_path<data_dir>/sqlite/denia.sqlite3SQLite database path
DENIA_CONFIG_FILEresolved (see above)Explicit config file path (CLI --config)

External binaries

Env overrideTOML keyDefaultPurpose
DENIA_BUILDKIT_BINARYbuildkit_binarybuildctlBuildKit client for Git/Upload builds
DENIA_GIT_BINARYgit_binarygitGit client
DENIA_SOPS_BINARYsops_binarysopsSOPS for secret decryption
DENIA_SOCKET_PROXY_BINARYsocket_proxy_binarycurrent exe / /usr/local/bin/deniaStage-1 socket-proxy helper

Runtime & cgroups

Env overrideTOML keyDefaultPurpose
DENIA_CGROUP_ROOTcgroup_root/sys/fs/cgroup/deniaCgroup v2 root for workloads
DENIA_USERNS_BASEuserns_base100000Host uid that workload uid 0 maps to
DENIA_USERNS_SIZEuserns_size65536User-namespace mapping range size

Ingress, TLS & ports

Env overrideTOML keyDefaultPurpose
DENIA_HTTP_PORThttp_port80Pingora HTTP listen port
DENIA_HTTPS_PORThttps_port443Pingora HTTPS listen port
DENIA_TCP_PORT_RANGEtcp_port_range20000-29999Reserved TCP port range
DENIA_UDP_PORT_RANGEudp_port_range30000-39999Reserved UDP port range
DENIA_ACME_EMAILacme_emailACME account email (required when any service uses TLS)
DENIA_ACME_DIRECTORY_URLacme_directory_urlLet's Encrypt prodUse the LE staging URL for non-prod
DENIA_TLS_DIRtls_dir<data_dir>/tlsACME account key + per-domain certs
DENIA_CONTROL_DOMAINcontrol_domainOptional custom domain for the control plane (ADR-035)
DENIA_CONTROL_TLScontrol_tlsfalseEnable TLS on the control domain

Secrets (age / SOPS)

Env overrideTOML keyDefaultPurpose
DENIA_AGE_KEY_FILEage_key_file~/.config/denia/age.keyAge private key; passed to sops as SOPS_AGE_KEY_FILE
DENIA_AGE_RECIPIENTage_recipientauto-derived from key fileAge public key for encryption (from the # public key: comment if unset)
SOPS_AGE_KEY_FILEset by daemonDecryption key path used by sops at deploy time

Autoscaling

Env overrideTOML keyDefaultPurpose
DENIA_AUTOSCALE_INTERVAL_Sautoscale_interval_s15Control-loop tick (seconds)
DENIA_AUTOSCALE_HEADROOM_CPU_MILLISautoscale_headroom_cpu_millis1000Reserved CPU headroom
DENIA_AUTOSCALE_HEADROOM_MEM_BYTESautoscale_headroom_mem_bytes536870912 (512 MiB)Reserved memory headroom

OCI layer cache (external pulls)

Env overrideTOML keyDefaultPurpose
DENIA_OCI_CACHE_DIRoci_cache_dir<data_dir>/oci-cachePersistent layer cache root
DENIA_OCI_CACHE_VERIFY_ON_HIToci_cache_verify_on_hitsizeHit verification: none / size / full
DENIA_OCI_GC_INTERVAL_SECSoci_gc_interval_secs604800 (7d)Cache GC scan interval
DENIA_OCI_GC_RETENTION_SECSoci_gc_retention_secs604800 (7d)Blob retention threshold

Hosted registry

Env overrideDefaultPurpose
DENIA_REGISTRY_GC_INTERVAL_SECS86400 (24h)Hosted registry GC scan interval
DENIA_REGISTRY_GC_GRACE_SECS3600 (1h)Grace period guarding in-flight pushes
DENIA_REGISTRY_MAX_BLOB_BYTES10737418240 (10 GiB)Max size per blob upload
DENIA_REGISTRY_MAX_MANIFEST_BYTES16777216 (16 MiB)Max manifest size

Uploads (denia push)

Env overrideTOML keyDefaultPurpose
DENIA_UPLOADS_DIRuploads_dir<data_dir>/uploadsStaging area for push tarballs
DENIA_UPLOAD_MAX_BYTESupload_max_bytes536870912 (512 MiB)Max compressed (on-the-wire) body
DENIA_UPLOAD_MAX_UNCOMPRESSED_BYTESupload_max_uncompressed_bytes2147483648 (2 GiB)Max extracted size
DENIA_UPLOAD_MAX_ENTRIESupload_max_entries200000Max tar entries per archive
DENIA_UPLOAD_TTL_SECSupload_ttl_secs3600 (1h)TTL before a staged upload is GC-eligible

Observability

Env overrideTOML keyDefaultPurpose
DENIA_NODE_DISK_PATHnode_disk_path<data_dir>Path used for disk-usage metrics (statvfs)

:::note Source of truth The authoritative list lives in src/config.rs. Defaults shown here track that file; if you build from a newer revision, the first-boot config.toml template is always the ground truth for your version. :::