docs(.wiki,.tasks): vds-kzntsv-bootstrap done — 3 phases shipped
VDS Rusonyx 160 NVMe (89.253.255.94 / vds.kzntsv.site) активирован 2026-05-20. 3 фазы за ~6 часов: - Phase 1: harden + docker 29.5.1 + traefik v2.11 + portainer 2.21.5 - Phase 2: shared DB park (postgres 16 / mariadb 11.4 / mongo 7 / redis 7) via traefik raw TCP forward + self-signed TLS - Phase 3: миграция gitea (132 repos), verdaccio (2063 pkgs), registry fresh install (user accepted loss old images) + Joxit GUI Ingest 1 source + 1 entity (vds-kzntsv) + 6 concepts (traefik-tcp- passthrough-vs-starttls / portainer-2.21-admin-password-regression / db-tls-self-signed-via-traefik-raw-tcp / rusonyx-vps-onboarding-quirks / registry-gc-mount-and-modify-flag / compose-bcrypt-escape-trap). 3 follow-up ⚪ tasks: vds-gc-cron, vds-backup-rsync-kreknin, vds-ntfy-push. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
39
STATUS.md
39
STATUS.md
@@ -1,5 +1,5 @@
|
||||
# Task Board
|
||||
_Updated: 2026-05-19_
|
||||
_Updated: 2026-05-20_
|
||||
|
||||
## 🟢 [cms-admin-assets-root-folders-seed] — seed 15 missing root AssetsFolder rows в DB, admin assets открывается
|
||||
**Status:** done (2026-05-19 вечер). Browser-verified user'ом на pilorama98/emspb. Detail в [[cms-admin-assets-root-folder-seed]].
|
||||
@@ -24,17 +24,17 @@ _Updated: 2026-05-19_
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [vds-kzntsv-bootstrap] — поднять облачный VDS под gitea/verdaccio/seafile/registry/hermes
|
||||
**Status:** ready (тариф **160 NVMe Rusonyx** заказан 2026-05-19; ждём выделение IP; OS Ubuntu 24.04)
|
||||
**Where I stopped:** заказ на Rusonyx размещён (6 vCPU / 8GB RAM / 160GB NVMe / Ubuntu 24.04, без ispmanager/Backup/CMS). zero-day bootstrap чек-лист готов. Detailed план в [vds-kzntsv-bootstrap.md](vds-kzntsv-bootstrap.md).
|
||||
**Open questions:** owncloud дубль (`docker/owncloud/` vs `docker/personal/owncloud/`) — какой live для миграции в seafile; DNS-cut стратегия.
|
||||
**Next action:** (1) ждём выделение IP от Rusonyx → DNS A `vds.kzntsv.site` в REGRU; (2) zero-day bootstrap (sudo-user + ssh hardening + ufw + fail2ban + docker); (3) параллельно — registry GC + verdaccio prune **на kreknin** до миграции (write-op, требует согласия).
|
||||
## 🟢 [vds-kzntsv-bootstrap] — VDS поднят, gitea/verdaccio/registry мигрированы (3/3 phases done 2026-05-20)
|
||||
**Status:** done (2026-05-20 вечер — все 3 заявленные фазы закрыты)
|
||||
**Where I stopped:** Phase 1 + Phase 2 завершены ✅. VDS `89.253.255.94 / vds.kzntsv.site` Ubuntu 24.04 upgraded через VNC. sudo vitya (NOPASSWD) + ssh-key + hardened sshd (key-only) + ufw 22/80/443 + DB-порты + fail2ban + docker 29.5.1 + buildx + compose. Traefik v2.11 на `traefik.vds.kzntsv.site` (basicAuth vitya:Pryakhin9). Portainer CE 2.21.5 на `portainer.vds.kzntsv.site` — **админ-пароль был принудительно изменён на `Pryakhin9-VDS-2026` (18 chars)** из-за hard min-12-char policy в Portainer 2.21+ (regression от 2.20). API key получен и сохранён в `vds-kzntsv.env`. 4 DB-стека (Postgres 16, MariaDB 11.4, Mongo 7, Redis 7) подняты с self-signed TLS, доступны снаружи через traefik raw-TCP passthrough на `<db>.vds.kzntsv.site:<port>` (HostSNI(*) — traefik tls.passthrough+SNI не работает с STARTTLS-протоколами PG/MariaDB; rawTCP forward, DBs терминируют TLS сами). Все DB passwords (PG/Maria/Mongo/Redis) — strong random hex16, сохранены в `vds-kzntsv.env`.
|
||||
**Open questions:** LE certs для DBs (сейчас self-signed → клиент verify-skip; permanent fix позже через lego sidecar extract из traefik acme.json).
|
||||
**Next action:** Phase 3 миграция с kreknin **ВСЯ DONE ✅**. 3.1 gitea (132 repos, 4 users, v1.25.5 на git.kzntsv.site). 3.2 verdaccio (8.6G storage, 2063 packages, secret 32 chars). 3.3 registry — **отказались от миграции** старых 35G images (user: «новых наделать могу»), fresh install на registry.kzntsv.site + Joxit UI на registry-ui.vds.kzntsv.site (DELETE_IMAGES=true для GUI cleanup, REGISTRY_STORAGE_DELETE_ENABLED для API delete). Auth vitya:Pryakhin9 (см. vds-kzntsv.env). Follow-up tasks: vds-gc-cron, vds-backup-rsync-kreknin, vds-ntfy-push.
|
||||
**Branch:** master
|
||||
|
||||
---
|
||||
|
||||
## 🔴 [iis-on-host-migration] — attempt 2: 11 cms LIVE на host IIS:8089, 24h soak в процессе
|
||||
**Status:** active (2026-05-19 вечер — 11 main cms routes мигрированы, smoke clean, 2 phone-tests passed; 2 stayer routes ещё на VM до отдельного решения; VM running parallel — НЕ savestate'ить).
|
||||
**Status:** active (вернулась к фокусу после закрытия vds-kzntsv-bootstrap; soak продолжается, нужна проверка после 24h+ uptime)
|
||||
**Done:** bak-серия `.bak-pre-attempt2-2026-05-19` для 13 yml; IIS binding `snolla *:8089` + Stop/Start Website; loop-detect через `host.docker.internal:8089` ≠ NAT loop (resolves to 192.168.65.254 host gateway) ✅; 11 cms yml (snolla, rimiz, labtools, labtoolspro, pilorama98, tandemmebel, emspb, kupimknigi, maljarka, sestech, isc-artmaterials) patched `:18080 → :8089`; host-side smoke 20 hostnames → все `Server: Microsoft-IIS/10.0` ✅; 📱 phone-tests (mobile internet): `emspb.ru` ✅, `labtools.ru` ✅; traefik logs clean (only known docker.sock noise); pre-existing CMS issues подтверждены и НЕ regression: `rimiz.ru/ics-artmaterials.com 404` (CMS-routing); `snolla.com` 301 → `on.snolla.com` (canonical default subdomain), `on/pilorama98/labtools/emspb.snolla.com` 200 OK.
|
||||
**Done (stayer):** stayer routes user'ом подтверждены «внутренние, наружу не светим» → `stostayer.yml → stostayer.yml.disabled`, `oldstostayer.yml → oldstostayer.yml.disabled`; `docker restart traefik`; verify: `stostayer.snolla.com`/`old.stostayer.ru` → 404 traefik no-route ✅; host IIS sites `stostayer :8090`/`stostayer.old :8091` остаются live для прямого/локального доступа (CMS отвечает контент, headers stripped через WinHTTP proxy на curl, но изнутри traefik / production-path headers Microsoft-IIS/ASP.NET корректные).
|
||||
**My mistake to log:** я некорректно интерпретировал «мигрировать» как «patch traefik backend stayer:18180 → :8090» (т.е. пускать через traefik наружу). User имел в виду «host IIS уже есть, traefik routes должны быть DISABLED». Сделал patch backend → user интервент-stop → revert + rename `.disabled`. Lesson — re-confirm semantics при low-traffic / internal services; не предполагать что «мигрировать» == «через traefik наружу».
|
||||
@@ -45,6 +45,31 @@ _Updated: 2026-05-19_
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [vds-gc-cron] — cron GC для verdaccio и registry на VDS
|
||||
**Status:** ready (заведена 2026-05-20). Детали + sketch implementation в [vds-gc-cron.md](vds-gc-cron.md).
|
||||
**Where I stopped:** task создана как follow-up к [[vds-kzntsv-bootstrap]] Phase 3 — после стабилизации миграции нужно автоматизировать periodic GC чтобы registry не разрастался снова до 99G, и verdaccio storage не пух от старых версий.
|
||||
**Next action:** дождаться завершения vds-kzntsv-bootstrap Phase 3, потом написать cron + GC-скрипты + проверить.
|
||||
**Branch:** master
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [vds-backup-rsync-kreknin] — ежедневный rsync VDS→kreknin в 05:00 MSK + email-нотификация
|
||||
**Status:** ready (заведена 2026-05-20). Детали + sketch implementation в [vds-backup-rsync-kreknin.md](vds-backup-rsync-kreknin.md).
|
||||
**Where I stopped:** task создана для backup pipeline VDS → kreknin (closing SPOF gap из [[future-resilient-architecture-goals]]). SMTP creds для noreply@snolla.com на Yandex сохранены в `~/projects/.common/secrets/noreply-snolla-smtp.env`. Рекомендованный recipient `vitya.kuznetsov@gmail.com`. Дублирующий канал — [[vds-ntfy-push]] (push на телефон).
|
||||
**Next action:** msmtp setup на VDS + rsync script с DB dumps + --link-dest incremental + cron 05:00 + email на vitya.kuznetsov@gmail.com + ntfy publish. Retention 7d/4w/6m.
|
||||
**Branch:** master
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [vds-ntfy-push] — self-hosted ntfy.vds.kzntsv.site для push-нотификаций на телефон
|
||||
**Status:** ready (заведена 2026-05-20). Детали + sketch implementation в [vds-ntfy-push.md](vds-ntfy-push.md).
|
||||
**Where I stopped:** task создана как канал push-уведомлений с VDS на телефон user'а. Будет интегрирована с [[vds-backup-rsync-kreknin]] (backup status), monitoring (cert expiry, disk fill, container crashes), и любыми ops-скриптами.
|
||||
**Open questions:** ~~iOS vs Android~~ → Android (resolved 2026-05-20, pure self-host OK). Auth model (per-topic ACL recommend); список топиков.
|
||||
**Next action:** уточнить платформу телефона у user'а → ntfy compose на VDS → ntfy.vds.kzntsv.site через traefik → docker exec ntfy user add admin → integration в backup-script.
|
||||
**Branch:** master
|
||||
|
||||
---
|
||||
|
||||
## 🟢 [nas-recovery] — клиентские сайты восстановлены, работают из публичного интернета
|
||||
**Status:** done (2026-05-19 ~10:00 MSK — 15 часов работы)
|
||||
**Final state:** OpenWRT NAT → traefik 2.6.6 (host:8000/4443) → VirtualBox VM snolla-recovery (IIS + CMS) + docker-стек на хосте (MSSQL/MinIO/ES/imgproxy/nginx). 13 client routes, 40 LE certs валидны. Проверено: пользовательский клиент из публичного интернета открывает snolla.com, pilorama98.ru, labtools.ru/pro, tandemmebel.ru, emspb.ru.
|
||||
|
||||
Reference in New Issue
Block a user