Phase 9 — rollback миграции на host-IIS из-за Docker port-loop (host.docker.internal:80 от traefik container резолвится обратно в сам traefik через NAT, https.yml http-catchall middleware отдавал 301 -> TOO_MANY_REDIRECTS). Prod снова через VM. - iis-migration-2026-05-19-postmortem: 10 ошибок миграции + recipe для следующей попытки (backend port НЕ :80, smoke с MaximumRedirection 0, тест из НЕ-LAN, parallel VM x N часов, atomic revert plan) - webconfig-password-xml-escape: новая gotcha — & в conn-string пароле требует & в Web.config (XML reserved char) - iis-host-migration-2026-05-19: Phase 9 rollback chronology + что осталось на хосте inert - snolla-recovery-vm: статус -> active prod (обратно) - windows-recovery-host: host IIS sites -> inert artifacts - recovery-architecture-snapshot: chain снова через VM, traefik backends восстановлены из .bak-phase3 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.6 KiB
5.6 KiB
title, type, tags, sources, updated
| title | type | tags | sources | updated | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Windows Recovery Host (рабочий PC пользователя) | entity |
|
|
2026-05-19 |
Windows Recovery Host
Личный Windows-PC пользователя, который во время recovery стал production-сервером для всех клиентских сайтов.
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)
Что хостит сейчас (после revert 2026-05-19 — см. iis-migration-2026-05-19-postmortem)
Active prod:
| Что | Где | Порт (host) | Прим. |
|---|---|---|---|
VirtualBox snolla-recovery VM |
C:\Users\vitya\VirtualBox VMs\snolla-recovery\ |
VRDE 13389, NAT-RDP 23389, NAT-SSH 8022, NAT-HTTP 18080/18180/18181/18189 | active prod, обслуживает 11 главных доменов + stayer'ы через traefik |
| traefik 2.6.6 | Docker, network proxy |
8000 (http), 4443 (https), 8080 (dashboard) | 11 main routes + 2 stayer routes → all на VM (host.docker.internal:18080/18180/18181) + 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 |
Inert (готовы для следующей попытки миграции, не на prod-пути):
| Что | Где | Порт (host) | Прим. |
|---|---|---|---|
Native IIS — snolla |
C:\sites\snolla (pool snolla, .NET v4.0 Integrated, ApplicationPoolIdentity) |
80, 8088 | сайт + binding'и live, не получает трафика (traefik снова на VM) |
Native IIS — stostayer |
C:\sites\stostayer (pool stostayer) |
8090 | conn на www.stostayer.ru,1433 (patched), inert |
Native IIS — stostayer.old |
C:\sites\stostayer.old (pool stostayer.old) |
8091 | conn → наш localhost MSSQL (patched), inert |
C:\sites\snolla-identity-manager\ |
папка без IIS-сайта | — | deploy-артефакт, не активен |
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 patched (conn → localhost)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 погаснет
- Всё — все сайты лягут. Single point of failure — главное замечание для future-resilient-architecture-goals.