deploy(labtools): staging on vds-kzntsv GREEN — image 43e28ba, parity vs prod
- build registry.kzntsv.site/labtools:43e28ba on VDS from clean git-archive (no config/default.json), push from VDS (registry local) - Portainer stack `labtools` (Id 17) on labtools.vds.kzntsv.site, container healthy (MSSQL mssql.kzntsv.site + MinIO minio.kzntsv.site), 8 secret-env in stack-env (not in image/git) - smoke parity vs www.labtools.ru GREEN: menu pages 200/200, redirects (.php / trailing-slash / lowercase) 301 1:1, theme.css + /assets byte-identical from MinIO, Cache-Control max-age=86400 - add runbook .wiki/concepts/labtools-vds-deploy-runbook.md + stack source host-stacks/vds-kzntsv/labtools.compose.yml - cutover DNS gated to operator (tomorrow 2026-07-02); RUVDS IIS 80.64.31.36 prod untouched = rollback path Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,37 +1,43 @@
|
||||
---
|
||||
_last_updated_: 2026-06-29T20:05:00Z
|
||||
session_id: 2026-06-29-pilonuxt-deploys
|
||||
_last_updated_: 2026-07-01T13:45:00Z
|
||||
session_id: 2026-07-01-labtools-vds-staging
|
||||
---
|
||||
|
||||
# Next session handoff
|
||||
|
||||
## Recent commits
|
||||
- `685f2735` deploy(pilonuxt): cf2bba2 LIVE — forms-api + full @snollajs/snolla drop (ADR-0010)
|
||||
- `dca1bf77` deploy(pilonuxt): 40bb383 LIVE — staticPages + robots.txt from DB (ADR-0009)
|
||||
- `c3e84583` wiki(books-vds): document public bookva-db endpoint :33306
|
||||
|
||||
## Что произошло (сжато)
|
||||
Два последовательных деплоя pilonuxt на прод (Portainer стек 16, vds-kzntsv 89.253.255.94), оба по наряду от victor/pilorama98.ru через inbox:
|
||||
1. **40bb383** — DB-backed staticPages + robots.txt (ADR-0009). Smoke 6/6.
|
||||
2. **cf2bba2** — forms на `@snollajs/forms-api`, полный дроп `@snollajs/snolla`, core@0.1.1 (Buffer вместо btoa). Tree-check `.output` 4/4 (0× snolla, 0× btoa, 1× data@0.9.1) + smoke зелёный (SSR 200, robots/yandex из БД, форма 422/404).
|
||||
|
||||
Оба наряда 🟢 closed, notify отправлены. **Текущий прод pilonuxt = `cf2bba2`.** Откат: стек 16 → `40bb383` (образ на VDS цел).
|
||||
- `deploy(labtools)`: staging собран+развёрнут на vds-kzntsv, smoke parity GREEN, рунбук + стек-черновик (этой сессии).
|
||||
- (до этого: pilonuxt sitemap taxonomy deploys — не связано)
|
||||
|
||||
## Open треки
|
||||
| Трек | Готовность | Entry-point |
|
||||
|---|---|---|
|
||||
| (нет активных 🔴) | — | борд чист по pilonuxt |
|
||||
| backlog/blocked без изменений | ⚪/🔵/🟡 | STATUS.md: harden-books-vds-exposed-ports ⚪, kreknin-self-backup ⚪, books-* bootstrap/cutover 🔵, fix-nl-vds-reality 🟡 (ждёт client-side от vitya) |
|
||||
| `[labtools-web-vds-deploy]` | STAGING GREEN, ждём DNS-cutover | `.tasks/STATUS.md` + `.wiki/concepts/labtools-vds-deploy-runbook.md` |
|
||||
|
||||
## Спроси / подтверди
|
||||
- (нет на этом раунде) — обе задачи закрыты, ничего mid-task не висит.
|
||||
**Состояние labtools:** образ `registry.kzntsv.site/labtools:43e28ba` собран на VDS + push; Portainer stack `labtools`
|
||||
(Id 17, endpoint 1) на `labtools.vds.kzntsv.site`, контейнер healthy; 8 секрет-env в stack-env. Smoke vs бой
|
||||
`www.labtools.ru` — GREEN (меню 200/200, редиректы 301 1:1, тема+`/assets` из MinIO байт-в-байт, Cache-Control 86400).
|
||||
Бой на RUVDS IIS (`80.64.31.36`) ЖИВОЙ, не тронут. Env-контракт (8 секретов, источники) — в рунбуке.
|
||||
|
||||
## Спроси user'а
|
||||
- **DNS хозяин перенастраивает A-записи `labtools.ru`/`www` → `89.253.255.94` ЗАВТРА (2026-07-02).** Как оператор
|
||||
подтвердит «DNS флипнут / флипаю сейчас» — выполнить cutover ops-шаги (ниже).
|
||||
- `labtools.pro` — отдельная таска (оператор решил 2026-07-01, не в scope этой). Ждёт заведения.
|
||||
|
||||
## Cutover ops-шаги (по сигналу оператора о флипе — НЕ раньше)
|
||||
1. В стеке `labtools` (Portainer Id 17) добавить в traefik-rule: `Host(labtools.ru) || Host(www.labtools.ru)` —
|
||||
**синхронно с флипом** (не заранее — см. guard ниже). Правка source: `admin/host-stacks/vds-kzntsv/labtools.compose.yml` → PUT в Portainer.
|
||||
2. Проверить LE cert выпущен на боевом хосте + прогнать тот же смоук-свип уже на `https://www.labtools.ru`.
|
||||
3. Отчитаться оператору + workshop (from admin).
|
||||
|
||||
## Не делать (preemptive guards)
|
||||
- **Notify victor/pilorama98.ru → ТОЛЬКО `~/projects/pilorama98.ru/.claude-inbox/`** (монореп, живой, метётся в `.read/`). НЕ dotted `~/projects/.pilorama98.ru/` (мёртвый, сообщения копятся непрочитанными). Промахнулся раз на 40bb383-notify. См. memory `pilorama98-inbox-is-monorepo-not-dotted`.
|
||||
- **Автопуш был выдан на ЭТУ сессию** — на старте следующей сбросить в ask-mode (project-discipline Rule 4).
|
||||
- **pilonuxt build-канал:** push с дома гарантированно 499 на `.output`-слое → сразу `docker save | ssh -i ~/.ssh/id_ed25519 vitya@89.253.255.94 'sudo docker load'` + push с VDS (registry локален). Не тратить время на home-push.
|
||||
- **forms-api smoke:** 422 только с `Accept: application/json` (иначе `prefersJson` false → 404, не баг).
|
||||
- **Деплой pilonuxt всегда требует ФОРС-регенерации клиента:** `rm -rf apps/web/src/generated` + `yarn workspace nuxt-app schema-gen` (egress в MSSQL) перед docker build — иначе ensure-schema skip соберёт stale-клиент.
|
||||
- **НЕ добавлять `Host(labtools.ru)` в traefik-rule ДО флипа DNS** — traefik проактивно на reload тянет LE-cert (HTTP-01),
|
||||
challenge упадёт на RUVDS (DNS ещё там), сожжём LE rate-limit → задержка cert на реальном cutover'е.
|
||||
- **НЕ выводить RUVDS IIS labtools из эксплуатации** (директива оператора 2026-07-01) — это rollback-путь.
|
||||
- **НЕ флипать DNS самим** — это делает хозяин домена.
|
||||
- **Автопуш в ЭТОЙ сессии НЕ выдавался** — коммиты локальные, не запушены; на старте следующей — ask-mode (project-discipline Rule 4).
|
||||
- Build-канал labtools: собирать НА VDS из чистого `git archive` (без `config/default.json`), push с VDS (registry локален).
|
||||
- `labtools.pro` — не трогать в рамках этой таски.
|
||||
|
||||
## Memory updates за сессию
|
||||
- Создана `pilorama98-inbox-is-monorepo-not-dotted.md` (reference) + строка в MEMORY.md — куда слать notify pilorama98.
|
||||
- (нет на этом раунде — всё в STATUS.md + рунбуке `labtools-vds-deploy-runbook.md`)
|
||||
|
||||
Reference in New Issue
Block a user