Files
admin/.wiki/entities/windows-recovery-host.md
vitya c677b23f81 docs(wiki): уточнён live-state stostayer IIS на windows-recovery-host
Добавлена таблица порт->conn-string->БД для двух оставшихся IIS-сайтов
(stostayer :8090 -> внешний прод www.stostayer.ru; stostayer.old :8091
-> наш mssql.kzntsv.site), путь админок /admin, live-проверка 2026-06-17.
Пофикшена стейловая строка stostayer.old conn (localhost -> mssql.kzntsv.site).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 13:13:37 +03:00

126 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Windows Recovery Host (рабочий PC пользователя)
type: entity
tags: [hardware, windows, docker, virtualbox, iis, recovery, imgproxy]
sources: [../sources/nas-recovery-session-2026-05-18.md, ../sources/iis-migration-to-ruvds-2026-05-23.md]
updated: 2026-06-17
---
# Windows Recovery Host
Личный Windows-PC пользователя, который во время recovery стал production-сервером для всех клиентских сайтов.
## ⚠ Состояние после декоммишена (2026-06-08)
Машина **прибрана**: почти всё уехало на VDS (CMS→RUVDS, MSSQL→[[vds-kzntsv]], MinIO/imgproxy/ES→books VDS), бэкапы настроены, локальный контент удалён. **Разделы «Что хостит сейчас» / «Запущенные docker контейнеры» / «Host IIS configuration» ниже — ИСТОРИЯ (до 2026-06-08), не текущее состояние.**
**Что осталось на машине сейчас:**
- **IIS:** только сайты `stostayer` (:8090) и `stostayer.old` (:8091). Сайт `snolla` + `C:\sites\snolla` удалены. Оба — движок MoreThenCms, **админка по пути `/admin`** (`http://localhost:<port>/admin`). Наружу не светят (traefik routes `.yml.disabled`), доступ только локальный.
| Сайт | Порт | Connection string → БД | Что за БД |
|---|---|---|---|
| `stostayer` | `:8090` | `Data Source=www.stostayer.ru,1433` · `Catalog=stostayer` · user `stayer_site` | **внешний прод** SQL Server 2022 (чужая инфра, реальный боевой stostayer); файлы — S3 `minio.stostayer.ru` |
| `stostayer.old` | `:8091` | `Data Source=mssql.kzntsv.site,1433` · `Catalog=stostayer` · user `snolla` | **наш** MSSQL на [[vds-kzntsv]] (orphan-user `snolla` починен); файлы — local storage |
Live-проверка **2026-06-17**: `W3SVC`+`WAS` Running, оба порта `:8090`/`:8091` LISTENING; `:80` (бывший `snolla`) не слушается.
- **Docker:** `lightrag-*` + `postgres` (оставлены), `markitdown-mcp`×3 (MCP-инфра агента). Снесены: traefik, mssql, minio, imgproxy(+nginx), elasticsearch + 21 husk-стек. `diskstation/` пуст.
- **VirtualBox:** только `mutable-dev-environment` (оставлен). VM `snolla-recovery` (95ГБ) удалена. `C:\nas-recovery` (OVA+vm-sites, ~150ГБ) удалён.
- **Диск C:** free **62 → 275 ГБ**. Ещё ~176 ГБ docker-reclaim лежит в WSL2-vhdx — вернётся после `wsl --shutdown` + `Optimize-VHD` (follow-up вне agent-сессии).
Детали: `.tasks/decommission-windows-recovery-host.md`. image-pipeline SPOF (imgproxy на этой машине) **снят**`imgproxy.kzntsv.site` теперь на books VDS.
## Hardware / OS
- **Hostname:** DESKTOP-NSEF0UK
- **OS:** Windows 11 Pro (предположительно — поддерживает Hyper-V, IIS, .NET Framework)
- **LAN-MAC:** 88:66:5A:2F:AA:68 (Broadcom 802.11ac WiFi)
- **LAN-IP:** 192.168.1.143 (DHCP-резервация на [[openwrt-router]])
- **Диск C:** ~700 GB total, на старте recovery ~352 GB free, после — ~150 GB free.
- **Юзер:** vitya (admin)
## Установленный стек
- **.NET Framework:** 4.8.1
- **IIS** (W3SVC, на 80, мы планировали остановить — но не остановили, traefik на 8000/4443 не конфликтует)
- **Docker Engine 29.3.1** (Docker Desktop с WSL2 backend)
- **VirtualBox 7.2.8** (установлен в сессии 2026-05-18, через winget)
- **OpenSSH client** (для ssh/scp к kreknin и VM)
- **FileZilla client** (для пользовательских SFTP-перетаскиваний)
## Сетевое положение
- За **OpenWRT 23.05.4** [[openwrt-router]]
- Соединение с интернетом через **WiFi** (Broadcom 802.11ac, 288 Mbps)
- За **VLESS-клиентом v2rayN** (роутер default-route шёл через VPN, пришлось настроить **Bypass LAN** правило с `geoip:private` → direct, иначе входящие 80/443 терялись через asymmetric routing)
## Что хостит сейчас (после attempt 2 успешной миграции на host-IIS, 2026-05-19 вечер)
**Active prod:**
| Что | Где | Порт (host) | Прим. |
|---|---|---|---|
| **Native IIS — site `snolla`** | `C:\sites\snolla` (pool `snolla`, .NET v4.0 Integrated, `ApplicationPoolIdentity`) | `*:80`, `*:8089` | **active prod** — catch-all для 11 cms hosts; traefik backend `host.docker.internal:8089` |
| **Native IIS — site `stostayer`** | `C:\sites\stostayer` (pool `stostayer`) | `*:8090` | local-only, traefik route `.yml.disabled` (user: «внутренний, наружу не светить») |
| **Native IIS — site `stostayer.old`** | `C:\sites\stostayer.old` (pool `stostayer.old`) | `*:8091` | local-only, traefik route `.yml.disabled` |
| **traefik 2.6.6** | Docker, network `proxy` | 8000 (http), 4443 (https), 8080 (dashboard) | 11 cms routes → host IIS:8089; 2 stayer routes DISABLED; 3 infra routes |
| **MSSQL 2019** | Docker, named volume `mssql_mssql_data` | 1433 | 5 production DB |
| **MinIO** | Docker, bind-mount `./data` | 9000 | |
| **Elasticsearch 7.10.1** | Docker, bind-mount `./data` | 9200 | books-стек, не CMS |
| **imgproxy** | Docker | 8787 | |
| **imgproxy-nginx** | Docker | 8788 | |
**Parallel fallback (running, без traffic):**
| Что | Где | Порт (host) | Прим. |
|---|---|---|---|
| **VirtualBox `snolla-recovery` VM** | `C:\Users\vitya\VirtualBox VMs\snolla-recovery\` | NAT 13389/23389/8022/18080/18180/18181/18189 | parallel fallback на 24-48h soak; затем savestate; см. [[snolla-recovery-vm]] |
**Прочие inert:**
| Что | Где | Прим. |
|---|---|---|
| **`C:\sites\snolla-identity-manager\`** | папка без IIS-сайта | deploy-артефакт, не активен |
| **traefik backups** | `data/custom/*.yml.bak-*-2026-05-19` (5 серий) | atomic-revert artefacts; `.bak-pre-attempt2-2026-05-19` — baseline текущей prod conf |
`Default Web Site` stopped (`autoStart=false`). URL Rewrite + ARR **не установлены**.
## Ключевые папки
- `C:\Users\vitya\projects\docker\diskstation\` — compose'ы и данные docker-стеков
- `mssql/`, `minio/`, `elasticsearch/`, `imgproxy/`, `traefik/`
- `traefik/data/custom/*.yml` — file-provider routes для всех 13 client доменов + ES/MinIO/imgproxy
- `C:\Users\vitya\VirtualBox VMs\snolla-recovery\` — VM home, **active prod** (running)
- `C:\nas-recovery\backup\snolla\snolla.ova` — оригинал OVA (45.6 GB, для повторного импорта если что)
- `C:\nas-recovery\vm-sites\wwwroot\`, `C:\nas-recovery\vm-sites\stayer\` — резервная копия IIS-сайтов из VM (использована для миграции на хост; пока хранится как safety net)
- `C:\sites\`**inert**, готов для следующей попытки миграции (см. [[iis-migration-2026-05-19-postmortem]]):
- `snolla\` — Web.config patched (sitePath + conn → localhost)
- `stostayer\` — Web.config patched (conn → `www.stostayer.ru,1433` с XML-escape `&amp;`)
- `stostayer.old\` — Web.config conn → `mssql.kzntsv.site,1433` (репойнтнут с `localhost` после миграции MSSQL на [[vds-kzntsv]])
- `snolla-identity-manager\` — deploy-артефакт, IIS-сайта нет
- `C:\Users\vitya\projects\MoreThenCms\` — git-репо с исходниками CMS
## SSH-ключи на этой машине
- `~/.ssh/id_ed25519_kreknin` — для [[kreknin-synology]] (vitya@195.19.90.188)
- `~/.ssh/id_ed25519_openwrt` — для [[openwrt-router]] (root@192.168.1.1)
- `~/.ssh/id_ed25519_snolla_vm` — для [[snolla-recovery-vm]] (vitya@127.0.0.1:8022, в admin-keys VM)
## Что должно случиться, если этот PC погаснет
- **Image-pipeline (imgproxy) ляжет для всех сайтов** — RUVDS IIS rendering'ит HTML самостоятельно, но картинки идут через `imgproxy.kzntsv.site` который **всё ещё** на этой машине. Partial SPOF после миграции IIS.
- **`tandemmebel.ru` + www** — лежат полностью (scope-narrowed 2026-05-24, остаются здесь indefinitely).
- **Остальные ~24 CMS hostnames** — degrade gracefully после full DNS swap на RUVDS (HTML работает, картинки нет). Pre-swap — DNS всё ещё указывает сюда → полный outage до swap'а.
- **MSSQL / MinIO** — уже мигрированы на [[vds-kzntsv]] (2026-05-22), здесь только containers running в idle (могут быть decommission'ed).
- Long-term goal — closing image-pipeline SPOF (Option B local nginx-relay / Option D decompile DLL), см. [[future-resilient-architecture-goals]] + [[../concepts/iis-cutover-to-vds-services]].
## IIS partial-cutover на RUVDS (2026-05-24)
IIS site `snolla` **частично мигрирован** на [[ruvds-iis-host]] (`80.64.31.36`). State 2026-05-24:
- ✅ DNS flipped: `kupimknigi.spb.ru` (~00:00), `emspb.ru` + `www.emspb.ru` (~12:00). Public resolver cache держит старое до TTL=86400 expiry.
-В очереди (pending TTL drop до 300s в reg.ru): 22 hostnames — pilorama98/www, labtools.ru/www, labtools.pro/www, 12× *.snolla.com, rimiz.ru/www, maljarka.tandemmebel.ru, etc.
- ⛔ Останутся здесь indefinitely: `tandemmebel.ru` + `www.tandemmebel.ru` (scope narrow).
- ⚠ Source IIS:8089 + traefik routes для CMS-hostnames **всё ещё running** — rollback path на ~1 неделю soak. После — decommission (но не traefik сам, много других routes).
Подробная chronology — [[../sources/iis-migration-to-ruvds-2026-05-23]]. Driver: [[future-resilient-architecture-goals]].