chore(.tasks): add iis-on-host-migration task + next-session prompt
Closes nas-recovery (status done in STATUS.md), opens iis-on-host-migration as the next active task: migrate IIS sites from VirtualBox VM to native Windows host IIS to eliminate VBox as a stability layer. NEXT-SESSION-PROMPT.md is the kickoff brief for the next conversation — context, what to read, guardrails. Note: no push possible until gitea recovery (it was on the dead synology; backup of /docker/gitea/ exists on kreknin synology but not yet restored). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
49
NEXT-SESSION-PROMPT.md
Normal file
49
NEXT-SESSION-PROMPT.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Prompt для следующей сессии
|
||||
|
||||
Скопируй этот блок и вставь как первое сообщение:
|
||||
|
||||
---
|
||||
|
||||
Привет! Продолжаем после recovery. **Контекст уже зафиксирован в** `.wiki/` (читай `overview.md` для навигации) **и в** `.tasks/STATUS.md`.
|
||||
|
||||
**Кратко где мы сейчас:**
|
||||
- Клиентские сайты живы и доступны из публичного интернета через цепочку: client → OpenWRT NAT → traefik 4443/8000 (на этом Windows-PC) → VirtualBox VM `snolla-recovery` → IIS + .NET 4.8 CMS.
|
||||
- 5 баз восстановлены в MSSQL контейнере на хосте. MinIO/Elasticsearch/imgproxy тоже работают в Docker.
|
||||
- 40 LE-сертификатов валидны, traefik на file-provider routing.
|
||||
|
||||
**Задача этой сессии:** запустить активную задачу `nas-recovery` → `iis-on-host-migration`. Цель — перенести IIS-сайты из VM на нативный IIS Windows-хоста, чтобы избавиться от VBox как слоя нестабильности. Все материалы есть: backup сайтов в `C:\nas-recovery\vm-sites\` (11 GB), исходники в `projects/MoreThenCms\`, контейнеры с БД и сервисами уже работают на этом хосте.
|
||||
|
||||
**Старт-команда:**
|
||||
1. Прочитай `.tasks/iis-on-host-migration.md` целиком.
|
||||
2. Прочитай `.wiki/entities/snolla-recovery-vm.md` и `.wiki/entities/windows-recovery-host.md` — что мы переносим и куда.
|
||||
3. Прочитай `.wiki/concepts/cms-config-rewrite-pattern.md` — про UTF-8 BOM ловушку.
|
||||
4. Спроси меня про **открытые вопросы** из `.tasks/iis-on-host-migration.md` (CMS abs paths, IIS app pool identity, .NET update, MinIO/Azure adapter).
|
||||
5. После того как откроемся в вопросах — предложи план Phase 1+2 (анализ + импорт сайтов) одной аргументированной рекомендацией, не меню. Согласую — поедем.
|
||||
|
||||
**Не делай без моего "да":**
|
||||
- Менять traefik backends (это переключит prod-трафик).
|
||||
- Останавливать VM до полной отладки нативного IIS.
|
||||
- Удалять backup-копии (vm-sites/, snolla.ova).
|
||||
- Любой push в git (gitea пока недоступен — он был на мёртвой синке, восстанавливать = отдельная задача).
|
||||
|
||||
**Открытое:** МinIO/Azure-адаптер в CMS — я обещал пояснить, "не так все" как считалось. Готов рассказать когда дойдёт.
|
||||
|
||||
Поехали.
|
||||
|
||||
---
|
||||
|
||||
## Что почитать AI-агенту перед началом (для самопроверки контекста)
|
||||
|
||||
- `.wiki/overview.md` — точки входа
|
||||
- `.wiki/sources/nas-recovery-session-2026-05-18.md` — что было
|
||||
- `.wiki/concepts/recovery-architecture-snapshot.md` — текущее состояние, request flow
|
||||
- `.wiki/concepts/future-resilient-architecture-goals.md` — куда движемся в долгую
|
||||
- `.tasks/STATUS.md` — закрытая задача `nas-recovery` (status: done)
|
||||
- `.tasks/iis-on-host-migration.md` — активная задача, открытые вопросы
|
||||
- Это сообщение
|
||||
|
||||
## Полезные пароли/ключи (хранятся в Web.config / .env, не в чате)
|
||||
- MSSQL SA: см. `C:\Users\vitya\projects\docker\diskstation\mssql\.env`
|
||||
- Production MSSQL для CMS: user `snolla` (production password в Web.config-ах в VM и в `production-data/docker-compose.yml`)
|
||||
- MinIO access/secret keys: `C:\Users\vitya\projects\docker\diskstation\minio\docker-compose.yml`
|
||||
- SSH-ключи на хосте: `~/.ssh/id_ed25519_kreknin`, `~/.ssh/id_ed25519_openwrt`, `~/.ssh/id_ed25519_snolla_vm`
|
||||
@@ -1,6 +1,14 @@
|
||||
# Task Board
|
||||
_Updated: 2026-05-18_
|
||||
|
||||
## ⚪ [iis-on-host-migration] — перенести IIS-сайты из VM на нативный Windows-host IIS
|
||||
**Status:** ready (поставлена 2026-05-19, старт следующей сессией)
|
||||
**Where I stopped:** план в [`iis-on-host-migration.md`](iis-on-host-migration.md), prompt для следующей сессии в [`NEXT-SESSION-PROMPT.md`](NEXT-SESSION-PROMPT.md). Резервные копии готовы: `C:\nas-recovery\vm-sites\wwwroot\` (8.7 GB) + `stayer\` (2.2 GB). Контейнеры (MSSQL/MinIO/ES/imgproxy/traefik) уже на хосте, их не трогаем.
|
||||
**Next action:** в новой сессии — открыть `iis-on-host-migration.md`, обсудить открытые вопросы (abs paths в CMS, AppPool identity, MinIO/Azure adapter), потом Phase 1+2.
|
||||
**Branch:** master
|
||||
|
||||
---
|
||||
|
||||
## 🟢 [nas-recovery] — клиентские сайты восстановлены, работают из публичного интернета
|
||||
**Status:** done (2026-05-19 ~10:00 MSK — 15 часов работы)
|
||||
**Final state:** OpenWRT NAT → traefik 2.6.6 (host:8000/4443) → VirtualBox VM snolla-recovery (IIS + CMS) + docker-стек на хосте (MSSQL/MinIO/ES/imgproxy/nginx). 13 client routes, 40 LE certs валидны. Проверено: пользовательский клиент из публичного интернета открывает snolla.com, pilorama98.ru, labtools.ru/pro, tandemmebel.ru, emspb.ru.
|
||||
|
||||
82
iis-on-host-migration.md
Normal file
82
iis-on-host-migration.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# iis-on-host-migration
|
||||
|
||||
## Goal
|
||||
Перенести IIS-сайты MoreThenCms из VirtualBox VM (`snolla-recovery`) на нативный IIS Windows-хоста. VM остаётся как hot fallback на первое время; после успешного нативного-запуска — выключаем VM, освобождаем 4 GB RAM + ~92 GB диска.
|
||||
|
||||
**Зачем:** VM на VBox = лишний слой нестабильности (видели один network hang). Нативный IIS на хосте — проще, быстрее, без NAT-форвардов и VBox-капризов. Контейнеры MSSQL/MinIO/etc. уже на этом же хосте — устраняем сетевой роутинг.
|
||||
|
||||
## Что у нас уже есть
|
||||
|
||||
- ✅ IIS установлен на хосте (W3SVC running, default site empty, [`.wiki/entities/windows-recovery-host`](../.wiki/entities/windows-recovery-host.md))
|
||||
- ✅ .NET Framework 4.8.1 на хосте
|
||||
- ✅ Полная копия `C:\inetpub\wwwroot\` из VM → `C:\nas-recovery\vm-sites\wwwroot\` (8.69 GB)
|
||||
- ✅ Полная копия `C:\stayer\` из VM → `C:\nas-recovery\vm-sites\stayer\` (2.21 GB)
|
||||
- ✅ MSSQL контейнер на host:1433 (5 production DB)
|
||||
- ✅ MinIO на host:9000, Elasticsearch на host:9200, imgproxy на host:8787/8788
|
||||
- ✅ Исходники CMS в `C:\Users\vitya\projects\MoreThenCms\` (Git репо)
|
||||
- ✅ Traefik с 13 client routes (сейчас target = `host.docker.internal:18080` = VM)
|
||||
|
||||
## Key files
|
||||
- `C:\nas-recovery\vm-sites\wwwroot\` — IIS-сайты из VM
|
||||
- `C:\nas-recovery\vm-sites\stayer\` — stostayer-проекты
|
||||
- `C:\inetpub\wwwroot\` — целевое расположение на хосте
|
||||
- `C:\Users\vitya\projects\docker\diskstation\traefik\data\custom\*.yml` — backends, нужно переключить с `host.docker.internal:18080` на `localhost:80` (или какие-то local IIS-bindings)
|
||||
- `Web.config` файлы — connection strings уже патчены на `10.0.2.2`, нужно вернуть на `localhost` или `127.0.0.1` для нативного IIS
|
||||
|
||||
## План этапов
|
||||
|
||||
### Phase 1 — Анализ и подготовка
|
||||
- Изучить IIS site bindings в VM (MoreThenCms.Web `*:80`, Snolla.IdentityManager `*:80`, stostayer `*:8080`, stostayer.old `*:8081`)
|
||||
- Решить port-mapping на хосте — оставлять 80? Или другие порты, traefik на 80/443 переадресует?
|
||||
- Изучить, какие IIS modules/features нужны (URL Rewrite, ARR, обязательные .NET runtimes — может потребоваться доставить)
|
||||
|
||||
### Phase 2 — Импорт сайтов на хост
|
||||
- Скопировать `C:\nas-recovery\vm-sites\wwwroot\*` → `C:\inetpub\wwwroot\` (или другой root)
|
||||
- Скопировать `C:\nas-recovery\vm-sites\stayer\` → `C:\stayer\`
|
||||
- Создать application pools (`.NET v4.5` или эквивалент) для каждого сайта в IIS Manager
|
||||
- Создать sites в IIS:
|
||||
- `MoreThenCms.Web` (port 80 / другой)
|
||||
- `Snolla.IdentityManager`
|
||||
- `stostayer` (port 8080)
|
||||
- `stostayer.old` (port 8081)
|
||||
- Web.config patch: `Data Source=10.0.2.2` → `Data Source=localhost` (или `127.0.0.1` / `.\` ; UTF-8 BOM!)
|
||||
|
||||
### Phase 3 — Перенос на хост IIS, тест
|
||||
- Stop VM (но не удалять!)
|
||||
- Update traefik backends в `data/custom/*.yml`:
|
||||
- `http://host.docker.internal:18080/` → `http://host.docker.internal:80/` (или какой порт IIS использует)
|
||||
- `:18180` → `:8080`, `:18181` → `:8081`
|
||||
- traefik restart
|
||||
- Прокликать все 11 клиентских доменов из публичного интернета
|
||||
- Убедиться что .NET Framework 4.8.1 справляется, нет missing assemblies, нет permission issues на App_Data / temp folders
|
||||
|
||||
### Phase 4 — Cleanup VM
|
||||
- Когда стабильно ~неделя на хост-IIS — выключить VM окончательно
|
||||
- `VBoxManage controlvm "snolla-recovery" poweroff`
|
||||
- Удалить port forwards в OpenWRT, которые больше не нужны (host:18080, host:18180, etc.) — это уже не traefik backend
|
||||
- (Опционально) удалить VM из VBox: `VBoxManage unregistervm "snolla-recovery" --delete`. Это освобождает 92 GB на C:.
|
||||
- Удалить `C:\nas-recovery\backup\snolla\snolla.ova` (42.5 GB) и `C:\nas-recovery\vm-sites\` (11 GB) — backup уже не нужен.
|
||||
|
||||
### Phase 5 — Бонусы
|
||||
- Установить **URL Rewrite + ARR** для нормальной обработки X-Forwarded-Proto headers (fix CMS-редиректа с `:4443` в URL — см. [`.wiki/concepts/traefik-on-windows-docker-desktop`](../.wiki/concepts/traefik-on-windows-docker-desktop.md))
|
||||
- Настроить log rotation для C:\inetpub\logs\
|
||||
- Application Initialization (для warm-start CMS) — IIS Optional Feature, autostart сайтов
|
||||
|
||||
## Open questions
|
||||
- [ ] CMS-код использует абсолютные пути типа `C:\inetpub\wwwroot\MoreThenCms.Web\` (видели в Web.config `<add key="sitePath" .../>`)? Если да — путь должен остаться, либо обновить.
|
||||
- [ ] Authentication / IIS Application Identity — какая учётка должна крутить app pool? (LocalSystem? NetworkService? IIS AppPool\<sitename>?)
|
||||
- [ ] Нужен ли .NET Framework Repair / SAC update перед миграцией?
|
||||
- [ ] Что с storage providers (Azure-SDK adapter в CMS)? — Связано с открытым вопросом о MinIO/Azure, что пользователь обещал прояснить.
|
||||
|
||||
## Decisions log
|
||||
- 2026-05-19: задача поставлена после успешного recovery в VM. VM показала себя нестабильной (один network hang за день uptime), решено мигрировать на нативный IIS как более простой и предсказуемый стек.
|
||||
|
||||
## Completed steps
|
||||
- [x] Pulled VM sites to host (49 минут tar+ssh, 11 GB total)
|
||||
- [x] IIS на хосте установлен (в рамках recovery, ещё нативно не использовался)
|
||||
|
||||
## Notes
|
||||
|
||||
- VM не удалять до конца Phase 3 — это working fallback. Только после двух недель стабильной работы host-IIS.
|
||||
- Git push в gitea невозможен пока — gitea был на мёртвой синке. Восстановление gitea — отдельная задача (есть бэкап `/docker/gitea/` 2.6 GB на kreknin-синке, можно поднять локально или временно класть code в другое место).
|
||||
- При работе с Web.config — **обязательно UTF-8 BOM** через `[System.IO.File]::WriteAllText` с `[System.Text.UTF8Encoding]::new($true)`. Иначе IIS 500.19. Детали в [`.wiki/concepts/cms-config-rewrite-pattern`](../.wiki/concepts/cms-config-rewrite-pattern.md).
|
||||
Reference in New Issue
Block a user