Добавлена таблица порт->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>
126 lines
10 KiB
Markdown
126 lines
10 KiB
Markdown
---
|
||
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 `&`)
|
||
- `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]].
|