diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 5fdac09..2985a07 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -490,7 +490,7 @@ vehicles-loader (stostayer) деплоится в Docker у клиента (lite --- -## 🔵 [deploy-pilonuxt-vds] — **Цель:** Собрать prod-образ нового Nuxt-фронта ПИЛОРАМА98 (`victor/pilonuxt`, master) и задеплоить на VDS как Portainer-стек за Traefik. Готово в репо: `Dockerfile` + `.dockerignore` в корне. Полный овнершип сборки и деплоя — на тебе (build → push в VDS-registry → Portainer stack), как books/stostayer. +## 🟢 [deploy-pilonuxt-vds] — closed 2026-06-15 — CUTOVER LIVE на www.pilorama98.ru (tag 125a3e2, Portainer stack 16). **Цель:** Собрать prod-образ нового Nuxt-фронта ПИЛОРАМА98 (`victor/pilonuxt`, master) и задеплоить на VDS как Portainer-стек за Traefik. Готово в репо: `Dockerfile` + `.dockerignore` в корне. Полный овнершип сборки и деплоя — на тебе (build → push в VDS-registry → Portainer stack), как books/stostayer. **Сборка:** - `docker build --secret id=verdaccio_token,env=VERDACCIO_TOKEN -t /pilonuxt: .` @@ -531,7 +531,13 @@ vehicles-loader (stostayer) деплоится в Docker у клиента (lite **weight:** needs-human (deploy-инфра) **notify:** victor/pilonuxt -**Status:** blocked +**Status:** done (closed 2026-06-15) +**Closure / coverage check:** vitya флипнул DNS pilorama98.ru+www → 89.253.255.94; я перенастроил traefik-роутер на боевые хосты (`Host(www.pilorama98.ru)||Host(pilorama98.ru)||Host(pilonuxt.vds.kzntsv.site)`, cert LE на apex+www), снял smoke GTM-override (прод-аналитика GTM-MNNXFJ6 ВКЛ), выкатил `125a3e2` (фикс «Продукция»→/catalog). Acceptance: (1) образ в registry ✓ 125a3e2; (2) Portainer stack 16 за traefik healthy ✓; (3) smoke ✓ — финальный краул с VDS по боевому www.pilorama98.ru: все страницы page 200/viewModel 200 (главная/каталог/категории/товар/услуги/контакты/оплата/доставка), картинки imgproxy 200 webp, x-powered-by Nuxt (не IIS), cert valid, футер /products битый линк убран (0 вхождений, «Продукция»→/catalog); форма contacts — закрыта (vitya «формы заебись» + pilonuxt end-to-end verified в dev, smtp egress жив); (4) доклад pilonuxt ✓. Урок применён: краулил весь меню+viewModel, не 2 роута ([[smoke-crawl-real-pages-not-two-routes]]). +**Follow-ups (не блокеры, отдельно):** DNS-propagation хвост (часть юзеров ещё на старом IIS); decommission старого IIS на RUVDS 80.64.31.36 после soak (оставлен для rollback); опц. apex→www 301 canonical (SEO). bare `/products`→404 но unlinked. +**Branch:** n/a | **Notify:** victor/pilonuxt ✓ + + +**Status (pre-cutover):** blocked **Where I stopped (2026-06-14 21:05):** pilonuxt пофиксил content-api (`@snollajs/data@0.9.1` — models-load баг + `tedious` в `nitro.externals.traceInclude`), тег `961a838` (все прошлые битые). Перекатил stack 16. **Полный re-smoke (curl весь меню 21 стр + viewModel по каждому + браузер Playwright + скрин):** viewModel 200 везде (был 500), все страницы меню 200 с реальным контентом (категории/товары/услуги/инфо), товар-стр 200, картинки imgproxy 200 webp, браузер-консоль 0 ошибок, верстка целая. **ОСТАЛСЯ РЕАЛЬНЫЙ БАГ: пункт меню «Продукция» → `/products` → 404** (битый линк, до cutover нельзя). Мелочи: `/blog`+`/services/building/projects/` viewModel 404 (страницы 200), Я.Метрика external не грузится (не баг app). Форма contacts → email НЕ гонял (живой email, жду решение). Скрин `pilonuxt-home-smoke.jpeg`. Inbox pilonuxt отправлен (21:05). **Next action:** pilonuxt чинит `/products` 404 → новый тег → pull+stack16 update → добить smoke (/products + форма). Согласовать с vitya: тест формы contacts (live [SMOKE TEST] vs закрыть по verified). Cutover www.pilorama98.ru — после закрытия /products + формы. **Blocker:** pilonuxt: пункт меню «Продукция» → /products → 404 (роут/CMS-страница отсутствует либо нужен редирект на /catalog). diff --git a/host-stacks/vds-kzntsv/pilonuxt.compose.yml b/host-stacks/vds-kzntsv/pilonuxt.compose.yml index f1d8306..a93d489 100644 --- a/host-stacks/vds-kzntsv/pilonuxt.compose.yml +++ b/host-stacks/vds-kzntsv/pilonuxt.compose.yml @@ -21,22 +21,23 @@ services: pilonuxt: container_name: pilonuxt - image: registry.kzntsv.site/pilonuxt:961a838 + image: registry.kzntsv.site/pilonuxt:125a3e2 restart: unless-stopped environment: NODE_ENV: production TZ: Europe/Moscow NITRO_HOST: 0.0.0.0 NITRO_PORT: "3000" - # Smoke на временном поддомене — гасим боевую аналитику, чтобы не лить - # тестовый трафик в GTM-MNNXFJ6. На cutover вернуть дефолт (убрать строку). - NUXT_PUBLIC_GTM_ID: "" + # CUTOVER 2026-06-15: боевой домен www.pilorama98.ru — аналитика ВКЛ + # (дефолт GTM-MNNXFJ6, env не задаём). На smoke-поддомене гасили `""`. networks: - proxy labels: traefik.enable: "true" traefik.http.routers.pilonuxt.entrypoints: websecure - traefik.http.routers.pilonuxt.rule: Host(`pilonuxt.vds.kzntsv.site`) + # Боевые хосты pilorama98 (DNS → 89.253.255.94, cutover с RUVDS IIS) + + # pilonuxt.vds.kzntsv.site оставлен для прямого smoke/диагностики. + traefik.http.routers.pilonuxt.rule: Host(`www.pilorama98.ru`) || Host(`pilorama98.ru`) || Host(`pilonuxt.vds.kzntsv.site`) traefik.http.routers.pilonuxt.tls.certresolver: letsEncrypt traefik.http.services.pilonuxt.loadbalancer.server.port: "3000"