Skip to content

Гигиена compose: пин образов, resource-limits, log-rotation, healthchecks, chmod 600, .env.example #70

Description

@friench

Пачка гигиенических правок compose/secrets из инфра-ревью.

Плавающие теги образов

docker-compose.yml:58 docker-socket-proxy:latest и docker-compose.dokploy.yml:60 traefik-certs-dumper:v2 — не запинены. socket-proxy — самый security-sensitive компонент, :latest там хуже всего. (nginx jonasal/nginx-certbot:6-alpine и DMS :15.1.0 запинены — ок.)
Фикс: пин по digest/точной версии.

Нет resource-limits

Ни mem_limit/cpus/pids_limit ни в одном сервисе. Runaway mail-api или DMS (при включённых ClamAV/Rspamd) может OOM'нуть весь одно-нодовый хост.
Фикс: консервативные лимиты на сервис, особенно память mailserver.

Log-rotation только у mailserver

docker-compose.yml:45-49max-size/max-file лишь у mailserver; nginx/mail-api/socket-proxy на дефолтном безлимитном json-file.
Фикс: вынести logging: в YAML-anchor на все сервисы.

Нет healthcheck на nginx/mailserver, depends_on без условия

Healthcheck только у mail-api; depends_on — только порядок старта, без readiness-гейта.
Фикс: healthcheck на nginx (nginx -t / проба /), опереться на встроенный healthcheck DMS, depends_on: {mailserver: {condition: service_healthy}}.

Секреты и .env

  • mailserver-api/.env.example устарел относительно env.ts: нет DOCKER_HOST, TRUST_PROXY, METRICS_TOKEN, WEBHOOK_ALLOW_PRIVATE, всех OIDC_*, BACKUP_S3_*, ENGINE_CONTAINERS, MAIL_LOG_PATH, RETENTION_DAYS; ещё числится мёртвый DOCKER_SOCKET_PATH.
  • _docs/deployment.md не делает chmod 600 на .env-файлы с SESSION_SECRET/SMTP-паролями/INITIAL_ADMIN_PASSWORD — дефолтный cp оставляет 0644.
    Фикс: регенерировать .env.example из zod-схемы; добавить chmod 600 в шаги деплоя.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions