After NAS incident 2026-05-18 — план вынести инфраструктурные сервисы (gitea/verdaccio/seafile/registry/hermes) с kreknin Synology на облачный VDS Rusonyx 160 SSD (2500 ₽/мес, 6 vCPU / 8GB RAM / 160GB SSD). Размеры с kreknin /volume1/docker/*: gitea 2.6G, verdaccio 8.5G (prune до ~3G), owncloud → replace with seafile ~30-40G, registry 99G (GC до ~5-15G), hermes 10G (Nous Research agent self-host, LLM external). Tier-decision history записана в Decisions log: 160 → 80+addon → 160 final (user choice: operational simplicity over 6k₽/год экономии). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.9 KiB
vds-kzntsv-bootstrap
Goal
Поднять облачный VDS vds.kzntsv.site (Rusonyx) и вынести туда ключевые инфраструктурные сервисы пользователя, чтобы не зависеть от собственного железа (мёртвая NAS показала single-point-of-failure). Цель — устранить риск повторения 2026-05-18 для инфраструктурного слоя (gitea/verdaccio/seafile/registry/hermes); production CMS (MoreThenCms) остаётся на windows-recovery-host и обсуждается отдельно в future-resilient-architecture-goals.
После миграции kreknin-synology остаётся как backup target, не как live host инфры.
Сервисы под миграцию (snapshot 2026-05-19)
Источник размеров — du -sh /volume1/docker/*/ на kreknin (см. Decisions log 2026-05-19).
| Сервис | Сейчас на kreknin | После cleanup / на VDS | План |
|---|---|---|---|
| gitea | /volume1/docker/gitea/ 2.6G |
~2.6G | lift-and-shift (compose + data tar) |
| verdaccio | /volume1/docker/personal/verdaccio/ 8.5G |
2–3G | prune old tarballs до миграции |
| owncloud | /volume1/docker/owncloud/ 187M + дубль 195M |
— | отказ, заменяется seafile |
| seafile | (новый) | 30–40G | green install на VDS |
| registry | /volume1/docker/infrastucture/registry/ 99G |
5–15G | registry garbage-collect ДО миграции (write op, требует read-only/stopped registry) |
| hermes | /volume1/docker/hermes/ 0 (пусто на kreknin) |
~10G (user estimate) | TBD — что это, где state |
Раскладка после cleanup: ~55–75G data + ~5G OS/docker → ~80–100G с headroom.
Тариф VDS (Rusonyx, https://www.rusonyx.ru/hosting/vps/#ssd)
Выбран (финал, user 2026-05-19): 160 SSD — 2500 ₽/мес (6 vCPU 2.6GHz, 8GB RAM, 160GB SSD, 200 Mbit, free IP).
Reasoning:
- 160GB headroom ~45% на старте после миграции (~60-70G data + 5G OS) — годен на 2-3 года без add-on operations.
- 8GB RAM overkill для baseline (~2.1G) но даёт реальный запас под burst и любые будущие сервисы.
- User выбрал «купи-и-забудь» вариант over 80 SSD+add-on; +1000 ₽/мес vs 80 SSD = +12k₽/год за operational simplicity.
Не выбраны:
- 40 SSD — 4GB RAM впритык, OOM risk под seafile+registry burst.
- 80 SSD — RAM ок, но 80GB диск требует add-on (цены непрозрачны без звонка в managers).
- 220+ SSD — overkill без local LLM-inference.
Open questions
- Hermes — Nous Research agent runtime (https://hermes-agent.nousresearch.com/). Открытые подвопросы:
- self-host их open-source / docker image, или client-wrapper к managed API?
- если self-host — какой репо/образ, какие порты, какие external deps (vector DB, LLM endpoint)?
- state где живёт (postgres / sqlite / files / vector store)?
- 10G — это weights/embeddings/vector store/document cache?
- влияет на RAM-выбор тарифа (если local LLM inference — 8GB мало, нужно 16+)
- Owncloud дубль
docker/owncloud/vsdocker/personal/owncloud/— какой live, нужны ли данные при переезде на seafile? - DNS-cut стратегия: A-record
vds.kzntsv.siteсразу, или сначала test через IP? - Backup VDS → kreknin: какой механизм? rsnapshot / restic / borg / Hyper Backup pull через SFTP?
- Какой OS на VDS: Ubuntu LTS 24.04 / Debian 12? Зависит от docker-engine vendoring привычки.
Key files
(пока нет; появятся по ходу — compose-файлы, ansible-плейбук если будет, sync scripts)
Связанные wiki-страницы (для контекста):
.wiki/entities/kreknin-synology.md— текущий host kreknin.wiki/concepts/future-resilient-architecture-goals.md— глобальные цели resilience.wiki/concepts/recovery-architecture-snapshot.md— текущая prod-инфра
Decisions log
- 2026-05-19 (final): User выбрал 160 SSD (2500 ₽/мес). Reasoning user'а — operational simplicity, не звонить в support за add-on ценой, есть запас на 2-3 года. +1000 ₽/мес vs 80 SSD приемлемо.
- 2026-05-19 (промежуточный заход, откатан): Рекомендовалось 80 SSD + disk add-on исходя из того что 8GB RAM избыточно после уточнения hermes-профиля. User решил что 500 ₽/мес экономии не стоят звонков в support и риска что add-on окажется дорогой.
- 2026-05-19 (первый заход): Изначально 160 SSD по budget-расчёту headroom; затем переоценено вниз после уточнения hermes; затем user вернул обратно к 160 SSD по user-preference.
- 2026-05-19: Owncloud → seafile. Reasoning: пользователь решил заменить (rationale пока не записан).
- 2026-05-19: Registry garbage-collect ДО миграции (на kreknin), чтобы не тащить 99G чтобы потом всё равно чистить.
- 2026-05-19: Verdaccio тоже prune ДО миграции, по аналогичной логике.
Next actions (по порядку)
- Уточнить hermes — что это, где его state.
- Решить owncloud дубль — нужны ли данные для миграции в seafile или green install.
- Registry GC на kreknin — stop писателей,
docker run --rm -v ...:/var/lib/registry registry:2 garbage-collect /etc/docker/registry/config.yml, measure delta. ⚠️ prod-changing, согласие от user. - Verdaccio prune —
npm cache clean+ удалить old tarballs из storage. (low risk, restorable из upstream npm) - Закупить тариф 160 SSD у Rusonyx, получить IP. (user-action)
- DNS — A
vds.kzntsv.site → <IP>в REGRU. - Bootstrap VDS — OS (Ubuntu 24.04?), docker, fail2ban, ssh hardening, firewall.
- Per-service migration (gitea → tarball+restore, verdaccio → tar storage, seafile → green install, registry → rsync, hermes → repo+state).
- Backup pipeline VDS → kreknin (или cloud — Backblaze B2 для off-site, см. future-resilient-architecture-goals).
- DNS cut к production, удаление сервисов с kreknin (с paranoid keep-on-kreknin-7days).