backlog: secrets-env-to-file разложена по приложениям

- Шесть задач `secrets-file-*` вместо одной: outline, wakapi, authelia,
  gramps (средний), gitea, tududi (низкий, выигрыш частичный). Wanderer
  отпал — файловых секретов не умеет ни meilisearch, ни pocketbase.
- Матрица механизмов со ссылками на код уехала в
  docs/drafts/secrets-file-support.md, родитель — на кладбище.
This commit is contained in:
av
2026-07-25 12:25:50 +03:00
parent f9a8c64377
commit fbd0a66f44
14 changed files with 384 additions and 100 deletions
+26
View File
@@ -0,0 +1,26 @@
# gramps: секретный ключ из файла
**Приоритет:** Средний
`GRAMPSWEB_SECRET_KEY` стоит прямым значением в `environment:`. Если переменную
не задавать, entrypoint образа читает ключ из файла `/app/secret/secret` — и этот
путь **уже смонтирован** в нашем compose как `gramps_secret`. То есть правка
сводится к «записать значение в файл и убрать переменную»: самая дешёвая из всей
серии. Entrypoint общий у `gramps_app` и `gramps_celery`, оба читают тот же файл,
расхождения не будет.
Пароль SMTP так не выносится: конфиг читается через `from_prefixed_env`, никакой
обработки `_FILE` нет. Обходной путь существует (Flask исполняет `config.cfg` как
Python, значит значение можно прочитать из файла прямо в нём), но он держится на
детали реализации и нигде не обещан — брать только если решим, что оно того
стоит. Пока пароль SMTP остаётся в env и закрывается `no_log`.
Готово, когда `docker inspect` контейнеров gramps не показывает секретный ключ
приложения.
Механизм и ссылки на код:
[справка по файловым секретам](../drafts/secrets-file-support.md).
Из декомпозиции `secrets-env-to-file` (2026-07-25).
Связано: files/gramps, roles/secrets,
[no-secrets-in-playbook-output](no-secrets-in-playbook-output.md).