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>
93 lines
8.5 KiB
Markdown
93 lines
8.5 KiB
Markdown
# 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 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?
|
||
- [x] ~~OS на VDS~~ → **Ubuntu 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 prune** — `npm 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).
|