docs(.wiki): ingest NAS recovery session 2026-05-18/19

15-hour cross-hypervisor recovery from WD40EFAX SMR RAID5
cascade failure. 5 entities + 7 concepts + 1 source documenting:

- Root cause: WD40EFAX SMR cascade in 3-disk RAID 5
- Hyper Backup .hbk structure + SFTP-jail / ACL workarounds
- OVA from Synology VMM (KVM) → VirtualBox: SCSI→SATA,
  Hyper-V driver disable, paravirt=kvm, GA install, NAT switch
- MSSQL restore via named volume + chown, sqlcmd -x, mssql-conf
- Web.config UTF-16 vs UTF-8 BOM IIS 500.19 trap
- Traefik on Windows DD: configFile, named volume for acme.json,
  file-provider as docker.sock workaround
- Snapshot of current recovery architecture + SPOF list
- Placeholder for future resilient-architecture work

Plus .tasks/nas-recovery.md and STATUS.md updates closing the task.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 11:07:38 +03:00
parent 8ea0268df2
commit c86750b75d
5 changed files with 330 additions and 0 deletions

69
windows-recovery-host.md Normal file
View File

@@ -0,0 +1,69 @@
---
title: Windows Recovery Host (рабочий PC пользователя)
type: entity
tags: [hardware, windows, docker, virtualbox, iis, recovery]
sources: [../sources/nas-recovery-session-2026-05-18.md]
updated: 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)
## Что хостит сейчас (после recovery)
| Что | Где | Порт (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 |
| **traefik 2.6.6** | Docker, network `proxy` | 8000 (http), 4443 (https), 8080 (dashboard) |
| **MSSQL 2019** | Docker, named volume `mssql_mssql_data` | 1433 |
| **MinIO** | Docker, bind-mount `./data` | 9000 |
| **Elasticsearch 7.10.1** | Docker, bind-mount `./data` | 9200 |
| **imgproxy** | Docker | 8787 |
| **imgproxy-nginx** | Docker | 8788 |
Также установлен IIS, но Default Web Site пустой / неактивно используется. Должен быть остановлен в админ-PowerShell когда руки дойдут (для оптимизации; на 8000/4443 traefik не конфликтует с IIS на 80).
## Ключевые папки
- `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 (VMDK на SATA controller, 42.5 GB extract из OVA)
- `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 (на случай дрожи VM)
- `C:\Users\vitya\projects\MoreThenCms\` — git-репо с исходниками CMS (важно — у нас есть и source code)
## 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]].