5.7 KiB
5.7 KiB
Переезд сервера с Yandex Cloud на Timeweb VPS
- Дата: 2026-05-23
Контекст
rivendell-v2 жил на виртуальной машине в Yandex Cloud. Одновременно копились три
проблемы:
- Цена. ≈ 2 887 ₽/мес за конфигурацию, которую другие провайдеры дают дешевле и мощнее.
- Потолок RAM. 4 ГБ, ≈ 80 % заняты на штатной нагрузке. Любой всплеск (миграции БД, индексация Outline, restic) — конкуренция за память и риск OOM. Расти на этом тарифе дальше — только заметно дороже.
- Медленный диск. Чтобы сдержать цену в YC, использовался дешёвый HDD вместо SSD/NVMe — страдала отзывчивость (Gitea, Outline, тёплый старт контейнеров, restic check/forget).
Это личный сервер — допустимы небольшие простои.
Рассмотренные варианты
- Остаться в YC, поднять тариф (больше RAM/SSD на месте). Отвергнуто: YC уже дороже альтернатив, апгрейд поднимает цену непропорционально приросту — те же три проблемы решаются дороже, чем переездом.
- Свой / домашний сервер (железо под контролем, без ежемесячной аренды). Отвергнуто: дома нет надёжного аптайма 24/7 (питание, интернет-канал, железо), а сервисы должны быть всегда доступны.
- Переезд на Timeweb Cloud VPS — выбранный вариант.
Решение
Переносим на Timeweb Cloud VPS: ≈ 1 980 ₽/мес, 8 ГБ RAM (×2), 4 ядра (×2, гарантия CPU 100 % вместо 50 %), 80 ГБ NVMe вместо 120 ГБ HDD. Один переезд закрывает все три причины сразу.
Рамки решения:
- Переезжает только сам сервер с приложениями (compute). S3 (restic, бэкапы),
Container Registry, Postbox SMTP и DNS-зона
vakhrushev.meостаются в Yandex и используются с новой машины. - Стратегия — холодное переключение (cold cutover): погасить сервисы
на источнике, раскатать
ansible на новом сервере без запуска приложений (сохраняя uid/gid), перенести
данные
rsync'ом, запустить, переключить DNS. - Диск: фаза 1 — один 80 ГБ NVMe (всего 22 ГБ данных + 17 ГБ системных, влезает с запасом). «Холодный» второй диск под крупные данные — отдельная фаза 2, не на критическом пути.
- Источник не удаляется сразу после переключения: держим «холодным запасным» пару недель ради отката.
Детальный план — ../drafts/timeweb.md,
фактическое выполнение —
../drafts/timeweb-migration-log.md.
Последствия
+−907 ₽/мес (≈ −31 %) при вдвое большем RAM и CPU и NVMe-диске — закрыты все три исходные проблемы.+Запас по RAM убирает OOM-риск при всплесках нагрузки.+Диверсификация по облакам: раньше сервер и данные были в одном аккаунте Yandex Cloud, теперь сам сервер в Timeweb, а бэкапы (S3) — в Yandex. Если заблокируют или потеряем доступ к одному провайдеру, данные остаются доступны через другой.-Диск меньше (80 ГБ NVMe против 120 ГБ HDD), но сейчас занят примерно наполовину — запас есть, фаза 2 с холодным диском не срочная.-Сохраняется зависимость от Yandex Cloud (S3, Container Registry, Postbox SMTP, DNS) — переезд её не устраняет.-Timeweb активно блокирует Telegram (в отличие от YC) — интеграция отвалилась. Затронутыtranscriber,remembosи уведомления о бэкапах. Ожидаемо; уведомления остались через почту, второй канал рассматривается через Matrix.-Из-за тех же блокировок Timeweb перестали обновляться некоторые RSS-фиды вminiflux.-Для доступа кcr.yandexвне YC появился долгоживущий OAuth-токен Яндекса в vault (yc_oauth_token): при утечке он открывает доступ ко всему аккаунту Яндекса. Сузить можно IAM-ключом сервисного аккаунта — отдельной итерацией.- Инвентарь временно раздвоен (
production.yml+timeweb.yml); после стабилизации источник удаляется,timeweb.yml→production.yml.