Все статьи
Закулисье

Переезд сервиса на Timeweb: история и одна подлая грабля

10 июня 2026 г. · 6 мин чтения

Polkka работает на self-hosted Supabase — это не «одна база», а 13 docker-контейнеров: Postgres, Auth, Storage, Realtime и компания. Переезд между серверами здесь — это три отдельные задачи: схема и данные БД, файлы хранилища, конфиги и секреты.

Зачем переезжал

  • Цена. Конфигурация в Яндекс Cloud выходила в ~3 200 ₽/мес, аналог в Timeweb — около 2 000 ₽.
  • Диск. На старом сервере упёрся в 91% заполнения, на новом взял 50 ГБ NVMe с запасом.

Подлая грабля: невидимые xattr

Файлы Supabase Storage (аватары пользователей) я перенёс обычным tar. Файлы на месте, права на месте — а хранилище отдаёт 500-ю с ошибкой ENODATA. Полдня на диагностику.

Причина: Supabase Storage хранит часть метаданных в расширенных атрибутах файлов (xattr), а обычный tar или scp их не переносит. Лечится флагом: tar --xattrs --xattrs-include="*" с обеих сторон.

Чек-лист, чтобы не наступить

  • БД — только через pg_dump (отдельно public и отдельно auth), не копировать каталог Postgres.
  • Storage — tar с флагом --xattrs, иначе ENODATA и 500.
  • .env переносить один-в-один: если поменять JWT-секрет, все сессии пользователей слетят.
  • DNS переключить, старый сервер подержать на время TTL, потом гасить.
Переезд занял один плотный день, аренда упала на ~1 200 ₽/мес, пользователи ничего не заметили. Самое дорогое по времени — не база, а невидимые атрибуты у файлов.

Собери свою страницу

Бесплатно, за минуту, без карты.

Начать