Пачка гигиенических правок 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-49 — max-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 в шаги деплоя.
Пачка гигиенических правок compose/secrets из инфра-ревью.
Плавающие теги образов
docker-compose.yml:58docker-socket-proxy:latestиdocker-compose.dokploy.yml:60traefik-certs-dumper:v2— не запинены. socket-proxy — самый security-sensitive компонент,:latestтам хуже всего. (nginxjonasal/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-49—max-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в шаги деплоя.