- все три приложения (homepage, transcriber, remembos) собирают образы локально ролью app_image, реестр и yc_*-переменные выведены из оборота - ссылавшиеся задачи обновлены: narrow-secret-scopes и no-secrets-in-playbook-output больше не ждут эту работу
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` дал
|
||
каждому деплою уникальный тег из `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.
|