Users and secrets
flowchart LR
H[Host ./config] -->|bind mount| C[Container /config]
H --> U[users_database.yml]
H --> S[secrets directory]
U --> F[File authentication backend]
S --> E[Secret-file environment variables]
S --> O[OIDC signing and client material]
Storage map
host service directory:
/home/loca/dev/services/authelia
Compose bind mount:
host ./config
container /config
user database:
host /home/loca/dev/services/authelia/config/users_database.yml
container /config/users_database.yml
authentication backend: file
secret directory:
host /home/loca/dev/services/authelia/config/secrets
container /config/secrets
other runtime state:
SQLite: /config/db.sqlite3
filesystem notifications: /config/notification.txt
README states generated secrets, user database, SQLite state, and notification output are intentionally ignored by Git
Ownership and inspection result
verified filesystem modes on 2026-08-27:
config/secrets: root-owned, mode 0700
config/users_database.yml: root-owned, mode 0600
unprivileged inspection:
reading the live user database returned Permission denied
no password hash or secret was read or copied into this wiki
no complete live username inventory is claimed
known bootstrap identity:
username loca
source: service README.md and the default argument in set-owner-password.sh
File-backend layout
structure defined by set-owner-password.sh:
root key: users
username key: loca by default
account fields:
disabled
displayname
password
email
groups
configured bootstrap group:
password field:
stores an Argon2id digest
must never contain a plaintext password
must never be copied to this wiki, chat, ticket, or shell history
helper warning:
the current helper installs a complete replacement database containing one username
it is not a merge tool
use only through the approval-marked procedure in Operator runbook
Secret-file map
Compose environment reads:
session secret: /config/secrets/SESSION_SECRET
storage encryption key: /config/secrets/STORAGE_ENCRYPTION_KEY
reset-password JWT secret: /config/secrets/JWT_SECRET
OIDC HMAC secret: /config/secrets/OIDC_HMAC_SECRET
templated OIDC configuration reads:
signing private key: /config/secrets/oidc/jwks/private.pem
LiteLLM client-secret digest: /config/secrets/oidc/client-secret.digest
Coder client-secret digest: /config/secrets/oidc/coder-client-secret.digest
safe documentation rule:
path, owner, mode, and purpose may be documented
file contents, digests, tokens, cookies, private keys, and plaintext credentials must never be printed
If a secret might have leaked
immediate handling:
do not paste the suspected value anywhere else
identify which consuming subsystem uses the file
ask the operator before rotation, service restart, or destructive cleanup
reason:
rotation is a migration and service-change action
changing session or encryption secrets can invalidate sessions or make stored data unreadable
evidence handling:
record the path and incident time
do not record the value