# Мелкий хардненинг контейнеров **Приоритет:** низкий - **`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` дал каждому деплою уникальный тег из `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.