Node js: как установить на VPS и запустить приложение — инструкция для новичка
Node js — среда выполнения JavaScript, на которой работают сайты, API и боты. В этой инструкции из блога HostingFAQ вы по шагам установите Node.js на VPS с Ubuntu 24.04, запустите приложение на порту 3000, оставите его работать в фоне через PM2 и откроете наружу через Nginx с HTTPS. Подойдёт новичку, который уже умеет подключаться к серверу по SSH.

Коротко
- Рекомендуемая версия для сервера — LTS (Long Term Support, долгосрочная поддержка): это ветки с чётными номерами, например 22 и 24
- Новые основные версии Node.js выходят два раза в год, в апреле и октябре; LTS-статус получают версии с чётным номером
- Установка через nvm занимает 3–5 минут и не требует прав root для переключения версий
- Для небольшого API или бота хватит VPS с 1 vCPU и 1 ГБ ОЗУ, для комфортной работы — 2 ГБ ОЗУ
- Приложение в примере слушает порт 3000; снаружи сайт открывается через Nginx на портах 80 и 443
- PM2 перезапускает приложение при падении и после перезагрузки сервера: хватит четырёх команд
- Аренда подходящего VPS обычно стоит от 200 до 600 ₽/мес, точная цена зависит от провайдера и тарифа
Что такое Node js и зачем он нужен на сервере
Node.js — среда выполнения JavaScript вне браузера. Она построена на движке V8, том же, что запускает JavaScript в Chrome. Вы пишете код на одном языке и запускаете его на сервере командой node server.js.
Обычный PHP-хостинг запускает скрипт заново при каждом запросе. Node.js работает иначе: приложение — это постоянный процесс, который слушает порт и отвечает на запросы. Поэтому на виртуальном хостинге его обычно не запустить, нужен VPS с полным доступом к системе. Если путаетесь в терминах, посмотрите, чем домен отличается от хостинга.
В статье сквозной пример: домен example.ru и учебное приложение на Express, веб-фреймворке для Node.js. Оно слушает порт 3000 и отвечает строкой «Hello from Node.js». Для такого приложения хватит VPS с 1 vCPU и 1 ГБ ОЗУ, а создать сервер можно в облаке.
Для сервера берите LTS (Long Term Support, долгосрочная поддержка): это ветки с чётным номером, например 22 или 24. Чаще всего на Node.js делают:
- API (Application Programming Interface) — интерфейс, через который программы обмениваются данными;
- сайты и интернет-магазины;
- Telegram-боты;
- чаты на WebSocket — постоянном соединении между браузером и сервером.
Как работает Node js: событийный цикл, npm и порты
Node.js выполняет ваш код в одном потоке. Это событийный цикл (event loop): он берёт задачи из очереди по одной. Когда нужно прочитать файл или дождаться ответа базы данных, Node.js передаёт операцию системе и не ждёт. Это неблокирующий ввод-вывод (I/O), поэтому пока идёт чтение, цикл обрабатывает следующий запрос. Тяжёлые вычисления в этом же потоке остановят все запросы.
npm (Node Package Manager) ставит готовые библиотеки. Команда npm install express в папке ~/app скачивает пакет в node_modules и записывает его в package.json — файл с названием проекта, зависимостями и скриптами. По нему любой сервер повторит установку командой npm install.
Приложение занимает порт — числовой адрес на сервере, в нашем примере 3000. Адрес, на котором оно слушает, определяет, кто сможет подключиться: 127.0.0.1 принимает запросы только с самого сервера, а 0.0.0.0 — с любых сетевых интерфейсов, о чём подробно рассказано в материале что значит 0.0.0.0. За Nginx хватит 127.0.0.1. Как устроены соединения между клиентом и сервером, объясняет статья что такое сетевой протокол.
Процесс Node и веб-сервер решают разные задачи:
- Node.js запускает ваш
server.jsи отвечает на запросы по логике приложения. - Nginx принимает соединения на портах 80 и 443, обслуживает HTTPS и передаёт запросы на
127.0.0.1:3000. - Если Node.js упадёт, Nginx продолжит работать, а PM2 перезапустит приложение.
Что подготовить перед установкой Node js на VPS
Установка пройдёт гладко, если заранее собрать четыре вещи. Вам понадобятся VPS (Virtual Private Server, виртуальный сервер) с Ubuntu 24.04 LTS, доступ по SSH (Secure Shell) на порт 22, обычный пользователь с правами sudo и домен example.ru с A-записью на IP-адрес сервера. Запись обновляется от нескольких минут до нескольких часов, поэтому создайте её заранее.
По ресурсам хватит минимума: 1 vCPU, 1 ГБ ОЗУ и 10 ГБ диска. Для небольшого API или бота этого достаточно, а для комфортной работы берите 2 vCPU и 2 ГБ ОЗУ. Подходящий сервер обычно стоит от 200 до 600 ₽/мес, точная цена зависит от провайдера и тарифа.
С версией определитесь сразу: на сервер ставьте LTS (Long Term Support, долгосрочная поддержка). Это ветки с чётными номерами, в 2026 году — 22 или 24. Новые основные версии выходят два раза в год, в апреле и октябре, но LTS-статус получают только чётные.
Проверьте перед началом:
- подключение к серверу работает командой
ssh user@IP-адрес; - пользователь выполняет
sudo apt updateбез ошибок; - домен
example.ruуказывает на IP сервера; - на диске свободно не меньше 10 ГБ.
Сервера ещё нет? Сравните варианты в вопросах о VPS, прочитайте, как арендовать виртуальный сервер, и посмотрите рейтинг VPS-хостингов. Если Linux для вас в новинку, начните с материала про Linux для сервера.
Как установить Node js на VPS: пошаговая инструкция
Установка занимает 3–5 минут. Мы ставим Node.js через nvm (Node Version Manager): он не требует прав root для переключения версий и позволяет обновиться одной командой. Выбирайте LTS-ветку (Long Term Support, долгосрочная поддержка) с чётным номером, в 2026 году это 22 или 24.
Примеры рассчитаны на Ubuntu 24.04 LTS. Вам понадобятся IP-адрес сервера и клиент для SSH (Secure Shell), например PuTTY. Для минимального проекта хватит 1 vCPU и 1 ГБ ОЗУ.
Выполните по порядку семь шагов:
- Подключитесь по SSH на порт 22:
ssh root@IP_сервера -p 22. Затем обновите систему:apt update && apt upgrade -y. - Установите nvm скриптом из репозитория
nvm-sh/nvm: командуcurlскопируйте из файла README этого репозитория. После установки выполнитеsource ~/.bashrc. - Поставьте актуальную LTS-версию:
nvm install --lts. Проверьте результат командамиnode -vиnpm -v: обе должны вывести номера версий. - Создайте проект:
mkdir ~/app && cd ~/app, затемnpm init -yиnpm install express. - Создайте файл
server.jsкомандойnano server.jsи вставьте код:const app = require('express')(); app.get('/', (req, res) => res.send('Hello from Node.js')); app.listen(3000, '127.0.0.1');. Запуститеnode server.jsи в другом окне проверьте:curl http://localhost:3000. - Остановите приложение сочетанием Ctrl+C и установите менеджер процессов PM2:
npm install -g pm2. Запустите приложение:pm2 start server.js --name app. - Включите автозапуск: выполните
pm2 startupи запустите команду, которую PM2 выведет в ответ. Затем сохраните список процессов:pm2 save.
В итоге приложение отвечает строкой «Hello from Node.js» на порту 3000 и работает в фоне. PM2 перезапускает его при падении и после перезагрузки сервера. Если удобнее писать код на своём компьютере, загрузите файлы в ~/app через SFTP в FileZilla.

