Перейти к содержимому

Свой Supabase: как я перенёс прод на VPS

Константин Потапов
9 мин

Счёт за облако перевалил за $200. На салфетке вышло $40 за VPS и почти две тысячи в год разницы. Чеклист переноса без героизма.

Счёт за облако уверенно перевалил за $200 в месяц. Проект растёт, база пухнет, вместе с ней цифры в выписке. Появилась мысль собрать это у себя.

На салфетке:

  • Облако: ~$200/мес за базу, storage, трафик и бэкапы
  • VPS (8 GB RAM, 4 vCPU, 200 GB SSD): ~$40/мес плюс ~$2 за холодное хранилище
  • Разница: ≈$158/мес, около $1896/год

Для команд из РФ добавляется доступность. Когда прод падает не из-за багов, а из-за санкций, управление лучше держать у себя.

Self-host здесь не романтика железа. Это unit-economics: платишь временем за предсказуемый счёт.

Что именно поднимаешь

Supabase это не один контейнер. PostgreSQL, PostgREST, GoTrue, Realtime, Storage, Kong, Studio. Всё в Docker, всё в одной сети.

Снаружи торчат шлюз и админка. Postgres наружу не выставляем никогда. На этом держится безопасность.

Почему не Nhost

Если живёте в GraphQL и Hasura, Nhost ближе. Я взял Supabase за REST, документацию и связку с Next.js. Менять потом можно, но это почти переписывание фронта.

Как переносил

Никаких мемуаров. Рабочий список.

  1. Подготовил VPS и диск под бэкапы. Доступы, мониторинг, алерты.
  2. Развернул официальный Docker-стек. Проверил, что наружу только шлюз и Studio.
  3. Создал базу, включил расширения по задаче проекта: pgvector, pg_net.
  4. Перенёс схему и данные. Сначала dry-run, потом ночной прогон.
  5. RLS, ключи, секреты. Проверил дважды.
  6. Storage и CDN. Заголовки и права.
  7. Ключи во фронтовом SDK, регрессия, логи.
  8. DNS и заранее собранный rollback.

Бэкапы не место для героизма. Ежедневные снапшоты базы, раз в неделю в холодное хранилище. Восстановление надо делать, а не «верить».

Окупился за один-два выходных внедрения. Взамен облачного SLA появляется своя зона: свет, аптайм, резерв. UPS, бэкап вне этой машины, учебный restore.

При росте нагрузки часть можно вернуть в облако. Гибрид нормален.

Обо что споткнулся

Лимит трафика у VPS. Перерасход считают отдельно, лучше узнать цену заранее.

Лишний allow в Storage и RLS стоит дороже, чем кажется.

Лимит соединений Postgres. «На глаз» не хватает в первый же пик.

Когда всё своё, внезапно нужны нормальные дашборды. «Потом посмотрим» не работает.

Ключи от прода теперь в моём кармане, не у доброго дяди. Спокойнее. Ответственнее тоже.

См. также