Почему Node.js и Next.js требуют VPS
Node.js и Next.js — серверные технологии, которые требуют постоянно работающий процесс. В отличие от PHP, где каждый запрос обрабатывается отдельным процессом, Node.js запускает долгоживущий event loop. Shared-хостинг не поддерживает эту модель — нужен VPS с root-доступом и возможностью запуска фоновых процессов.
Next.js в режиме SSR (Server-Side Rendering) требует Node.js сервер для рендеринга страниц на лету. Даже в режиме SSG (Static Site Generation) для ISR (Incremental Static Regeneration) нужен серверный процесс. В 2026 году Next.js App Router стал стандартом, и большинство проектов используют гибрид SSR + SSG.
Когда VPS обязателен
- SSR/ISR приложения — Next.js с server-side rendering требует Node.js процесс 24/7.
- WebSocket/real-time — чаты, уведомления, Socket.io работают только на VPS с постоянным процессом.
- Кастомный бэкенд — Express, Fastify, NestJS API серверы.
- Очереди и воркеры — BullMQ, agenda.js для фоновых задач.
- SSG с частым ребилдом — Astro, Next.js static export с CI/CD pipeline.
Минимальные требования VPS для Node.js
Лёгкое API / SSG (до 1000 RPM)
- CPU: 1 vCPU
- RAM: 2 ГБ
- Диск: 20 ГБ NVMe SSD
- Node.js 20 LTS или 22 LTS
- Цена: от 300-500 руб./мес
Среднее SSR-приложение (1000-10000 RPM)
- CPU: 2-4 vCPU
- RAM: 4-8 ГБ
- Диск: 40-80 ГБ NVMe SSD
- PM2 для кластеризации
- Redis для кеширования
- Цена: от 800-2000 руб./мес
High-load Next.js (10000+ RPM)
- CPU: 8+ vCPU
- RAM: 16+ ГБ
- Диск: 100+ ГБ NVMe SSD
- Docker + Load Balancer
- CDN для статики (Brotli/gzip)
- Цена: от 5000 руб./мес
Рекомендуемые провайдеры: Timeweb Cloud — от 390 руб./мес с NVMe и Node.js в один клик. Aeza — Ryzen 9 для максимальной производительности SSR. VDSina — почасовая оплата для dev/staging серверов.
Установка Node.js на VPS
Рекомендуется устанавливать Node.js через NVM (Node Version Manager) — это позволяет легко переключаться между версиями.
Установка через NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
# Установка LTS версии
nvm install 22
nvm use 22
nvm alias default 22
node --version # v22.x.x
npm --versionАльтернатива: NodeSource
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install nodejs -yУстановка pnpm (рекомендуется для Next.js)
npm install -g pnpm
pnpm --versionДеплой Next.js приложения на VPS
Клонирование и сборка
# Создаём директорию
sudo mkdir -p /var/www/myapp
sudo chown $USER:$USER /var/www/myapp
cd /var/www/myapp
# Клонируем репозиторий
git clone https://github.com/user/myapp.git .
# Устанавливаем зависимости и собираем
pnpm install --frozen-lockfile
pnpm buildЗапуск в production
# Прямой запуск (для теста)
NODE_ENV=production pnpm start
# Или через next start с указанием порта
npx next start -p 3000Переменные окружения
# /var/www/myapp/.env.production
NODE_ENV=production
DATABASE_URL=postgresql://user:pass@localhost:5432/mydb
NEXTAUTH_SECRET=your-secret-key
NEXT_PUBLIC_API_URL=https://api.example.comPM2: управление Node.js процессами
PM2 — менеджер процессов Node.js для production. Автоматический перезапуск при падении, кластерный режим для использования всех ядер CPU, мониторинг и логирование.
# Установка PM2
npm install -g pm2
# Запуск Next.js через PM2
pm2 start npm --name "myapp" -- start
# Или через ecosystem файлecosystem.config.js
// ecosystem.config.js
module.exports = {
apps: [{
name: 'myapp',
script: 'node_modules/.bin/next',
args: 'start -p 3000',
cwd: '/var/www/myapp',
instances: 'max', // Кластер на все ядра
exec_mode: 'cluster',
max_memory_restart: '512M',
env: {
NODE_ENV: 'production',
PORT: 3000
}
}]
};# Запуск через ecosystem
pm2 start ecosystem.config.js
# Автозапуск при перезагрузке VPS
pm2 startup
pm2 save
# Мониторинг
pm2 monit
pm2 logs myapp --lines 50Кластерный режим (instances: 'max') запускает по одному процессу на каждое ядро CPU. На 4 vCPU VPS это даёт 4 воркера и ~4x пропускную способность.
Nginx как reverse proxy для Node.js
Nginx стоит перед Node.js как reverse proxy: обрабатывает SSL, раздаёт статику, балансирует нагрузку и защищает от медленных клиентов.
# /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Статика Next.js (кеш на год)
location /_next/static/ {
alias /var/www/myapp/.next/static/;
expires 365d;
add_header Cache-Control "public, immutable";
}
location /public/ {
alias /var/www/myapp/public/;
expires 30d;
}
# Проксирование к Node.js
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxNginx раздаёт статику (_next/static/) напрямую без обращения к Node.js — это снижает нагрузку на сервер и ускоряет загрузку страниц.
Docker для Node.js и Next.js на VPS
Docker изолирует приложение и упрощает деплой. Для Next.js рекомендуется multi-stage сборка для минимального размера образа.
Dockerfile для Next.js
FROM node:22-alpine AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable && pnpm install --frozen-lockfile
FROM node:22-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN corepack enable && pnpm build
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]docker-compose.yml
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=${DATABASE_URL}
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
interval: 30s
timeout: 10s
retries: 3Next.js standalone output (output: 'standalone' в next.config.js) создаёт минимальный сервер без node_modules — образ весит 100-200 МБ вместо 500+ МБ.
Оптимизация производительности
Node.js tuning
# Увеличение лимита памяти V8
NODE_OPTIONS="--max-old-space-size=4096" pm2 start ecosystem.config.js
# UV_THREADPOOL_SIZE для I/O операций
UV_THREADPOOL_SIZE=16 node server.jsNext.js оптимизация
- output: 'standalone' в next.config.js — минимальный production build
- Image Optimization: sharp + loader: 'custom' для CDN
- ISR (revalidate: 60) — кеширование страниц на 60 секунд
- React Server Components — меньше JavaScript на клиенте
- next/dynamic для lazy loading тяжёлых компонентов
Redis для кеширования
# Установка Redis
sudo apt install redis-server
sudo systemctl enable redis-server
# В Next.js (через ioredis)
import Redis from 'ioredis';
const redis = new Redis();
// Кеширование результатов API
const cached = await redis.get('products');
if (cached) return JSON.parse(cached);
const data = await db.query('SELECT * FROM products');
await redis.set('products', JSON.stringify(data), 'EX', 300);Заключение
Деплой Node.js и Next.js на VPS — стандартный подход для production-проектов в 2026 году. PM2 обеспечивает надёжность и кластеризацию, Nginx — SSL и раздачу статики, Docker — воспроизводимость окружения. Для начала достаточно VPS с 2 vCPU и 4 ГБ RAM от 400 руб./мес.
Сравните VPS-провайдеров с поддержкой Node.js на EasyLinkLife — актуальные цены, NVMe-диски и отзывы в одном месте.
Плюсы и минусы
Преимущества
- Полный путь от установки до production
- PM2 кластер + ecosystem.config.js
- Nginx reverse proxy с кешированием статики
- Docker multi-stage для Next.js standalone
- Оптимизация: Redis, ISR, Server Components
Недостатки
- Не покрывает Deno и Bun
- Нет примеров для NestJS
- Cloudflare Workers не рассмотрены
Частые вопросы
Какой VPS нужен для Next.js SSR?
Минимум 2 vCPU и 4 ГБ RAM для среднего SSR-приложения. PM2 в кластерном режиме использует все ядра CPU. Стоимость от 400 руб./мес.
PM2 или Docker для Node.js на VPS?
PM2 проще и подходит для одного приложения. Docker лучше для нескольких сервисов и CI/CD. Можно комбинировать: Docker для изоляции, PM2 внутри контейнера.
Нужен ли Nginx для Node.js?
Да. Nginx как reverse proxy: обрабатывает SSL, раздаёт статику без нагрузки на Node.js, защищает от медленных клиентов и DDoS. Прирост производительности 30-50%.
Как обновить Node.js приложение без простоя?
PM2 reload: pm2 reload myapp обновляет процессы по одному (zero-downtime). С Docker: docker compose up -d --no-deps --build app.
Next.js standalone vs обычный build?
Standalone (output: 'standalone') создаёт минимальный сервер без node_modules: 100-200 МБ вместо 500+. Рекомендуется для Docker и production.
Можно ли хостить Next.js на shared-хостинге?
Только SSG (Static Export). SSR/ISR требуют постоянный Node.js процесс — нужен VPS. Экспорт: next build && next export.
VPS для Node.js с NVMe
Выбрать VPS для Node.jsНекоторые ссылки являются партнёрскими. На стоимость для вас это не влияет. Подробнее