deploy(labtools-pro): staging GREEN on vds-kzntsv — image 7bd9fae, stack 19, parity vs prod

Mirror of emspb deploy. Built registry.kzntsv.site/labtools-pro:7bd9fae on VDS
(guard: default.json absent), created Portainer stack labtools-pro (Id 19, env
verbatim from labtools stack 17). Container healthy, MSSQL+S3 connected.

Staging smoke vs www.labtools.pro (RUVDS) GREEN, run from VDS:
- nav + 3 catalog sections + products 200/200
- redirects (catalog#1->lshm-750, /Contacts lowercase, trailing) 301 parity
- sitemap: snolla index of 7 children, aggregate 25 URLs == prod set, host=www (R3)
- theme assets 7/7 md5-identical; Cache-Control absent (correct, CachingOptions=[])
- content pages real body, delta +155..222B (host length in canonical)

Cosmetic (not a defect, flagged to workshop): startup banner logs "labtools.ru
(snolla)" — scaffold constant; site identity is siteId 663F9410 in production.json.

Cutover (live DNS) is gated on operator. Runbook + compose committed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-02 11:38:56 +03:00
parent 253f427a55
commit 531d7f0fda
3 changed files with 140 additions and 4 deletions

View File

@@ -1069,7 +1069,7 @@ Dev-source: `victor/labtools.ru/apps/web` (parity-док/буфер — в `.wor
---
## [labtools-pro-web-vds-deploy] — Вынести `victor/labtools.pro` (snolla-app, `@snollajs/snolla@0.28.7`, server-side Liquid, БД-контент + MinIO-ассеты) с RUVDS IIS в docker-контейнер на VDS kzntsv (89.253.255.94) за traefik. **Зеркало `[emspb-web-vds-deploy]`** — тот же паттерн; рунбуки `emspb-vds-deploy-runbook` / `labtools-vds-deploy-runbook` (.admin вика) читать как шаблон. Код-DONE: ре-ревью PASS (все 9 дименшнов, ноль хаков), независимый ревьюер на живой БД+MinIO.
## 🟡 [labtools-pro-web-vds-deploy] — Вынести `victor/labtools.pro` (snolla-app, `@snollajs/snolla@0.28.7`, server-side Liquid, БД-контент + MinIO-ассеты) с RUVDS IIS в docker-контейнер на VDS kzntsv (89.253.255.94) за traefik. **Зеркало `[emspb-web-vds-deploy]`** — тот же паттерн; рунбуки `emspb-vds-deploy-runbook` / `labtools-vds-deploy-runbook` (.admin вика) читать как шаблон. Код-DONE: ре-ревью PASS (все 9 дименшнов, ноль хаков), независимый ревьюер на живой БД+MinIO.
**Weight:** needs-human
**Notify:** OpeItcLoc03/workshop
@@ -1103,9 +1103,9 @@ Acceptance = внешний smoke на задеплоенном URL:
## Скилы / отчёт
invoke `using-vds-ops`/`using-tasks`/`project-discipline`. Написать рунбук `labtools.pro-vds-deploy-runbook` в .admin вике (зеркало emspb). Репорт → OpeItcLoc03/workshop. Ops-acceptance = staging smoke-parity green; cutover — отдельным словом оператора.
**Status:** ready
**Where I stopped:** (not started)
**Next action:** Собрать образ registry.kzntsv.site/labtools-pro:7bd9fae на VDS из чистого git-archive 7bd9fae (guard: default.json absent); создать Portainer stack labtools-pro (env verbatim из labtools stack 17) на labtools-pro.vds.kzntsv.site за traefik+LE; staging smoke-parity vs www.labtools.pro (каталог+редиректы+theme-md5+cache=none+sitemap www); репорт workshop. Cutover live DNS — отдельным gated-словом оператора.
**Status:** 🟡 STAGING GREEN — ждём DNS-cutover (gated, оператор). Runbook: `.wiki/concepts/labtools.pro-vds-deploy-runbook.md`.
**Where I stopped:** Образ `registry.kzntsv.site/labtools-pro:7bd9fae` (+latest, digest `sha256:23d0bc59…`) собран+запушен НА VDS (guard default.json absent OK). Portainer stack `labtools-pro` **Id 19** создан (env verbatim из stack 17, 8 секретов), контейнер healthy, MSSQL+S3 подключены, лог чист. Staging `labtools-pro.vds.kzntsv.site` LE-cert выпущен. **Smoke-parity vs бой `www.labtools.pro` GREEN** (гнал с VDS): статусы nav+3 каталог-секции+продукты 200/200; редиректы (каталог#1→lshm-750, /Contacts→lowercase, /contacts/→trailing) 301 parity; sitemap = index из 7 дочерних, в сумме 25 URL набор==бой, host=www (R3); theme-ассеты 7/7 md5-identical; Cache-Control absent (корректно, `CachingOptions=[]`); контент-страницы реальное тело (delta +155…+222B = host-длина). Косметика (не дефект, отдана workshop): стартовый баннер лога = `labtools.ru (snolla)` (константа из скаффолда). Compose: `host-stacks/vds-kzntsv/labtools-pro.compose.yml`. Репорт workshop отправлен.
**Next action:** Ждать сигнал оператора «флипнул DNS labtools.pro». ТОЛЬКО ПОСЛЕ external-resolve (8.8.8.8) что именно `labtools.pro`→89.253.255.94 (НЕ путать с labtools.ru!): в стеке 19 заменить traefik-rule на `Host(labtools.pro)||Host(www.labtools.pro)` (Portainer PUT, env сохранить), дождаться LE-cert, live-smoke на боевом хосте, убрать staging-хост post-cutover, репорт. Рунбук § Cutover. НЕ добавлять Host-rule до флипа (LE rate-limit). НЕ выводить RUVDS.
**Branch:** master
**Notify:** OpeItcLoc03/workshop
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-07-02T08:27:39.437Z -->