Authoritative ns1/ns2.reg.ru serve 89.253.255.94 for rimiz.ru + www.
Public resolvers still cache 80.64.31.36 (TTL 86400), clears in 24h.
RUVDS has no public domain pointing at it anymore.
Co-Authored-By: Claude <noreply@anthropic.com>
ruvds-iis-host (80.64.31.36) decommissioned at provider. Final offsite
snapshot verified on kreknin 2026-07-21 (8.8G, 7-day retention).
Only public domain still on RUVDS was dead rimiz.ru (404 since 2026-05-19);
all snolla-fleet migrated to VDS (stacks 17-22). Local .NET admin
independent of RUVDS. on-snolla runbook rollback-ref updated
(RUVDS no longer rollback-target — image-tag only).
Co-Authored-By: Claude <noreply@anthropic.com>
`d4278e79` (handoff), `c196964d` (Task A done + scripts).
### ОСТАЁТСЯ ОПЕРАТОРУ (один ручной шаг)
- **Отказаться от RUVDS у провайдера** — личный кабинет https://ruvds.com (креды в `pass ruvds-iis/full-env`). Машина выключена/забыта на нашей стороне; cancelling у провайдера = экономия денег. Не горит — daily-бэкап с RUVDS прекратится сам (таска умрёт с хостом), это ОК: offsite-копия уже на kreknin, локальный админ жив.
### As-built (отличия от спеки)
- **Selective copy ~100MB** (НЕ 8.76GB): tar-over-SSH исключил stale `App_Data/{assets,galleries,themes,uploadCache}` + `bin.old`. Команда в task-файле.
- **Repoint НЕ нужен** — RUVDS Web.config уже на `mssql.kzntsv.site,1433;Catalog=MoreThenCms;User Id=snolla;Password=fXkH4@8O%3pc` (тот же snolla SQL-user что stostayer.old) + MinIO S3 drop-in с**реальными ключами** (placeholder_count=0).
on.snolla.com live на VDS как Node snolla-app `@snollajs/snolla` 0.42.1, за traefik, LE-серт issued.
~~Прод-оракул был RUVDS IIS (80.64.31.36) — не тронут, жив (rollback = revert DNS).~~**RUVDS DECOMM — rollback только образ-тегом (см. on-snolla-vds-deploy-runbook § Rollback).**
Логин в админку → залить тест-ассет → проверить объект в `minio.kzntsv.site` bucket=assets. S3-провайдер был admin-self-test green на RUVDS, Web.config 1:1 → должно работать. Креды админа см. open Q ниже.
🟢 **[on-snolla-vds-migration] ЗАКРЫТА.** Спека: `.wiki/concepts/snolla-local-admin-and-on-snolla-migration-design.md` §Task B.
- **snolla robotsTxt крашится на undefined `app.locals.domain`** — on.snolla.com не имеет row в MoreThenCms `Domains`. Фикс в `apps/web/index.js`: после initApp, если `!app.locals.domain`, synthesized `{robotsTxt: site.robotsTxt}`. Без shared-DB мутации. Memory `snolla-robotstxt-crash-no-domains-row`.
- **Form "Join us" не имеет Liquid form-tag** — форма HTML baked в layout, POST — `forms` middleware (мэтч по Path `/`). Legacy reCAPTCHA v1 мертва — parity, не чиним.
- **Portainer JWT short-lived** — в node-скрипте GET stack + GET file + PUT: jwt из GET-фазы протух к PUT (первый PUT 401). Re-auth прямо перед PUT.
- **hosts override на воркстейшне** — Task A оставил `127.0.0.1 on.snolla.com` в hosts. External verify прод-on.snolla.com = только через `curl --resolve on.snolla.com:443:89.253.255.94`.
### MinIO upload-acceptance (ручной follow-up оператора — НЕ сделано)
Логин в админку on.snolla.com (на RUVDS .NET, `/admin`) → залить тест-ассет → проверить объект в `minio.kzntsv.site` bucket=assets. S3-провайдер был admin-self-test green на RUVDS; Web.config 1:1 → должно работать. Креды админа в `MoreThenCms.dbo.Accounts` (SQL-user `snolla` / SA `pass mssql-vds/sa-password`).
## Recent commits (.admin)
- 4c4d1938 feat(on-snolla): CUTOVER DONE — on.snolla.com live on VDS (stack 22, LE cert)
| **on-snolla-vds-migration (Task B)** | ⚪ ready, **unblocked** (Task A done), ОТЛОЖЕН в след. сессию | `.tasks/on-snolla-vds-migration.md`; spec §Task B. Решения зафиксированы: repo=`victor/on.snolla.com`, admin-креды в `MoreThenCms.dbo.Accounts` (SQL-user `snolla` или SA). Шаг 1: реконструкция Liquid из `http://on.snolla.com/` (hosts→127.0.0.1, локальный IIS рендерит из той же DB — контент == прод) + `/admin` (контент-дерево). |
| vehicles-loader 0.4.1 runtime verify | 🔴 active — просрочено с 07-14 | SSH `new.stostayer.ru:20435`, проверить importRun. Откат: tag 0.4.0. |
| books-vds → vds-kzntsv консолидация | оценено, не лезет по RAM/disk | Решение за user. |
-✅ **Push** — сделан (`c196964d`+`863b11be` → origin/master).
- ✅ **Task B repo name** — `victor/on.snolla.com`.
- ✅ **Admin-креды** — в БД `MoreThenCms.dbo.Accounts` (читать SQL-user'ом `snolla` или SA из `pass mssql-vds/sa-password`); логин-форма `/admin/account/login`.
- ✅ **Task B старт** — в СЛЕДУЮЩЕЙ сессии (эта — wrap-up после Task A).
## Спроси user'а
-(нет pending-решений — Task B закрыт полностью)
## Не делать (preemptive guards)
- **НЕ пушить без добла** (Rule 4).
- **НЕSSH-action на RUVDS без добла** (read-only verify уже сделан; дальше — только если нужно).
- **НЕ деплоить vehicles-loader** без rateDiff; **НЕ retry-push** в docker.stostayer.ru; **НЕ netplan** на vds-kzntsv; **НЕ сжимать** books на .94.
- **hosts override активен** — `on.snolla.com` → 127.0.0.1 теперь (боевой on.snolla.com доступен только через `--resolve ...:443:80.64.31.36` или off-hosts).
- **НЕ пушить без добла** (Rule 4) — на эту сессию добл был ("разрешаю всё, погнали").
- **НЕсжимать** books на .94; **НЕ netplan** на vds-kzntsv.
- **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.
- (candidate) **SNOLLA admin addressing = `<alias>.snolla.com/admin`** catch-all IIS, siteId из dbo.Sites по alias (primaryAlias `on` = default). DB user `snolla` работает на MoreThenCms+stostayer catalogs.
- Обновить entity `windows-recovery-host.md`: IIS-сайт `snolla` восстановлен 2026-07-20 (локальный админ-хаб, не прод — прод на RUVDS).
-**NEW** `snolla-robotstxt-crash-no-domains-row` — snolla sites без Domains row крашатся на /robots.txt; фикс в index.js domain-drop fallback.
- (candidate) on.snolla.com мигрирован на VDS 2026-07-20 (stack 22, LE). Тираж snolla на VDS: labtools(17)/emspb(18)/labtools-pro(19)/tandemmebel(20)/kupimknigi(21)/on-snolla(22).
- (candidate) обновить entity `windows-recovery-host.md`: on.snolla.com более не обслуживается локальным IIS как прод — прод на VDS; локальный IIS `snolla` = только админ-хаб (hosts override on.snolla.com→127.0.0.1 теперь pointing на админ-копию, не прод).
(иначе попадёшь в локальный IIS). См. memory `workstation-lan-dns-serves-local-cms-copy`.
- **Portainer JWT short-lived** — GET stack + GET file + PUT в одном скрипте: jwt из GET-фазы может протухнуть
к PUT. Re-auth (`POST /api/auth`) прямо перед PUT. API-key `ptr_*` даёт 401 (см. [[portainer-stack-management-vds]]).
- **Образных rollback-тегов пока нет** — первый deploy, `473923e494db` = `:latest`. Rollback = revert DNS (RUVDS жив).
- **Образных rollback-тегов пока нет** — первый deploy, `473923e494db` = `:latest`. ~~Rollback = revert DNS (RUVDS жив).~~ RUVDS DECOMM 2026-07-21 — rollback только образ-тегом.
## Rollback
- **DNS (предпочт, мгновенный):** revert reg.ru `on.snolla.com` A → `80.64.31.36` (RUVDS IIS жив, не тронут).
- **Образный (будущие bump'ы):** PUT стека 22 назад на предыдущий тег (rollback-теги в registry).
- ~~**DNS (предпочт, мгновенный):** revert reg.ru `on.snolla.com` A → `80.64.31.36` (RUVDS IIS жив, не тронут).~~ **НЕАКТУАЛЬНО с 2026-07-21** — [[../entities/ruvds-iis-host]] DECOMM (погашен у провайдера). RUVDS более не rollback-target.
- **Образный (рабочий):** PUT стека 22 назад на предыдущий тег (rollback-теги в registry). `473923e494db` = `:latest` — первый deploy, предыдущего тега нет; с этого дня ведём rollback-теги на каждый bump.
## Связанное
- on.snolla.com admin (`/admin`) остаётся на RUVDS .NET — catch-all IIS `snolla` (см. [[snolla-local-admin-and-on-snolla-migration-design]] §Task A).
> **Декоммишнен 2026-07-21.** Погашен у провайдера, забыт. Деньги экономим. Финальный offsite-снимок на kreknin верифицирован (см. § Decommission ниже). Rollback-target для всех мигрированных snolla-сайтов **более недоступен** — откат только образ-тегом в registry / DNS уже на VDS.
>
> Что ниже — историческая запись живого хоста (куплен 2026-05-23, DECOMM 2026-07-21, срок жизни ~2 месяца). Креды/доступ сохранены в `pass` ретроспективно, хост выключен.
Облачный Windows-VDS у [RUVDS](https://ruvds.com), DC Королёв. Куплен 2026-05-23 как destination для миграции IIS-хостинга с [[windows-recovery-host]] — closing SPOF домашней машины для prod CMS сайтов (snolla CMS multi-tenant). Это **отдельный VDS** от [[vds-kzntsv]] (Rusonyx Linux, инфра-стек): RUVDS = только IIS catch-all для CMS hostnames, Rusonyx VDS = gitea/verdaccio/registry/DB park.
## Decommission (2026-07-21)
Сессия 2026-07-21: аудит «что осталось на RUVDS перед отказом от провайдера».
**Живого публично не осталось** — всё snolla-тираж уехало на VDS:
- Публичный DNS → RUVDS (`80.64.31.36`): **только `rimiz.ru`/`www.rimiz.ru`** — и тот труп (HTTP 404 на RUVDS; сломан с 2026-05-19 iis-migration cleanup, не чинен, не мигрирован).
- Всё остальное → VDS `89.253.255.94`: `on.snolla.com`, `snolla.com` apex, `kupimknigi.spb.ru`, `tandemmebel.ru`/www, `labtools.ru`/www, `labtools.pro`/www, `emspb.ru`/www, `pilorama98.ru`/www, `maljarka.tandemmebel.ru`, `ics-artmaterials`/`pilorama98`/`sestech`/`artmone`/`rimiz``.snolla.com`. Smoke VDS 2026-07-21: 200 (кроме `snolla.com` apex — 404 TRAEFIK DEFAULT CERT, нет Host-правила; мёртв везде, отдельная мелочь, НЕ блокировала DECOMM).
- Локальный .NET-админ (catch-all IIS `snolla` на воркстейшне, [[snolla-local-admin-and-on-snolla-migration-design]] §Task A) от RUVDS НЕ зависит — читает `mssql.kzntsv.site` + `minio.kzntsv.site` (оба на vds-kzntsv).
- kreknin `/volume1/NetBackup/ruvds-iis/2026-07-21/` = **8.8G**, создан 05:37, полный (`sites/`+`iis-config/`+`iis-backup-webconfiguration/`+`certs/`+`ssh-config/`). 7 снимков в retention (2026-07-15…07-21).
- Динамика (.NET-админ не несёт) — MSSQL+MinIO на vds-kzntsv, бэкапятся отдельно (см. [[backup-inventory-2026-06]]). Сам .NET-админ = статичные бинарники MoreThenCms + S3 drop-in, восстанавливаемо из source + локальная копия на воркстейшне.
**Loose end — RESOLVED 2026-07-21:**`rimiz.ru`/`www.rimiz.ru` A-запись переправлена оператором на `89.253.255.94`. Авторит. NS ns1/ns2.reg.ru = `89.253.255.94` (verified); public resolvers ещё держат stale `80.64.31.36` по TTL 86400 — сбросится в сутки. На RUVDS больше НИ ОДИН публичный домен не смотрит.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.