- AGENTS.md: homepage/transcriber собираются ролью app_image, registry-плейбуков и vars/transcriber.images.yml больше нет - local-image-build: закрыты шаги по homepage и transcriber, остался вынос yc_*-переменных из vault; добавлены замеры архивов - container-hardening-nits: снят пункт про плавающий `:latest` у homepage
22 lines
1.5 KiB
Markdown
22 lines
1.5 KiB
Markdown
# Мелкий хардненинг контейнеров
|
||
|
||
**Приоритет:** низкий
|
||
|
||
- **`no-new-privileges`**: ни один compose-шаблон не задаёт `security_opt:
|
||
["no-new-privileges:true"]`. Добавить всем — одна строка, режет эскалацию через
|
||
setuid-бинарники в образах.
|
||
- **non-root `user:`**: без него работают caddyproxy, gramps (данные в
|
||
`/root/.gramps`), rssbridge, dozzle, homepage и valkey/postgres-сайдкары gramps.
|
||
Дотянуть там, где образ позволяет (rssbridge, valkey) — продолжение уже принятой
|
||
в проекте практики.
|
||
- ~~**homepage на `:latest`**~~ — **снято**: переход на роль `app_image`
|
||
([local-image-build](local-image-build.md)) дал каждому деплою уникальный тег
|
||
из `BUILD_ID`, плавающего `latest` больше нет ни у homepage, ни у остальных.
|
||
- **Соглашение о портах**: зафиксировать в AGENTS.md, что новые `ports:` — только
|
||
с `127.0.0.1:`. Docker публикует порты мимо UFW, поэтому дисциплина
|
||
localhost-биндинга — единственный контроль (сейчас соблюдается: apprise, wanderer).
|
||
|
||
Из sec-ревью (fable, 2026-07-13).
|
||
|
||
Связано: все files/*/docker-compose*.template.yml, vars/homepage.yml, AGENTS.md.
|