Перенос приложения Next.js с Vercel на свой сервер
Чтобы перенести приложение Next.js с Vercel на свой сервер, подключите тот же репозиторий GitHub к панели Coolify на сервере, скопируйте переменные окружения, замените части, привязанные к Vercel (cron, аналитику, хранилище), проверьте на временном адресе, а A-запись домена переключите в последнюю очередь. Документация Next.js говорит, что на сервере Node.js работают все возможности. Развёртывание на Vercel остаётся в работе до переключения, так что путь назад у вас есть.
По сути, это выбор модели оплаты. Документация Vercel объясняет, что инфраструктура оплачивается по объёму переданных данных, числу запросов и длительности вычислений. Сервер стоит фиксированную месячную плату за выбранные вами RAM, CPU и диск. В нашем сравнении показано, как посчитать на своих цифрах.
Что меняется при переезде?
| Параметр | Vercel | Ваш сервер |
|---|---|---|
| Оплата | По использованию | Фиксированная в месяц, безлимитный трафик, ежедневные бэкапы входят в цену |
| Расположение | Глобальная сеть доставки | Один сервер, в Стамбуле |
| Скачки трафика | Платформа их поглощает, а счёт растёт | Когда мощность кончается, сайт замедляется, и вы увеличиваете сервер |
| Сборки | На машинах платформы | На том же сервере, поэтому сборки определяют нужный объём памяти |
| Обслуживание | Задача платформы | Обновления ОС и пакетов и мониторинг — на вас, как и доступ root |
| Предпросмотры | Автоматически для веток | Включаются отдельно в Coolify |
| Сетевая безопасность | Vercel Firewall | Брандмауэром сервера управляете вы |
Скажем прямо: сервер один, всемирной граничной доставки нет, а обслуживание становится вашим. Кому это не помешает? Если ваши посетители в основном в Турции и соседних странах, одной площадки достаточно. Если все ваши страницы читают из одной базы данных, ответы ждут эту базу, где бы ни работал код. Панелям, внутренним инструментам и продуктам с предсказуемым трафиком редко нужно автоматическое масштабирование. Если ваша аудитория разбросана по миру, трафик резко скачет или вы не хотите заниматься обслуживанием, Vercel может подойти лучше.
Подготовьте новый сервер
- Закажите на странице Next.js VPS. Сервер поставляется с Coolify.
- Подключите репозиторий. Короткий путь: откройте проект в Claude Code или Cursor, вставьте строку Вставьте в свой ИИ-инструмент со вкладки Обзор, и инструмент развернёт проект. Можно и сделать это вручную.
- Зафиксируйте версию Node через
engines.nodeвpackage.json. - Выгрузите свои переменные:
vercel env pull .env.move --environment=production. Секретные значения нельзя прочитать обратно, поэтому CLI записывает заглушки, а значения вы берёте из их источника. Не кладите файл в репозиторий и введите его содержимое в Environment Variables в Coolify, оставив значенияNEXT_PUBLIC_доступными при сборке. - Поищите код, привязанный к Vercel:
grep -n "@vercel/" package.jsonиgrep -rnE "VERCEL_|x-vercel-" app src. Системных переменных вродеVERCEL_URLна вашем сервере нет, так что используйте свои.
Возможности Next.js и части, привязанные к Vercel
| Компонент | На вашем сервере | Что сделать |
|---|---|---|
| Оптимизация изображений | Работает с next start, настройка не нужна | Использует CPU и память вашего сервера |
| ISR и кэширование | Работают сами на одном экземпляре с локальным диском | Несколько экземпляров должны делить кэш, и он заполняется заново после каждого развёртывания |
| Middleware (Proxy в Next.js 16) | Работает с next start, настройка не нужна | Запросы теперь обрабатываются в Стамбуле |
| Задания cron | vercel.json не читается | Вызывайте тот же путь из Scheduled Tasks в Coolify: curl -fsS -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cron. Cron в Vercel работает по UTC, а Coolify использует часовой пояс сервера |
| Перенаправления и заголовки | vercel.json не читается | Перенесите их в next.config |
| Web Analytics, Speed Insights | Опираются на маршруты, которые Vercel добавляет к развёртыванию | Уберите компоненты и используйте инструмент вроде Umami |
| AI Gateway | Вызывается с любого сервера | Задайте AI_GATEWAY_API_KEY |
Что с Postgres, KV и Blob?
- Postgres и KV: документация Vercel говорит, что эти продукты закрыты, а старые базы данных переехали к поставщикам из Marketplace, так что ваши данные лежат у отдельного поставщика за переменной окружения. Перенесите её, и приложение обратится к той же базе. Если оплата идёт через ваш аккаунт Vercel, заберите данные до его закрытия. Удалённая база данных добавляет это расстояние к каждому запросу.
- Перенос на свой сервер: создайте PostgreSQL в Coolify, экспортируйте командой
pg_dump -Fc "OLD-DATABASE-URL" --no-owner --no-privileges -f backup.dumpи загрузите архив через Import backup на странице Backups базы данных. Если Redis используется только как кэш, обычно можно начать с пустого. - Blob:
BLOB_READ_WRITE_TOKENработает и с другого хоста, поэтому его можно не трогать. Чтобы перенести файлы на свой сервер, измените код и смонтируйте папку через Persistent Storage.
Перенос домена без простоя
- Проверьте на адресе HTTPS, который выдаёт Coolify: вход, формы, платежи, изображения и Execute now для cron.
dig NS example.com +shortпоказывает, где лежат ваши записи: на странице Domains Vercel, если там указаны серверы имён Vercel, или у вашего DNS-провайдера.- Снизьте TTL записей корневого домена и
www, например до 300 секунд, и подождите, пока пройдёт старый TTL. - Если база данных тоже переезжает, остановите запись и загрузите последнюю копию.
- Направьте A-запись на IP-адрес сервера. Записи MX и TXT для почты не трогайте.
- Добавьте домен с
httpsна странице Domains в Coolify и нажмите Redeploy. Сертификат выдаётся автоматически. - Оставьте развёртывание на Vercel на несколько дней. Посетители, у которых закэширована старая запись, попадают туда, а при необходимости вы можете вернуть запись обратно.
- Когда трафик перейдёт, уберите домен из проекта Vercel, разорвите связь с Git через Disconnect и верните прежний TTL.
Сертификат выдаётся только после того, как домен указывает на сервер, поэтому первые посетители могут ненадолго увидеть предупреждение о сертификате. Переключайте в тихий час.
Частые вопросы
С какого размера начать?
На странице продажи рекомендуется минимум 4 ГБ RAM, 2 vCore и 40 ГБ диска. Небольшой проект собрался на 2 ГБ, а проект с 85 пакетами на 2 ГБ упёрся в нехватку памяти и собрался на 4 ГБ. Вы можете увеличить сервер из панели.
Сколько это будет стоить в месяц?
Такой размер стоит около $6 в месяц (включая НДС), а за пределами Турции вы платите в долларах США. Трафик безлимитный.
Нужно ли переносить домен, купленный у Vercel?
Нет. Документация Vercel считает регистрацию и DNS отдельными вещами. Достаточно изменить A-запись в Vercel, и ваша запись перекроет записи по умолчанию.
Как идут обновления после переезда?
При настроенном вебхуке git push собирает и публикует каждую версию. Если одна из них окажется неудачной, страница Rollback в Coolify вернёт вас к более раннему образу.
Можно ли переехать, не перенося базу данных?
Да, и это порядок с наименьшим риском. Сначала перенесите приложение, а базу данных позже.
Комментарии0
Комментариев пока нет
Поделитесь своим мнением первым.
Пожалуйста, войдите или зарегистрируйтесь, чтобы оставить комментарий.