From 50e263860db7c0b70fa657f2934e1a6a1845343a Mon Sep 17 00:00:00 2001 From: vitya Date: Mon, 20 Jul 2026 13:33:09 +0300 Subject: [PATCH] ops(on-snolla): rename site alias on->internal (admin at internal.snolla.com/admin) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sites.Alias+LoweredAlias on->internal (siteId B9ECDB50; PrimaryDomain on.snolla.com kept). - Web.config primaryAlias on->internal (catch-all default-site; without it the whole catch-all NRE-500s on every request — primaryAlias references the renamed alias). - hosts: on.snolla.com->internal.snolla.com under # snolla-local-admin marker. - setup-local-snolla-admin.ps1 aliases array updated. - runbook + NEXT_SESSION + memory updated. VDS prod on.snolla.com unaffected (snolla-app uses config.siteId, not alias) — verified byte-identical + smoke GREEN after rename. Incident: elevated hosts edit emptied hosts to 0B (Get-Content -Raw returned null in RunAs context) — restored from Windows default header + snolla-local-admin block. Memory snolla-catch-all-primaryalias-depends-on-alias. Co-Authored-By: Claude --- .tasks/NEXT_SESSION.md | 9 ++++++++- .wiki/concepts/on-snolla-vds-deploy-runbook.md | 8 +++++++- .../setup-local-snolla-admin.ps1 | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index 051f919..e4c2d12 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -51,7 +51,14 @@ Runbook (as-built + gotchas): `.wiki/concepts/on-snolla-vds-deploy-runbook.md`. ## Не делать (preemptive guards) - **НЕ пушить без добла** (Rule 4) — на эту сессию добл был ("разрешаю всё, погнали"). - **НЕ сжимать** books на .94; **НЕ netplan** на vds-kzntsv. -- **hosts override активен** — `on.snolla.com` → 127.0.0.1 (локальный админ Task A). Боевой on.snolla.com (VDS) с воркстейшна — только через `--resolve :443:89.253.255.94` или off-hosts. +- **hosts override активен** — `internal.snolla.com` → 127.0.0.1 (локальный админ Task A; алиас `on` переименован в `internal` 2026-07-20). Боевой on.snolla.com (VDS) с воркстейшна — только через `--resolve :443:89.253.255.94` или off-hosts. **Публичного on.snolla.com/admin не существует** (никогда не было) — админка только локальная: `http://internal.snolla.com/admin`. + +### Alias rename `on`→`internal` (2026-07-20, follow-up оператора) +- `Sites.Alias`+`LoweredAlias`: `on`→`internal` (siteId B9ECDB50, PrimaryDomain остался `on.snolla.com`). +- `C:\sites\snolla\Web.config` `primaryAlias`: `on`→`internal` (иначе catch-all NRE-500 на ВСЕХ запросах — primaryAlias ссылается на переименованный алиас). +- hosts: `on.snolla.com`→`internal.snolla.com` под маркером `# snolla-local-admin`. +- **Инцидент:** я обнулил hosts своей elevated-правкой (Get-Content -Raw в RunAs-контексте вернул пусто → Set-Content записал пусто). Восстановил: Windows default header + snolla-local-admin блок (с internal.snolla.com). LAN-DNS CMS-перехват через DNS-резолвер, не hosts → потерь нет. Урок в memory `snolla-catch-all-primaryalias-depends-on-alias`. +- VDS prod on.snolla.com НЕ затронут (snolla-app использует config.siteId, не alias) — byte-identical, smoke GREEN. - **НЕ откатывать DNS on.snolla.com** без явного запроса — cutover LIVE, RUVDS IIS жив как rollback-target. ## Memory updates за сессию diff --git a/.wiki/concepts/on-snolla-vds-deploy-runbook.md b/.wiki/concepts/on-snolla-vds-deploy-runbook.md index 656cb0e..d543b7a 100644 --- a/.wiki/concepts/on-snolla-vds-deploy-runbook.md +++ b/.wiki/concepts/on-snolla-vds-deploy-runbook.md @@ -36,7 +36,13 @@ Culture `en`. Спека: [[snolla-local-admin-and-on-snolla-migration-design]] - `/c` → **404** (stale dead-link в .NET sitemap; snolla-app sitemap тоже его несёт → parity `/`+`/c`+`/yandex`). - Theme assets `/themes/c406a987ebe14244b0eefe7b8f959a6f/{css,js,images}/*` — из MinIO bucket `themes` (snolla `themeFiles` middleware; пути literal в `layout.liquid`). -- `/admin` остаётся на RUVDS .NET — НЕ часть этого snolla-app. +- `/admin` — **публичного `on.snolla.com/admin` не существует** (никогда не было: RUVDS catch-all IIS не + маршрутизировал /admin на публичном on.snolla.com — cert на 80.64.31.36:443 SNI on.snolla.com = чужой + `CN=kupimknigi.spb.ru`, /admin → 404). Админка — только **локальный catch-all IIS `snolla`** (Task A, + воркстейшн). Site alias переименован `on`→`internal` (2026-07-20), доступ = `http://internal.snolla.com/admin` + через hosts override → 127.0.0.1 → 302→login. **Web.config `primaryAlias`** тоже обновлён `on`→`internal` + (default-site resolution; иначе catch-all NRE-500 на ВСЕХ запросах — primaryAlias ссылается на алиас, + переименование сайта без обновления primaryAlias ломает весь catch-all). НЕ часть snolla-app. ## Cutover 2026-07-20 (первый вынос на VDS — DNS-gated) 1. **Build на VDS** (archive `473923e494db` → `~/build/on-snolla` → `docker build -f deploy/Dockerfile diff --git a/scripts/local-snolla-admin-restore/setup-local-snolla-admin.ps1 b/scripts/local-snolla-admin-restore/setup-local-snolla-admin.ps1 index 39e29df..7303311 100644 --- a/scripts/local-snolla-admin-restore/setup-local-snolla-admin.ps1 +++ b/scripts/local-snolla-admin-restore/setup-local-snolla-admin.ps1 @@ -11,7 +11,7 @@ Import-Module WebAdministration $siteName = 'snolla' $poolName = 'snolla' $physPath = 'C:\sites\snolla' -$aliases = @('tandemmebel.snolla.com','labtools.snolla.com','labtoolspro.snolla.com','emspb.snolla.com','kupimknigi.snolla.com','on.snolla.com') +$aliases = @('tandemmebel.snolla.com','labtools.snolla.com','labtoolspro.snolla.com','emspb.snolla.com','kupimknigi.snolla.com','internal.snolla.com') Write-Host "== 1. AppPool $poolName ==" if (Test-Path "IIS:\AppPools\$poolName") {