20 KiB
Wiki Index
Catalog of all wiki pages. One line per page, organized by type. Updated on every ingest / new page.
Overview
- overview.md — project overview
Entities
- books-vds — Books VDS (89.253.255.133 — host4g.ru, client server hosting books app + shared mongo/minio/elasticsearch)
- dead-synology-diskstation — мёртвая Synology DiskStation (source NAS)
- kreknin-synology — Kreknin Synology (backup target + DDNS)
- nl-vds-3xui — NL VDS 3x-UI VLESS/Reality node (213.176.64.253) — Reality 443 сломан (PQ×intel), plain VLESS 32030 работает
- de-vds-3xui — DE VDS 3x-UI VLESS node (130.17.17.158, Fornex Germany) — plain VLESS 32030 security=none; 3x-ui 3.5.0 gotchas (CSRF на POST, client-tables, binary-only setting)
- openwrt-router — OpenWRT Router (192.168.1.1)
- ruvds-iis-host — RUVDS IIS Host (Win Server 2025 Core, 80.64.31.36) — CMS catch-all destination
- snolla-recovery-vm — Snolla Recovery VM (VirtualBox, savestate'нута 2026-05-21 после 36h soak)
- vds-kzntsv — VDS kzntsv (Rusonyx 160 NVMe cloud server)
- vdsina-outline-3xui — VDSina Amsterdam VPN (46.151.25.64) — Outline (основной, 11 keys, :443) + 3x-UI/Xray VLESS; основной боевой VPN семьи
- windows-recovery-host — Windows Recovery Host (рабочий PC пользователя)
Concepts
-
nvm-junction-ismain-gate-gotcha — ESM isMain-гейт молча не выполняется под junction'нутым npm-рутом (nvm/mise/volta); realpath-фикс; диагностика за 30 сек
-
nvm-windows-node-switch — смена версии Node на nvm-windows: junction, per-version глобалы, PATH-кэш, npm 11 allow-scripts; Node 22→24 evidence
-
sched-fnf-r8-verification-stand — стенд верификации F&F r8 (schedule-as-entity): путь, версии core 0.40.2/ui 0.2.0, карта репро-скриптов (миграции/движок/политики/API 52/UI 13), подтверждённый контракт (ceiling, retryCount, snapshot, pause AND, tz-hoist, PATCH-merge), находки №5 (U1 форма-tz, U2 вёрстка), как закрыть раунд
-
windows-docker-test-harness-gotchas — грабли Windows-верификации против docker: rmSync до DatabaseSync (EBUSY), vitest 10s vs ~11s docker-DDL, монотонность фейк-часов, изоляция DB на сценарий, висельники node-процессов
-
snolla-smtp-mail-delivery-2026-08 — SMTP-инцидент 12–14.08: 525 (Яндекс отключил протоколы) → 554 (холодный ящик, мульти-получатели) → 550 (from not owned); фиксы + монитор на VDS + рецепт деплоя
-
keenetic-rci-api — KeeneticOS RCI API: auth, чтение конфига, запись через CLI-parser, DNS-override против сломанного hairpin
-
admin-api-embed-pilonuxt — admin-api embedded in pilonuxt /admin/api, stack 25 retired (2026-08-05)
-
pilonuxt-restart-vs-redeploy-2026-08-16 — стек 16: рестарт (in-memory viewModel кэш content-api) vs пересборка (код); инцидент 500 на новинках (Content object vs array → core 0.26.7/admin-api 0.11.0); откат-цепочка образов 2026-08-16
-
namespace-consolidation-snolla — @snollajs → @snolla, 8 sites bumped, 17 packages (2026-08-04/05)
-
admin-infra-project — design + migration plan для OpeItcLoc03/admin (canonical)
-
backup-inventory-2026-06 — карта всех машин × что реально бэкапится (с доказательством); дыры по приоритету (kreknin SPOF, nl-vds x-ui.db, bookva-*, openwrt) — триггер: MSSQL 3-нед gap
-
bindmount-config-edit-preserve-mode — правка bind-mounted config'а через mktemp+mv роняет режим 644→600 → non-root контейнер (uid 1000) EACCES crash-loop; chmod --reference=backup. + гоча: bind-mount затеняет config образа целиком → класть полную секцию, не дельту. Инциденты books-job-scheduler + task-runner 2026-06-18
-
vds-kzntsv-ssh-access — SSH access audit на vds-kzntsv (infra VDS), retained keys + add/revoke processes (was misnamed
books-ssh-accessдо 2026-05-25 — content всегда был про vds-kzntsv) -
compose-bcrypt-escape-trap — Docker Compose ест
$в bcrypt hashes -
db-tls-self-signed-via-traefik-raw-tcp — DB TLS через traefik raw TCP с self-signed certs
-
docker-host-loopback-detect — Docker host-loopback detection — как доказать что host.docker.internal не петля
-
emspb-vds-deploy-runbook — emspb.ru snolla-app на VDS (стек 18): сборка/env/cutover 07-02 + 0.42.1 in-place bump 07-05 (образ
emspb:95a5c42) -
es-destructive-delete-incident-2026-05-26 — ES indices wiped on canonical — true root cause (2026-05-29): ransom-бот через открытый
0.0.0.0:9200мимо traefik, free-ES без auth; гипотеза operator-error опровергнута. Fix = убрать публикацию host-порта (Control #3) + restore. Exposure-audit: mongo/mariadb/minio тоже exposed (credentialed) -
future-resilient-architecture-goals — fault-tolerance roadmap placeholder (расширяется через
[resilience-roadmap-design]) -
hyper-backup-structure-and-recovery — Hyper Backup — структура репо и стратегия восстановления
-
iis-migration-2026-05-19-postmortem — post-mortem миграции CMS на нативный IIS, 2026-05-19
-
labtools-vds-deploy-runbook — labtools.ru snolla-app на VDS (стек 17): сборка/env/cutover 07-02 (Yandex DNS!) + 0.42.1 in-place bump 07-05 (образ
labtools:566d41c, order-фикс + sitemap починен) -
labtools.pro-vds-deploy-runbook — labtools.pro snolla-каталог на VDS (стек 19): сборка/env/cutover 07-02 + 0.42.1 in-place bump 07-05 (образ
labtools-pro:0610432, order-парити 3 секции) -
tandemmebel-vds-deploy-runbook — tandemmebel.ru snolla-блог-портфолио на VDS (стек 20): cutover 07-12 (DNS reg.ru, LE) + 0.42.1 in-place bump 07-12 (образ
tandemmebel:0cd9351, 184/184 parity, /articles 404 benign) -
maljarka-vds-deploy-runbook — maljarka.tandemmebel.ru snolla-лендинг на VDS (стек 23): restore 2026-07-31 (потерян при decomm RUVDS 2026-07-21, не был в v3 тираже). Клон on.snolla.com, siteId A2476738, layout.liquid byte-identical .NET-admin рендеру (43730B). Тираж 7/7
-
minio-imgproxy-on-vds — MinIO+imgproxy stack на VDS, миграция с upgrade 2020→2025 + DNS swap pending
-
minio-split-cutover-runbook — разнос MinIO-контента: Track A books-vds 2020→2025 (shared+bookva) + Track B CMS-медиа → vds 2025. Progress: B1 миррор✅ B2 DNS-flip✅ B3 on-snolla v2-пилот✅ LIVE, B3v3 (snolla 0.43.2 опубликована, live verify ЗЕЛЁНЫЙ, resolutions optional) ⚡READY, B4/B5/Track A TODO. v3 — конечная цель.
-
morethencms-null-settingsdata-https-502 — MoreThenCms тенант с
Sites.SettingsData=NULL→ 502 только на HTTPS (нетhttpSecure→ KeyNotFound); fix = UPDATE + recycle. maljarka 2026-06-08 -
snolla-admin-appdata-acl-500-after-scp-migration — админский delete/upload ассета → 500: app pool имел на
App_Dataтолько RX после scp-миграции →File.DeleteUnauthorizedAccessException. Fix = icacls Modify. + split-brain: админка пишет Local, боевой app читает MinIO -
snolla-local-admin-and-on-snolla-migration-design — design: Task A восстановить локальный .NET-админ (catch-all IIS
snolla, hosts-override, MinIO drop-in) + Task B on.snolla.com → VDS как Node snolla-app -
snolla-local-admin-https-binding — реализация 2026-07-29: HTTPS на локальном IIS-админе
snolla:443 (self-signed wildcard*.snolla.comв Trusted Root, без traefik) + pilorama98.snolla.com в hosts; рабочий entry-point/admin/account/login(голый/admin→ canonical на public-домен, предсуществующее поведение CMS) -
mssql-container-data-restore — MSSQL контейнер с восстановленными production data — паттерн
-
mssql-on-vds — MSSQL Express 2022 Linux на VDS — миграция + login orphan fix + traefik TCP gotchas
-
ocis-on-vds-deploy-recipe — oCIS на VDS — deploy recipe + non-obvious gotchas (UID 1001 vs 1000, basic auth, LibreGraph user-create)
-
portainer-2.21-admin-password-regression — Portainer 2.21
--admin-passwordregression + min 12-char policy -
portainer-stack-management-books-vds — Portainer-managed stacks на books VDS — pattern application + migration log 2026-05-25
-
portainer-stack-management-vds — Portainer-managed stacks на VDS — canonical pattern + migration script + stack-redeploy recipe (новый тег) + gotchas (вкл. PS 5.1 ISO-8859-1 коррапт кириллицы при API round-trip)
-
snolla-live-prod-inplace-image-bump — переиспользуемый рецепт обновления образа на ЖИВОМ snolla-стеке VDS in-place (build→throwaway-staging-acceptance С VDS→env-preserving Portainer PUT→live-smoke); вкл.
put-stack.js; отработан на тираже 0.42.1 (4 сайта: labtools/emspb/labtools.pro 2026-07-05 + tandemmebel 2026-07-12) -
stostayer-web-deploy-runbook — деплой легаси web (
www.stostayer.ru) на прод клиента: build→registry→Portainer-стек 16 через container-IP API с хоста; деплой 0.3.23 (2026-08-13): calculator-баннер + стек-фикс; гочи — один push без retry (VPN-IP банится хостером), offline-build не всегда проходит (linux-бинари esbuild/rollup не в cache → временный VERDACCIO_TOKEN ARG/ENV), Portainer API base=http://IP:9000 (порт обязателен) -
stostayer-admin-minio-config — локальная .NET-админка stostayer (:8090) на stostayer MinIO: креды НЕ в pass (в stostayer.new config), endpoint
minio-api.stostayer.ru(minio.stostayer.ru — не API-порт), regionus-west-1(не local); fix 2026-07-22 — 3 замены в Web.config, админка=прод единое хранилище -
stostayer-markdown-render-404-incident-2026-07 — постмортем 2026-07-24: 404/500 на body_repair_service = двойной корень (snolla
markdown();без присвоения + exact-pin-staleness — content-apiworkspace:*запёк@snollajs/snolla: 0.7.4, фиксовая 0.7.7 легла top-level, content-api юзал nested баговую). Фикс snolla 0.7.7/core 0.26.1 + content-api 0.8.2^0.7.7; деплой 0.3.22 через pscp+load (без :443 push). Pre-build чек yarn.lock на single-snolla ловит класс. Cleanupworkspace-caret-interpackage-deps(vitya scope) -
proxy-debugging-test-the-real-client — анти-паттерн: свои curl/standalone-тесты «работают», а боевой клиент пользователя нет; источник истины — реальный клиент
-
reality-pq-mldsa65-dest-incompatibility — REALITY+ML-DSA-65 (PQ) не работает с не-PQ dest (Akamai/intel шлёт HRR); fix = PQ-совместимый dest или выключить PQ; caveat: снятие PQ ≠ рабочий Reality у GUI-клиентов
-
recovery-architecture-snapshot — текущая recovery architecture (2026-05-19/21, attempt 2)
-
registry-gc-mount-and-modify-flag — Docker Registry GC mount layout +
-mflag -
registry-kzntsv-auth-model — registry.kzntsv.site = standalone registry:2 + htpasswd Basic (бинарный доступ, НЕ Gitea-packages, нет per-repo ACL/robot-токенов); как заводить htpasswd-юзеров (hot-reload), GC через v2 DELETE; юзеры vitya + books-ci
-
registry-oci-image-index-gc — books-* образы в registry = OCI image-index (buildx multi-manifest): top-level
.config=null, дата.createdживёт в платформенном sub-manifest; наивный GC по top-level дате → null у всех → no-op (keepLastN не применяется). DELETE по index-digest, дата из sub. + dangling-индексы: 16/19 тегов books-web — тег жив, sub-manifestMANIFEST_UNKNOWN(вычищен прежним host-GC); date-GC защищает их как null-dated → не чистит, хотя они и есть мусор. Зафиксировано на books registryGc dryRun 2026-06-18 -
rusonyx-vps-onboarding-quirks — Rusonyx VPS onboarding quirks (Astra Облако / myvm.rusonyx.ru)
-
traefik-acme-json-to-iis-cert-import — Экспорт LE certs из traefik acme.json в IIS (PFX + SNI bindings)
-
traefik-file-watch-wsl2-broken — Traefik file-watch broken под Docker Desktop Windows (WSL2 9p mount)
-
traefik-on-windows-docker-desktop — Traefik на Windows Docker Desktop — нюансы
-
traefik-tcp-passthrough-vs-starttls — Traefik TCP passthrough vs STARTTLS-protocols
-
vbox-windows-stability-tuning — VirtualBox + Windows-гость — нюансы стабильности cross-hypervisor миграции
-
vds-kzntsv-dhcp-outage-2026-05-28 — DHCP outage 2026-05-28 на vds-kzntsv — диагностика + recovery runbook (link UP но без IPv4 → статика + тикет хостеру)
-
verdaccio-prune-semantics — Verdaccio prune semantics — proxied vs locally-published
-
verdaccio-restore-packument-desync — disaster-restore: тарболл на диске + древний packument → EEXISTS 409; fix = снять коллизирующий .tgz, не rm -rf каталог
-
verdaccio-token-lifecycle — restart trap (ephemeral secret) + max_users:-1 pnpm 409 + JWT fix + yarn clients
-
yarn-npm-minimal-age-gate — Yarn ≥4.16 client-side age-gate (YN0016 «quarantined») на версиях <24ч; глобальный, не per-scope; fix npmMinimalAgeGate:0
-
winacme-iis-owin-catchall-http01 — win-acme HTTP-01 авто-renewal LE на IIS под OWIN-catch-all CMS — challenge в отдельном No-Managed-Code приложении + патч шаблона; заменяет ручной PFX-импорт
-
wd40efax-smr-cascade — WD40EFAX SMR Cascade — root cause NAS failure 2026-05-18
-
windows-server-2025-core-bootstrap — Win Server 2025 Core (RUVDS) — bootstrap для IIS-хоста: default-blockers + transfer-методов матрица
-
mcp-init-resilience — mcp-init-resilience
Packages
Sources
- iis-host-migration-2026-05-19 — IIS Host Migration Session 2026-05-19 chronology
- iis-migration-to-ruvds-2026-05-23 — IIS migration to RUVDS — session 2026-05-23/24 (SSH/scp pivot, 25 SNI bindings, partial DNS cutover)
- nas-recovery-session-2026-05-18 — NAS Recovery Session 2026-05-18/19 chronology
- books-vds-backup-daily-kreknin-2026-05-25 — books VDS daily backup → kreknin pipeline standup 2026-05-25 (ES file-snapshot repo + DB dumps + curl SMTP)
- ruvds-backup-daily-kreknin-2026-05-24 — RUVDS daily backup → kreknin pipeline standup 2026-05-24 (rclone+SFTP, SYSTEM task)
- nl-vds-3xui-setup-2026-06-05 — NL VDS 3x-UI setup+troubleshooting session; итог: у реальных клиентов из РФ работает только plain VLESS 32030 (Reality/MTProto/SOCKS не поднялись)
- de-vds-3xui-setup-2026-07-14 — DE VDS (Fornex Germany) setup session; 3x-ui 3.5.0 gotchas: CSRF на panel POST, прямой DB-insert не рендерит (client-tables), wrapper x-ui setting не применяет; plain VLESS 32030 confirmed на real RF-клиенте
- vdsina-outline-3xui-inventory-2026-06-24 — VDSina Amsterdam (46.151.25.64) inventory: Outline 11 keys + 3x-UI VLESS, секреты в pass vdsina-outline
- vds-kzntsv-bootstrap-2026-05-20 — VDS bootstrap session 2026-05-20 chronology
- vds-kzntsv-incident-2026-05-28 — DHCP outage incident session 2026-05-28 — chronology + ticket text