diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index cc01587..b2e32b7 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -1,39 +1,47 @@ --- -_last_updated_: 2026-07-02T00:40:00Z -session_id: 2026-07-02-emspb-vds-deploy-cutover +_last_updated_: 2026-07-02T09:45:00Z +session_id: 2026-07-02-labtools-pro-and-ru-vds-cutover --- # Next session handoff -## Recent commits -- `deploy(emspb)` `c3b722bb`: emspb.ru snolla-app LIVE на vds-kzntsv — staging собран+развёрнут (stack 18) + **cutover выполнен в ту же сессию** (оператор флипнул DNS), live-smoke GREEN. Запушен. -- `deploy(labtools)` `a15fd65a`: labtools staging GREEN на vds-kzntsv (stack 17) — ждёт DNS-flip. +## Итог сессии — весь snolla-тираж выехал на VDS ✅ +`emspb.ru` + `labtools.pro` + `labtools.ru` — все LIVE на [[vds-kzntsv]] (`89.253.255.94`) за traefik. RUVDS IIS (`80.64.31.36`) — rollback, живой. -## Open треки -| Трек | Готовность | Entry-point | -|---|---|---| -| `[labtools-web-vds-deploy]` | STAGING GREEN, **ждём DNS-cutover** | `.tasks/STATUS.md` + `.wiki/concepts/labtools-vds-deploy-runbook.md` | -| `[emspb-web-vds-deploy]` | 🟢 **closed** (staging+cutover LIVE) | `.wiki/concepts/emspb-vds-deploy-runbook.md` | +## Recent commits (⚠️ 4 ЛОКАЛЬНЫХ, НЕ ЗАПУШЕНЫ — автопуш не выдавался) +- `a9f4f3a6` deploy(labtools): 43e28ba LIVE — cutover labtools.ru done +- `ed99f222` deploy(labtools-pro): 7bd9fae LIVE — cutover labtools.pro done +- `531d7f0f` deploy(labtools-pro): staging GREEN, stack 19 +- `253f427a` decommission(emspb): сняты emspb.ru/www SNI-биндинги с RUVDS IIS +→ **Первое действие след. сессии если разрешат: `git push`** (4 коммита ждут). -## Состояние emspb (DONE) -`emspb.ru`+`www.emspb.ru` LIVE на VDS (`89.253.255.94`), Portainer stack `emspb` (Id 18), образ `registry.kzntsv.site/emspb:b6e361a`. traefik-rule = боевые хосты (staging-хост убран→404), единый LE-cert, `ssl_verify=0`. RUVDS IIS `80.64.31.36` цел = rollback. Env == labtools (8 секретов). Рунбук записан. Workshop отрепорчен. +## Состояние треков +| Трек | Статус | Стек | Образ | +|---|---|---|---| +| `[emspb-web-vds-deploy]` | 🟢 closed (LIVE + RUVDS decommissioned) | 18 | emspb:b6e361a | +| `[labtools-pro-web-vds-deploy]` | 🟢 closed (LIVE) | 19 | labtools-pro:7bd9fae | +| `[labtools-web-vds-deploy]` | 🟢 closed (LIVE) | 17 | labtools:43e28ba | -## Состояние labtools (ЖДЁТ) -Образ `registry.kzntsv.site/labtools:43e28ba`, Portainer stack `labtools` (Id 17), STAGING `labtools.vds.kzntsv.site` healthy, smoke vs бой GREEN. Бой на RUVDS IIS (`80.64.31.36`) живой. **DNS labtools.ru/www ВСЁ ЕЩЁ на RUVDS** (проверено 2026-07-02 внешним резолвером) — cutover НЕ выполнен. +Рунбуки: `.wiki/concepts/{emspb,labtools,labtools.pro}-vds-deploy-runbook.md`. -## Спроси оператора / жди сигнал -- **labtools DNS-cutover** — как оператор скажет «флипнул labtools» (проверить внешним резолвером что именно labtools→VDS!): добавить в stack 17 traefik-rule `Host(labtools.ru) || Host(www.labtools.ru)`, дождаться LE-cert, smoke на боевом хосте, убрать staging-хост post-cutover, отрепортить. Рунбук labtools § Cutover. -- `labtools.pro` — отдельная таска, ждёт заведения (оператор решил 2026-07-01). +## DNS-факты (на будущее) +- Зоны на РАЗНЫХ провайдерах: `emspb.ru`/`labtools.pro` — **reg.ru** (`ns1/ns2.reg.ru`); `labtools.ru` — **Yandex DNS** (`dns1/dns2.yandex.net`). Проверять авторитетный NS того провайдера. +- labtools.ru siteUrl = **non-www** (`https://labtools.ru`, sitemap host без www); emspb/labtools.pro = www (R3). Разные тенанты — разный canonical. -## Не делать (guards) -- **НЕ добавлять `Host(labtools.ru)` в traefik-rule ДО флипа DNS** — LE HTTP-01 упадёт на RUVDS → сожжём rate-limit. Cм. memory [operator-dns-flip-verify-domain-before-cutover]. -- **НЕ путать домены** — на этой сессии оператор флипнул emspb, НЕ labtools (был запланирован). Всегда external-resolve перед PUT traefik-rule. -- **НЕ выводить RUVDS IIS** (labtools/emspb) — rollback-путь. -- **НЕ флипать DNS самим** — это оператор. -- Build snolla-образов — НА VDS из чистого `git archive`, push с VDS (registry локален). +## Открытые follow-up (не блокеры, по решению оператора) +- **RUVDS-биндинги labtools.ru/www + labtools.pro/www** ещё на IIS (rollback). Снять как для emspb (`Remove-WebBinding` + backup config) — когда оператор скажет. Ключ: `~/.ssh/ruvds-iis-migration`, `Administrator@80.64.31.36`. См. [[../.wiki/entities/ruvds-iis-host]]. +- **`emspb.snolla.com`** — НЕ мигрирован (DNS→IIS), биндинг оставлен намеренно. Отдельная миграция если понадобится. +- **www.labtools.ru** — на момент wrap ещё split-brain (публичный кэш RUVDS, TTL до 6ч); авторитетные оба уже VDS, LE-cert на www выпущен. Доедет сам. Спот-чек внешним резолвером позже. +- **Косметика labtools.pro:** стартовый баннер лога = `labtools.ru (snolla)` (константа app-name из скаффолда). У workshop, не блокер. -## Autopush -- Оператор выдал grant «пуш разрешаю» на этой сессии (2026-07-02). Session-end сбрасывает в ask-mode. +## Guards +- RUVDS IIS НЕ выводить целиком (общий catch-all, ещё держит ~22 хоста + rollback). +- НЕ добавлять `Host(...)` в traefik ДО подтверждения флипа на **всех** авторитетных NS зоны (LE rate-limit). +- Стеки на VDS — только через Portainer (env сохранять при PUT, pullImage=false для label-only правок). + +## Инфра-заметки +- Сборка образов — на VDS из `git archive ` (обход traefik-499), push с VDS. VERDACCIO_CI_TOKEN + PORTAINER_API_KEY в `pass vds-kzntsv/full-env`. +- Env всех snolla-тенантов идентичен (8 секретов) — при новом стеке брать verbatim из соседнего (`GET /api/stacks/|.Env`). ## Memory updates за сессию -- Заведена `operator-dns-flip-verify-domain-before-cutover` (verify which domain externally before touching traefik Host rule). +- Дополнена `operator-dns-flip-verify-domain-before-cutover`: проверять АВТОРИТЕТНЫЙ NS (не публичный кэш), гейт = ВСЕ auth-NS согласны (dns1/dns2 расходятся mid-propagation), идентифицировать провайдера зоны.