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

10 KiB
Raw Permalink Blame History

title, type, tags, sources, updated
title type tags sources updated
Windows Recovery Host (рабочий PC пользователя) entity
hardware
windows
docker
virtualbox
iis
recovery
imgproxy
../sources/nas-recovery-session-2026-05-18.md
../sources/iis-migration-to-ruvds-2026-05-23.md
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-ключи на этой машине

Что должно случиться, если этот 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.