Перенесення застосунку 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
Коментарів поки немає
Поділіться своєю думкою першим.
Будь ласка, увійдіть або зареєструйтеся, щоб залишити коментар.