# authelia: секреты из файлов **Приоритет:** Средний В `configuration.template.yml` прямыми значениями стоят семь позиций: jwt-секрет валидации, секрет сессий, ключ шифрования хранилища, hmac-секрет OIDC, приватный jwks-ключ, четыре `client_secret` и пароль SMTP. Файл на тысячу строк — дифф по нему самый ценный в репозитории, и именно его сейчас приходится глушить целиком. Пять полей закрываются переменными `AUTHELIA_..._FILE`. Оставшиеся два — `jwks[].key` и `client_secret` клиентов — через `_FILE` невозможны в принципе: валидатор отвергает ключи, содержащие `[]`. Их покрывает template-фильтр (`X_AUTHELIA_CONFIG_FILTERS=template` + `{{ secret "путь" }}`). Механизмы несовместимы в одном поле, поэтому проще выбрать фильтр — он берёт все семь позиций разом, `_FILE` только пять. Отдельная и более дешёвая половина задачи: четыре `client_secret` штатно хранятся **хэшем** `$pbkdf2-sha512$...` — плейнтекст с 4.38 вызывает warning валидатора и нужен только при `client_secret_jwt`, чего у наших клиентов нет. После перевода эти поля перестают быть секретами вообще. Генератор уже есть — `inv authelia-gen-secret-and-hash`, проверка — `inv authelia-validate-config`. Готово, когда в отрендеренном конфиге не осталось секретов открытым текстом и `no_log` с задачи снят — дифф конфига снова читаем. Разбор по каждому полю, версии и ссылки на код: [справка по файловым секретам](../drafts/secrets-file-support.md). Из декомпозиции `secrets-env-to-file` (2026-07-25). Связано: files/authelia, tasks.py (`authelia-*`), roles/secrets, [no-secrets-in-playbook-output](no-secrets-in-playbook-output.md).