Goal

Перенести хостинг проекта ДВ-Хаб с Fornex на Zomro (Cloud VPS, Netherlands-3) без потери данных, без простоя дольше TTL DNS и с сохранением текущего стека (Node/PM2/Nginx/certbot). Старт — тариф Optimal AMD (2 vCPU / 5 GB RAM / 35 GB NVMe / 2 TB трафика, €11.95/мес). Фиксируется как отдельная задача, потому что переезд затрагивает инфраструктуру трёх доменов (re-search.wiki, www, meet), MiroTalk (UDP 40000-40100) и бэкапы.

Scope

  • Спека переезда: docs/architecture.md ADR-010 + docs/infra-runbook.md §9 (этапы 9.1–9.8), коммит f289e02 в dv-hub.
  • Деплой-скрипты provider-независимы: scripts/vps-env.sh — единая точка (хост, порт, ключ, SFU_ANNOUNCED_IP).
  • Подготовка стенда: TTL ↓ до 300 с, заказ сервера, SSH-ключ, ufw, fail2ban, Node/nvm/pm2, Nginx, certbot.
  • Данные и сервисы: актуальный data/dv-hub.db + dist/, MiroTalk с SFU_ANNOUNCED_IP нового хоста, SSL для трёх доменов.
  • Переключение: A-записи @, www, meet → новый IP; 48 часов параллельной работы; затем гашение Fornex и снятие бэкапа .env/БД.
  • Владелец (только он): оплата/заказ сервера, DNS-записи через owner-gate (dvhub.dns), секреты .env через owner-gate (dvhub.server-secret).

Definition of Done

  • Новый сервер Zomro поднят: SSH по ключу, ufw/fail2ban, Node/nvm/PM2, Nginx, certbot установлены.
  • Два сервиса отвечают: curl -Ik https://re-search.wiki/ и curl -Ik https://meet.re-search.wiki/; MiroTalk порт 3010 и UDP 40000-40100 открыты; SFU_ANNOUNCED_IP = новый IP.
  • БД перенесена и отвечает; бэкап-cron (DV-009) работает на новом сервере.
  • DNS переключён владельцем; 48 часов наблюдения без ошибок; старый Fornex погашен, бэкап с него снят.
  • В docs/infra-runbook.md §1 и scripts/vps-env.sh зафиксирован новый IP; старый IP выведен в legacy-блок или удалён после подтверждения.
  • Все команды §9 проверены на живом сервере (не только на бумаге).

Live status (обновлено 2026-11-06)

  • Сервер создан: Zomro NL-3, IP 188.137.182.91, Ubuntu 24.04, hostname dv-hub.host.
  • DNS переключён полностью: re-search.wiki, www, meet → новый IP.
  • HTTPS отвечает 200 на всех трёх доменах.
  • Идёт 48-часовое наблюдение (scripts/migration-watch.sh, cron */30).
  • Fornex пока не гасим: старые A-записи уже сняты, но хост остаётся резервом до чистого срока.

Заблокировано / требует владельца

  • Offsite-бэкап: нет Tailscale на приёмной машине; нужен выбор транспорта владельцем.
  • Бэкап старого Fornex: доступ к старому серверу утерян, снять .env/БД оттуда нельзя.
  • Гашение Fornex — ручное действие владельца в панели, только после чистых 48 часов и осознанного вердикта о старом бэкапе.

Notes

  • Вердикт владельца 2026-11-01 (basis: quoted): «официально переезжаем на зомро — мой вердикт».
  • Это не смена архитектуры: ADR-001 уточняется ADR-010 (провайдер меняется, стек, порты, сервисы остаются).
  • Откат: A-записи обратно на 89.127.198.185 владельцем; старый сервер гасится только после 48 чистой часов нового.
  • Остаётся на отделе разработки при заказе: вписать новый IP, прогнать §9.2–9.5, доложить о стенде до переключения DNS.

Сценарий (этапы)

  1. T-7: понизить TTL; заказать/оплатить Zomro; завести ключ; убедиться, что bash scripts/deploy-vps.sh работает на старом сервере.
  2. База: apt-обновления, хостнейм, таймзона, пользователь dv, права.
  3. Стек: certbot, nvm/Node LTS, PM2, Nginx, ffmpeg, ufw, fail2ban.
  4. Перенос: dist/ + data/dv-hub.db; MiroTalk; Nginx-конфиги; SSL.
  5. Проверка: curl --resolve, pm2 status, логи, ufw, DNS-стенд.
  6. Переключение: заморозка старого, финальный rsync, DNS-формы владельцу.
  7. Наблюдение и гашение: 48 часов; бэкап старого; затем отмена Fornex.