Files
admin/vds-kzntsv-bootstrap.md
vitya 71c790063a chore(.tasks): vds-kzntsv-bootstrap - tariff ordered, OS resolved (Ubuntu 24.04 LTS)
Rusonyx 160 NVMe заказан 2026-05-19 (6 vCPU / 8GB RAM / 160GB NVMe / Ubuntu 24.04, без ispmanager/CMS/VPS Backup, 1 IPv4). Ждём выделение IP.

OS resolved: Ubuntu 24.04 LTS (поддержка до апреля 2029, docker official APT flow, mainstream community для docker workload). Debian 12 отвергнут — не даёт material выгоды при 8GB RAM.

160 SSD → 160 NVMe — Rusonyx апгрейд storage по той же цене, IOPS выше.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 16:45:01 +03:00

8.5 KiB
Raw Blame History

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 23G prune old tarballs до миграции
owncloud /volume1/docker/owncloud/ 187M + дубль 195M отказ, заменяется seafile
seafile (новый) 3040G green install на VDS
registry /volume1/docker/infrastucture/registry/ 99G 515G registry garbage-collect ДО миграции (write op, требует read-only/stopped registry)
hermes /volume1/docker/hermes/ 0 (пусто на kreknin) ~10G (user estimate) TBD — что это, где state

Раскладка после cleanup: ~5575G data + ~5G OS/docker → ~80100G с headroom.

Тариф VDS (Rusonyx, https://www.rusonyx.ru/hosting/vps/#ssd)

Заказан (финал, user 2026-05-19): 160 NVMe (Rusonyx переименовал прежний 160 SSD тариф в NVMe — апгрейд storage по той же цене, IOPS выше).

Конфигурация заказа:

  • 6 vCPU 2.6GHz
  • 8192 MiB RAM (8 GiB)
  • 163840 MiB disk (160 GiB) NVMe
  • Ubuntu Server 24.04
  • 1 IPv4 (free)
  • Лицензия / CMS / ispmanager — нет (docker-only, control-panel мусор не нужен)
  • VPS Backup от Rusonyx — 0 шт (свой backup через rsync/borg → kreknin или off-site cloud)
  • SSH root access — Вкл на старте (после bootstrap — отключить, sudo-user)

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/ vs docker/personal/owncloud/ — какой live, нужны ли данные при переезде на seafile?
  • DNS-cut стратегия: A-record vds.kzntsv.site сразу, или сначала test через IP?
  • Backup VDS → kreknin: какой механизм? rsnapshot / restic / borg / Hyper Backup pull через SFTP?
  • OS на VDSUbuntu 24.04 LTS (decision 2026-05-19): LTS до апреля 2029, docker official APT repo flow, mainstream community для docker-стека, гарантированно есть в Rusonyx templates.

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: OS на VDS = Ubuntu 24.04 LTS (Noble). Reasoning: LTS support до апреля 2029, docker official APT flow, mainstream community для docker-workload. Debian 12 отвергнут — не даёт material выгоды при 8GB RAM (idle разница ~100M), а docker-docs primary-target — Ubuntu LTS.
  • 2026-05-19 (заказан): Тариф 160 NVMe (Rusonyx переименовал 160 SSD → 160 NVMe, та же цена, апгрейд по IOPS). VPS Backup от Rusonyx — 0 шт (свой backup pipeline). SSH root — Вкл на bootstrap, потом отключить.
  • 2026-05-19 (final tier): 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 (по порядку)

  1. Уточнить hermes — что это, где его state.
  2. Решить owncloud дубль — нужны ли данные для миграции в seafile или green install.
  3. 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.
  4. Verdaccio prunenpm cache clean + удалить old tarballs из storage. (low risk, restorable из upstream npm)
  5. Закупить тариф у Rusonyxзаказан 160 NVMe, Ubuntu 24.04, 8GB/6vCPU/160GB, 1 IPv4 (2026-05-19, ожидание выделения IP).
  6. DNS — A vds.kzntsv.site → <IP> в REGRU.
  7. Bootstrap VDS (zero-day чек-лист): apt update/upgrade → создать sudo-user vitya + копировать SSH key → PermitRootLogin no + PasswordAuthentication no → ufw (22/80/443 only) → fail2ban → docker official APT repo (docker-ce + buildx + compose-plugin). Полная paste-ready команда в чате сессии.
  8. Per-service migration (gitea → tarball+restore, verdaccio → tar storage, seafile → green install, registry → rsync, hermes → repo+state).
  9. Backup pipeline VDS → kreknin (или cloud — Backblaze B2 для off-site, см. future-resilient-architecture-goals).
  10. DNS cut к production, удаление сервисов с kreknin (с paranoid keep-on-kreknin-7days).