Перейти к основному содержанию

VPS для Node.js и Next.js: деплой, PM2, Nginx — полный гайд 2026

Как задеплоить Node.js и Next.js на VPS в 2026: установка, PM2, Nginx reverse proxy, Docker, оптимизация. Требования к серверу и сравнение провайдеров.

И
Илья Ковалев

Почему 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.com

PM2: управление 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 nginx

Nginx раздаёт статику (_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: 3

Next.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.js

Next.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

Некоторые ссылки являются партнёрскими. На стоимость для вас это не влияет. Подробнее

E

Илья Ковалев

Илья Ковалев — автор EasyLinkLife, эксперт по серверной инфраструктуре и облачным технологиям.

Проверено: Редакция EasyLinkLife | Обновлено: 20 марта 2026 г.

Полезные материалы