@wiki: alias pilonuxt -> pilorama98.ru in prose; keep literal container/stack/image id
Замена прозо-ссылок pilonuxt на pilorama98.ru в 7 файлах, чтоб при поиске по домену находились ops-записи. Буквальные docker-идентификаторы (контейнер/стек pilonuxt Id 16, image tag, task-slugs) оставлены с пометкой «контейнер pilonuxt». Co-Authored-By: Claude <noreply@anthropic.com> @
This commit is contained in:
@@ -41,7 +41,7 @@ Design + execution plan for the `OpeItcLoc03/admin` infrastructure project — e
|
||||
3. **Fault-tolerance roadmap** — placeholder `future-resilient-architecture-goals` expands here into a real plan (RTO/RPO, 3-2-1, multi-host, monitoring, runbooks)
|
||||
4. **Coordination of infra repos** — `vds-ops-mcp`, `synology-ops-mcp`, `agenda`, `projects-meta-mcp`, `projects-wiki`, `claude-skills` stay as their own repos; admin tracks tasks/decisions about them
|
||||
|
||||
**Out of scope:** CMS-domain (stays in `MoreThenCms`), business projects (books, pilonuxt, etc.), workshop boss-zone.
|
||||
**Out of scope:** CMS-domain (stays in `MoreThenCms`), business projects (books, pilorama98.ru, etc.), workshop boss-zone.
|
||||
|
||||
## Content inventory — what migrates from MoreThenCms
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ updated: 2026-07-05
|
||||
|
||||
Вынос `emspb.ru` (snolla-приложение, `@snollajs/snolla` 0.28.4, server-side Liquid) с [[../entities/ruvds-iis-host]]
|
||||
(catch-all CMS) в отдельный docker-контейнер на [[../entities/vds-kzntsv]] (89.253.255.94), за traefik.
|
||||
Модель — snolla-app (НЕ pilonuxt/Nuxt-contentApi): читает БД-контент MoreThenCms (`mssql.kzntsv.site`)
|
||||
Модель — snolla-app (НЕ pilorama98.ru/Nuxt-contentApi): читает БД-контент MoreThenCms (`mssql.kzntsv.site`)
|
||||
+ ассеты из MinIO (`minio.kzntsv.site`) через imgproxy. **Зеркало [[labtools-vds-deploy-runbook]]** — тот же паттерн.
|
||||
|
||||
## Артефакты
|
||||
|
||||
@@ -10,7 +10,7 @@ updated: 2026-07-05
|
||||
|
||||
Вынос `labtools.ru` (snolla-приложение, `@snollajs/snolla`, server-side Liquid) с [[../entities/ruvds-iis-host]]
|
||||
(catch-all CMS) в отдельный docker-контейнер на [[../entities/vds-kzntsv]] (89.253.255.94), за traefik.
|
||||
Модель — snolla-app (НЕ pilonuxt/Nuxt-contentApi): читает БД-контент MoreThenCms (`mssql.kzntsv.site`)
|
||||
Модель — snolla-app (НЕ pilorama98.ru/Nuxt-contentApi): читает БД-контент MoreThenCms (`mssql.kzntsv.site`)
|
||||
+ ассеты из MinIO (`minio.kzntsv.site`) через imgproxy.
|
||||
|
||||
## Артефакты
|
||||
|
||||
@@ -53,7 +53,7 @@ curl -ksS -X POST "$BASE/api/stacks/create/standalone/string?endpointId=1" -H "X
|
||||
Гнать с самого VDS (воркстейшн ловит LAN-DNS-перехват на `*.labtools.pro`; с VDS бой резолвится публично → RUVDS).
|
||||
- **Status-паритет:** nav (`/ /about /contacts`) + 3 каталог-секции (`/products/laboratory-presses`, `/products/press-forms`, `/products/milling-accessories`) + продукты (`plg-20`, `press-forms/ring`) — все 200/200.
|
||||
- **Редиректы (301 parity, target идентичен modulo host):** каталог#1 `/products/laboratory-ball-mills`→`…/laboratory-ball-mills/lshm-750`; `/Contacts`→lowercase `/contacts`; `/contacts/`→trailing `/contacts`.
|
||||
- **Sitemap — структура index (snolla) vs плоский (legacy), покрытие идентично:** бой отдаёт плоский `/sitemap.xml` с 25 URL; snolla отдаёт **sitemap-INDEX** из 7 дочерних (`sitemap-pages-1` 3, `sitemap-static-pages-1` 2, `sitemap-sections-1` 3, 4× `sitemap-catalog-<GUID>-products-1` = 1+2+2+12=17), все 200, **в сумме ровно 25 URL, набор == бой** (comm — ноль расхождений). `<loc>` host = `www.labtools.pro` (R3). **НЕ дефект** — index-структура штатна для snolla (как pilonuxt).
|
||||
- **Sitemap — структура index (snolla) vs плоский (legacy), покрытие идентично:** бой отдаёт плоский `/sitemap.xml` с 25 URL; snolla отдаёт **sitemap-INDEX** из 7 дочерних (`sitemap-pages-1` 3, `sitemap-static-pages-1` 2, `sitemap-sections-1` 3, 4× `sitemap-catalog-<GUID>-products-1` = 1+2+2+12=17), все 200, **в сумме ровно 25 URL, набор == бой** (comm — ноль расхождений). `<loc>` host = `www.labtools.pro` (R3). **НЕ дефект** — index-структура штатна для snolla (как у pilorama98.ru).
|
||||
- **theme-ассеты из MinIO md5-IDENTICAL бою** (проверены css/js/png/svg под `/themes/389ad745e3ee4f23be16df38440a0941/`): 7/7 MD5-OK, http 200.
|
||||
- ⚠️ **Cache-Control ОТСУТСТВУЕТ на theme-ассетах — КОРРЕКТНО** (labtools.pro `CachingOptions=[]` empty-config; движок 0.28.7 не ставит заголовок = бой). НЕ флагать как дефект (в отличие от emspb/labtools где был `max-age=86400`).
|
||||
- **Контент-страницы рендерят реальное тело** (12–22 KB), дельта vs бой +155…+222 B — стабильна, объясняется длиной staging-host в canonical/og (на 11 симв. длиннее www; на cutover уравняется в byte-parity).
|
||||
|
||||
@@ -99,7 +99,7 @@ curl -ksS -X POST "$PORTAINER_URL/api/stacks/create/standalone/string?endpointId
|
||||
|
||||
## Stack redeploy (existing stack, новый image tag)
|
||||
|
||||
Перекат уже-managed стека на новый тег образа (НЕ создание). Применялось для `pilonuxt` (stack Id 16) на `redeploy-pilonuxt-gsc-*` 2026-06-16/17. Образ собирается/пушится на workstation (≈400 МБ влезает; multi-GB → собирать на VDS, см. memory `registry-large-push-499-build-on-vds`), затем:
|
||||
Перекат уже-managed стека на новый тег образа (НЕ создание). Применялось для `pilorama98.ru` (контейнер/стек `pilonuxt`, Id 16) на `redeploy-pilonuxt-gsc-*` 2026-06-16/17. Образ собирается/пушится на workstation (≈400 МБ влезает; multi-GB → собирать на VDS, см. memory `registry-large-push-499-build-on-vds`), затем:
|
||||
|
||||
```powershell
|
||||
# 1. JWT
|
||||
|
||||
@@ -67,7 +67,7 @@ YARN_NPM_MINIMAL_AGE_GATE=0 yarn install
|
||||
|
||||
В фильтре — `configuration.get("npmMinimalAgeGate")` (глобальный config), не scope-aware lookup. Поэтому `npmMinimalAgeGate` под `npmScopes.@snolla.*` **игнорируется** — нельзя ослабить гейт только для доверенного приватного скоупа. Глобальный `0` снимает age-защиту и с **публичных** npmjs-пакетов, которые verdaccio проксирует через uplink. Это реальный security trade-off — в этом и смысл фичи.
|
||||
|
||||
**Рекомендация:** не коммитить `0` в общий канон бездумно. Для CI / чужих проектов — разовый `YARN_NPM_MINIMAL_AGE_GATE=0` под осознанный install сразу после своей публикации. Для тесного publish→consume dev-loop своих пакетов (напр. pilonuxt) глобальный `0` оправдан — реестр один доверенный, DX важнее. Финальный risk-call — за владельцем экосистемы.
|
||||
**Рекомендация:** не коммитить `0` в общий канон бездумно. Для CI / чужих проектов — разовый `YARN_NPM_MINIMAL_AGE_GATE=0` под осознанный install сразу после своей публикации. Для тесного publish→consume dev-loop своих пакетов (напр. pilorama98.ru) глобальный `0` оправдан — реестр один доверенный, DX важнее. Финальный risk-call — за владельцем экосистемы.
|
||||
|
||||
## Ecosystem heads-up
|
||||
|
||||
@@ -75,7 +75,7 @@ YARN_NPM_MINIMAL_AGE_GATE=0 yarn install
|
||||
|
||||
## Применено / источник
|
||||
|
||||
Диагностировано 2026-06-11 совместно с сессией pilonuxt (миграция pnpm→yarn 4.16). Первичная ошибочная гипотеза «карантин = серверный дефект verdaccio» опровергнута: пруф — строка `are quarantined` + `npmMinimalAgeGate` в `yarn.js` 4.16.0, и YN0016 воспроизводится на валидном vitya-токене, снимается только `npmMinimalAgeGate: 0`.
|
||||
Диагностировано 2026-06-11 совместно с сессией pilorama98.ru (контейнер `pilonuxt`; миграция pnpm→yarn 4.16). Первичная ошибочная гипотеза «карантин = серверный дефект verdaccio» опровергнута: пруф — строка `are quarantined` + `npmMinimalAgeGate` в `yarn.js` 4.16.0, и YN0016 воспроизводится на валидном vitya-токене, снимается только `npmMinimalAgeGate: 0`.
|
||||
|
||||
## Связанные
|
||||
|
||||
|
||||
Reference in New Issue
Block a user