Сколько ресурсов и денег нужно для Node js на сервере
Для Node js на VPS (Virtual Private Server, виртуальном сервере) минимум — 1 vCPU (виртуальное ядро процессора) и 1 ГБ ОЗУ (оперативной памяти) при диске от 10 ГБ. Этого хватит для бота или небольшого API. Для комфортной работы берите 2 vCPU и 2 ГБ ОЗУ.
База данных, мониторинг и бэкапы требуют отдельных ресурсов. Например, установите PostgreSQL на тот же сервер, и она займёт заметную часть памяти. Агент мониторинга, например Zabbix, добавит нагрузку на процессор. Резервные копии занимают место на диске, поэтому закладывайте запас.
Если памяти не хватает, Linux начинает использовать swap (раздел подкачки на диске). Приложение замедляется, а при нехватке памяти система может завершить процесс node. Считайте swap страховкой, а не заменой ОЗУ. Условия тарифов сверяйте в разделе ответов о VPS.
| Тип проекта | vCPU | ОЗУ | Диск | Цена, ₽/мес |
|---|---|---|---|---|
| Бот | 1 | 1 ГБ | 10 ГБ | 200–600 |
| Небольшой API | 1–2 | 1–2 ГБ | 10–20 ГБ | 200–600 |
| Сайт с базой данных | 2 | 2–4 ГБ | 20–40 ГБ | 400–1200 |
| Нагруженный сервис | 4 и больше | 8 ГБ и больше | 40 ГБ и больше | от 1500 |
Цены ориентировочные: точная сумма зависит от провайдера и тарифа. Для нагруженного сервиса нужны замеры под вашу нагрузку, поэтому начните с малого тарифа и увеличивайте ресурсы по мере роста.
Как открыть приложение наружу: Nginx, файрвол и HTTPS
Порт 3000 браузер напрямую не откроет: посетители приходят на порты 80 (HTTP) и 443 (HTTPS), и сертификат нужен именно там. Nginx принимает запросы на этих портах и передаёт их в Node.js, такая схема называется обратным прокси. Само приложение при этом слушает только 127.0.0.1.
Сначала направьте домен на сервер: в панели регистратора создайте A-запись для example.ru с IP-адресом VPS. Для отдельного сервиса добавьте поддомен, например api.example.ru. Подробности есть в материалах про создание поддомена и DNS-записи домена. Обновление записей занимает от нескольких минут до нескольких часов.
Установите Nginx командой sudo apt install nginx и создайте файл /etc/nginx/sites-available/example.ru. В блоке server укажите server_name example.ru;, а в location / строку proxy_pass http://127.0.0.1:3000;. Включите сайт ссылкой в sites-enabled, проверьте конфигурацию командой sudo nginx -t и примените её через sudo systemctl reload nginx.
Затем настройте файрвол ufw (Uncomplicated Firewall) тремя действиями:
sudo ufw allow 22— оставит доступ по SSH, иначе потеряете связь с сервером;sudo ufw allow 80иsudo ufw allow 443— откроют сайт посетителям;sudo ufw enable— включит правила.
Порт 3000 снаружи не открывайте: все запросы должны идти через Nginx. Если нужен нестандартный доступ, прочитайте про проброс портов.
Для HTTPS установите Certbot и выполните sudo certbot --nginx -d example.ru. Сертификат Let’s Encrypt действует 90 дней, Certbot продлевает его автоматически. Зачем нужен сертификат безопасности, разобрано отдельно. Если домен работает через CDN, изучите настройку Cloudflare, а для запуска в контейнере пригодится установка Docker на VPS.

