Проблема
nginx/user_conf.d/api.conf описан как закоммиченный vhost панели в CLAUDE.md (layout), _docs/deployment.md:68 и _docs/architecture.md (nginx проксирует /admin/* → mail-api), но файла нет и шаблона нет. Присутствует только default.conf (hardened fallback c ssl_reject_handshake).
Влияние (standalone-стек, как отгружается)
- Свежий
docker compose up -d даёт стек без HTTPS-входа к дашборду и /send: единственный 443-сервер — fallback-заглушка. Панель достижима только SSH-туннелем на :3050. При этом задокументированный happy-path (deployment.md §3-4 дёргает https://<api-host>/send) не работает.
- Когда оператор пишет
api.conf руками, нет гайда по обязательным proxy_pass, forwarded-заголовкам (mail-api работает с TRUST_PROXY=1, ждёт ровно один хоп nginx), WebSocket-upgrade, TLS-политике, security-заголовкам и client_max_body_size. Последнее критично: POSTFIX_MESSAGE_SIZE_LIMIT=25MB + вложения, а дефолтный лимит nginx (1 МБ) даст 413 на отправке вложений.
Фикс
- Закоммитить
nginx/user_conf.d/api.conf.example с харднутым proxy-vhost: TLS 1.2/1.3, HSTS, proxy_pass http://mail-api:3050, proxy_set_header (Host/X-Forwarded-For/Proto), WebSocket-upgrade, client_max_body_size 30m (запас над 25 МБ Postfix), security-заголовки из default.conf.
- Поправить CLAUDE.md /
_docs/deployment.md — ссылаться на .example и описать шаг «скопировать и подставить хостнейм».
- Заодно: закоммитить
nginx/nginx-certbot.env.example (на него ссылается deployment.md:25, файла нет).
Проблема
nginx/user_conf.d/api.confописан как закоммиченный vhost панели в CLAUDE.md (layout),_docs/deployment.md:68и_docs/architecture.md(nginx проксирует/admin/*→ mail-api), но файла нет и шаблона нет. Присутствует толькоdefault.conf(hardened fallback cssl_reject_handshake).Влияние (standalone-стек, как отгружается)
docker compose up -dдаёт стек без HTTPS-входа к дашборду и/send: единственный 443-сервер — fallback-заглушка. Панель достижима только SSH-туннелем на :3050. При этом задокументированный happy-path (deployment.md §3-4дёргаетhttps://<api-host>/send) не работает.api.confруками, нет гайда по обязательнымproxy_pass, forwarded-заголовкам (mail-api работает сTRUST_PROXY=1, ждёт ровно один хоп nginx), WebSocket-upgrade, TLS-политике, security-заголовкам иclient_max_body_size. Последнее критично:POSTFIX_MESSAGE_SIZE_LIMIT=25MB+ вложения, а дефолтный лимит nginx (1 МБ) даст 413 на отправке вложений.Фикс
nginx/user_conf.d/api.conf.exampleс харднутым proxy-vhost: TLS 1.2/1.3, HSTS,proxy_pass http://mail-api:3050,proxy_set_header(Host/X-Forwarded-For/Proto), WebSocket-upgrade,client_max_body_size 30m(запас над 25 МБ Postfix), security-заголовки изdefault.conf._docs/deployment.md— ссылаться на.exampleи описать шаг «скопировать и подставить хостнейм».nginx/nginx-certbot.env.example(на него ссылаетсяdeployment.md:25, файла нет).