Files
admin/.tasks/snolla-local-admin-restore.md
vitya c196964d03 feat(snolla-local-admin): RESTORE DONE — local .NET admin live (6 /admin URLs)
Task A complete. Local catch-all IIS site `snolla` restored from RUVDS:
- Selective tar-copy ~100MB (excluded stale App_Data assets/galleries/themes
  8.76GB — now in MinIO), NOT the full 8.66GB.
- Web.config already pointed at mssql.kzntsv.site MoreThenCms (user snolla)
  + MinIO S3 drop-in with real keys (placeholder_count=0) — repoint not needed.
- Elevated setup script (ASCII-only, PS5.1 BOM-less-safe):
  scripts/local-snolla-admin-restore/setup-local-snolla-admin.ps1
- AppPool snolla (.NET v4.0, AppPoolIdentity, recycle@200MB), IIS site *:80,
  ACL, hosts-override (6 aliases -> 127.0.0.1), FW block inbound 80.
- Smoke GREEN: tandemmebel/labtools/labtoolspro/emspb/kupimknigi/on
  .snolla.com/admin/account/login -> 200, real MoreThenCms login form.

Unblocks Task B (on-snolla-vds-migration). MinIO upload-acceptance = manual
operator follow-up. Records: .tasks/snolla-local-admin-restore.md + STATUS.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 10:10:44 +03:00

5.5 KiB
Raw Blame History

snolla-local-admin-restore

Goal

Восстановить локальный .NET-админ (catch-all IIS-сайт snolla) на этой машине (windows-recovery-host), снесённый 2026-06-08 при декоммишене. Назад — с RUVDS (текущий прод-админ с MinIO drop-in). Даёт /admin для всех сайтов тиража + on.snolla.com локально. Спека: ../.wiki/concepts/snolla-local-admin-and-on-snolla-migration-design.md §Task A.

Why

Тираж уехал на VDS (Node), админка осталась на RUVDS .NET. Нужно локально редактировать контент (особенно on.snolla.com для Task B) без зависимости от RUVDS. Временно — пока админ не мигрирован на VDS.

Addressing (confirmed оператором)

Catch-all *:80 + hosts-override → 127.0.0.1 <alias>.snolla.com. Один AppPool snolla. URL = <alias>.snolla.com/admin:

  • tandemmebel.snolla.com/labtools.snolla.com/labtoolspro.snolla.com/emspb.snolla.com/kupimknigi.snolla.com/on.snolla.com

Plan / phases

  • 0. Verify source (read-only SSH RUVDS) — plink -hostkey (fingerprint SHA256:r/vSKU5WzH4B8T7RiXyXlg0D8XZ9hlBxzmdrPzuPWzE, креды pass show ruvds-iis/full-env). C:\sites\snolla\ есть, IIS site snolla Started, catch-all *:80 + SNI *.snolla.com/real-domains. Web.config уже → mssql.kzntsv.site,1433;Catalog=MoreThenCms;User Id=snolla;Password=... (тот же snolla SQL-user что stostayer.old). MinIO drop-in применён: assets/galleries/images/scripts/stylesheets/watermarks → FileStorage.S3.*, endpoint minio.kzntsv.site, ключи реальные (placeholder_count=0, accessKey=20/secretKey=40). Кэши Local.
  • 1. Копировать C:\sites\snolla\ RUVDS→локальноselective tar-over-SSH ~100MB (НЕ 8.76GB): bin(53MB, вкл S3 DLLs)+Admin(6MB)+Areas+Views+Web.config+App_Data/{maxMind,searchIndexes,contentCache}, исключая stale App_Data/{assets(215MB),galleries(5.5GB),themes(2.8GB),uploadCache(145MB)} + bin.old. Команда: plink ... "tar -C C:/sites/snolla -cf - --exclude=App_Data/assets --exclude=App_Data/galleries --exclude=App_Data/themes --exclude=App_Data/uploadCache --exclude=bin.old --exclude=App_Data/imageCache ." | tar -C /c/sites/snolla -xf -.
  • 2. Репойнт conn-stringНЕ НУЖНО, RUVDS-Web.config уже на mssql.kzntsv.site (cutover 2026-05). DB-креды snolla/fXkH4@8O%3pc (plaintext в Web.config, тот же user работает для MoreThenCms+stostayer catalogs). Q2 закрыта.
  • 3. MinIO-ключи — уже реальные в скопированном Web.config (см. step 0). Pass-lookup не понадобился.
  • 4. IIS-сайт snolla — elevated scripts/local-snolla-admin-restore/setup-local-snolla-admin.ps1 (ASCII-only, PS5.1 BOM-less-safe): AppPool snolla (.NET v4.0, AppPoolIdentity, recycling.memory 200MB), IIS site *:80 catch-all, ACL IIS AppPool\snolla:(OI)(CI)(M).
  • 5. hosts-override127.0.0.1 tandemmebel/labtools/labtoolspro/emspb/kupimknigi/on .snolla.com в hosts (marker # snolla-local-admin, idempotent).
  • 6. FWNew-NetFirewallRule block-inbound-80-snolla-local (Action Block, loopback не фильтруется → local-only). URL Rewrite rule НЕ ставил (скопированный inert).
  • 7. Smokecurl --noproxy '*' -H "Host: <alias>.snolla.com" http://127.0.0.1/admin/account/login200 для всех 6 (tandemmebel/labtools/labtoolspro/emspb/kupimknigi/on). HTML = реальная MoreThenCms-логинформа (<title>SNOLLA</title>, <form action="/admin/login">). hosts + IIS listening confirmed.

Status

🟢 DONE (2026-07-20). Branch: master. Local .NET-админ поднят, 6 адресов /admin живые.

Verify-факт

  • Catch-all routing: appSettings = sitePath=C:\sites\snolla\, primaryDomain=snolla.com, primaryAlias=on (default-site = on.snolla.com "Internal Site"); siteId резолвится из Host-header (нет siteId в appSettings, в отличие от per-site stostayer.old). customErrors mode="Off".
  • bin/ несёт MoreThenCms.FileStorage.S3.dll + AWSSDK.Core.dll + AWSSDK.S3.dll (drop-in).

Depends on / blocks

  • Блокирует: on-snolla-vds-migration (нужен админ для контент-инспекции on.snolla.com).

Open Q

  • MoreThenCms DB app-аккаунт — ЗАКРЫТА: snolla SQL-user уже в Web.config (plaintext), работает для MoreThenCms catalog.
  • Включать все ~60 сайтов или только тираж(5)+on.snolla.com — пока 6 в hosts; catch-all даёт все, расширить = дописать <alias>.snolla.com в hosts.
  • MinIO upload-acceptance (не автотест): оператор логинится в админку, заливает тест-ассет → проверяет объект в MinIO minio.kzntsv.site (bucket assets). S3-провайдер был admin-self-test green на RUVDS, Web.config скопирован 1:1 → должен работать.

Rollback

Удалить IIS-сайт snolla + C:\sites\snolla\ + откатать hosts (снести marker # snolla-local-admin). FW-block-rule можно оставить. Прод-RUVDS не тронут.