- Шесть задач `secrets-file-*` вместо одной: outline, wakapi, authelia, gramps (средний), gitea, tududi (низкий, выигрыш частичный). Wanderer отпал — файловых секретов не умеет ни meilisearch, ни pocketbase. - Матрица механизмов со ссылками на код уехала в docs/drafts/secrets-file-support.md, родитель — на кладбище.
2.4 KiB
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 с задачи снят — дифф конфига снова читаем.
Разбор по каждому полю, версии и ссылки на код:
справка по файловым секретам.
Из декомпозиции secrets-env-to-file (2026-07-25).
Связано: files/authelia, tasks.py (authelia-*), roles/secrets,
no-secrets-in-playbook-output.