Частые ошибки при запуске Node js и как их исправить
При первом запуске чаще всего встречаются пять ошибок: занятый порт 3000 (EADDRINUSE), пропавшая команда node после установки nvm, ошибка 502 Bad Gateway в Nginx, приложение без автозапуска и сайт, закрытый снаружи. Каждая решается за 1–2 минуты. Команды ниже рассчитаны на Ubuntu 24.04 LTS.
EADDRINUSE: порт 3000 занят
Причина: на порту 3000 уже работает старый экземпляр приложения. Выполните sudo ss -ltnp | grep 3000 и найдите PID в колонке users. Остановите процесс командой kill PID и запустите приложение снова.
command not found: node после установки nvm
Причина: текущая SSH-сессия не прочитала настройки nvm. Переподключитесь к серверу или выполните source ~/.bashrc, затем проверьте node -v.
502 Bad Gateway в Nginx
Причина: Nginx не достучался до приложения, потому что оно не запущено или слушает другой порт. Выполните pm2 status и pm2 logs app. Убедитесь, что в server.js указан порт 3000, а в proxy_pass стоит http://127.0.0.1:3000.
Приложение не стартует после перезагрузки
Причина: вы не выполнили pm2 startup и pm2 save. Запустите обе команды, а строку, которую выведет pm2 startup, выполните с sudo.
Сайт не открывается снаружи
Причина: файрвол ufw блокирует порты 80 и 443. Выполните sudo ufw allow 80 и sudo ufw allow 443, затем проверьте внешний IP-адрес сервера. Принцип закрытых портов одинаков для всех служб, его показывает разбор порта 25.
Почти любой сбой видно в двух местах: в выводе pm2 logs app и в списке портов ss -ltnp. Начинайте с них, и причина найдётся быстро.
Альтернативы Node js и для кого он не подходит
Node.js хорош для API (Application Programming Interface, программный интерфейс), чатов, уведомлений и других задач реального времени. Ещё один плюс: фронтенд и бэкенд пишутся на одном языке, JavaScript. Но для части задач другие платформы подходят лучше.
Python с Django или FastAPI удобнее для аналитики, машинного обучения и готовых админок. PHP выгоднее для простого сайта на готовой CMS (Content Management System, система управления сайтом), например WordPress. Для тяжёлых вычислений берите Go: Node.js исполняет JavaScript в основном потоке, и долгий расчёт задерживает все остальные запросы.
VPS не подойдёт, если вы не готовы администрировать сервер: обновлять систему, настраивать ufw, следить за диском и памятью. В таком случае возьмите управляемый хостинг или платформу, где за сервер отвечает провайдер. Если администрирование вас не пугает, выберите подходящий VPS с запасом по ресурсам.
Способ развёртывания зависит от масштаба проекта:
- PM2 на VPS: подходит для одного приложения, хватит 1 vCPU и 1 ГБ ОЗУ, примерно от 200 до 600 ₽/мес;
- Docker: упаковывает приложение со всеми зависимостями, подробности в статье про контейнеры Docker на VPS;
- Kubernetes: нужен для крупных систем из многих сервисов, начните с материала о настройке кластера и разберите настройку Ingress.
Частые вопросы
Что такое Node js простыми словами?
Какую версию Node js ставить на сервер?
Как установить Node js на Ubuntu через nvm?
Какой порт использует Node js?
Сколько памяти нужно для Node js на VPS?
Как запустить Node js в фоне, чтобы не закрывалось после выхода из SSH?
Что значит ошибка EADDRINUSE?
Почему Nginx выдаёт 502 Bad Gateway?
Можно ли запустить Node js на обычном хостинге?
Как сделать HTTPS для сайта на Node js?
Проверьте себя
- Версия Node.js — LTS, node -v и npm -v выводят номера
- Приложение отвечает на curl http://localhost:3000
- PM2 показывает процесс app в статусе online
- Выполнены pm2 startup и pm2 save
- Nginx проксирует домен на 127.0.0.1:3000, nginx -t без ошибок
- В ufw открыты порты 22, 80 и 443, порт 3000 снаружи закрыт
- Сайт открывается по https:// с действующим сертификатом
На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.