цены сверены 19 октября 2026 года

Node.js на VPS: установка LTS и запуск через PM2

Node.js LTS на Ubuntu 24.04 удобнее ставить из репозитория NodeSource: он обновляется через apt вместе с системой. Приложение запускают через PM2, а команды pm2 startup и pm2 save возвращают его после перезагрузки сервера.

Node.js на VPS: установка LTS и запуск через PM2
Содержание
  1. Какой способ установки выбрать
  2. Установка Node.js LTS
  3. Простое приложение
  4. Установка PM2
  5. Запуск приложения
  6. Автозапуск после перезагрузки
  7. Логи
  8. Обновление приложения
  9. Что делать дальше
Команды проверены 12 октября 2026 годачистая Ubuntu 24.04 · Node.js 24.21, PM2 7.0.4Как мы проверяем

Какой способ установки выбрать

Есть три пути: пакет из репозитория Ubuntu, nvm и NodeSource. Пакет Ubuntu часто отстаёт по версии. Nvm ставит Node.js в домашний каталог пользователя и переключает версии: он удобен на рабочем компьютере. На сервере у него есть минус: путь к Node.js привязан к пользователю и оболочке, и службе автозапуска проще потерять его.

Основной способ здесь NodeSource. Он ставит Node.js системным пакетом в /usr/bin, обновления приходят через apt, а служба systemd находит программу без доп. настроек. Nodejs.org в разделе загрузки тоже предлагает nvm и другие способы, но на сервере для одного приложения проще системный пакет.

LTS (Long Term Support) это версия с долгой поддержкой. Для сервера берите именно её, а не последнюю «текущую»: список выпусков и сроки поддержки лежат на странице previous-releases сайта nodejs.org.

Установка Node.js LTS

sudo apt update
sudo apt install -y ca-certificates curl
curl -fsSL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh
less nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt install -y nodejs

Первая команда обновляет список пакетов. Вторая ставит curl и сертификаты, если их нет. Третья скачивает установочный скрипт NodeSource в файл. Четвёртая открывает его для чтения, выход клавишей q: так вы видите, что запускаете. Пятая выполняет скрипт, он подключает репозиторий. Последняя ставит сам Node.js вместе с npm.

Проверьте версии:

node -v
npm -v

Команды печатают версии Node.js и менеджера пакетов npm. Если нужна конкретная мажорная версия, а не текущая LTS, в документации NodeSource есть скрипты вида setup_NN.x, где NN номер версии.

Простое приложение

Создайте каталог и файл:

mkdir -p ~/myapp
nano ~/myapp/app.js

Первая команда создаёт каталог в домашней папке, вторая открывает файл в nano. Вставьте:

const http = require('http');

http.createServer((req, res) => {
  res.end('Работает\n');
}).listen(3000, '127.0.0.1');

Приложение отвечает на запросы по порту 3000 и слушает только локальный адрес. Снаружи его покажет обратный прокси, например Nginx. Если приложение будет использовать порт напрямую, этот порт придётся открыть в файрволе.

Запустите вручную для проверки:

node ~/myapp/app.js

В другом окне выполните curl http://127.0.0.1:3000, ответ: Работает. В первом окне остановите приложение через Ctrl+C. Запускать так на постоянной основе нельзя: процесс умрёт при закрытии терминала и не поднимется после сбоя.

Установка PM2

PM2 это менеджер процессов для Node.js. Он запускает приложение в фоне, перезапускает его при падении и ведёт журналы.

sudo npm install -g pm2
pm2 -v

Первая команда ставит PM2 глобально. Вторая печатает версию. Запускайте приложение под обычным пользователем, а не root: при ошибке в коде сбой не затронет всю систему.

Запуск приложения

cd ~/myapp
pm2 start app.js --name myapp
pm2 list

pm2 start запускает файл в фоне и даёт процессу имя myapp. pm2 list выводит таблицу процессов: имя, статус (online), число перезапусков, использование процессора и памяти. Остановить и убрать процесс из списка: pm2 stop myapp и pm2 delete myapp.

Автозапуск после перезагрузки

Без этого шага после перезагрузки сервера приложение не запустится.

pm2 startup systemd

Команда не включает автозапуск сама, а печатает готовую строку, которую нужно выполнить с sudo. Скопируйте эту строку целиком и запустите. Она создаёт службу systemd pm2-имяпользователя. Затем сохраните текущий список процессов:

pm2 save

pm2 save записывает список запущенных процессов, и PM2 восстановит именно его после загрузки системы. После каждого добавления нового приложения повторяйте pm2 save. Проверить можно перезагрузкой: sudo reboot, затем pm2 list после входа. О службах systemd читайте в статье журналы и службы systemd.

Логи

pm2 logs myapp
pm2 logs myapp --lines 100
pm2 flush

Первая команда выводит журнал приложения в реальном времени: и обычный вывод, и ошибки. Выход через Ctrl+C. Вторая показывает последние 100 строк. pm2 flush очищает файлы логов. Сами файлы лежат в каталоге ~/.pm2/logs/.

Файлы растут без ограничения. Чтобы они не занимали диск, установите модуль ротации:

pm2 install pm2-logrotate

Команда ставит модуль, который периодически разбивает и удаляет старые журналы. Настройки по умолчанию описаны в документации PM2.

Обновление приложения

Порядок действий, если код лежит в git:

cd ~/myapp
git pull
npm install --omit=dev
pm2 restart myapp

git pull забирает свежий код. npm install --omit=dev ставит зависимости без пакетов для разработки. pm2 restart перезапускает процесс с новым кодом. Если зависимости менялись, сначала перезапустите, потом смотрите pm2 logs myapp на ошибки. Для приложений, которые поддерживают плавный перезапуск, есть pm2 reload myapp: при режиме cluster он не обрывает соединения.

Переменные окружения (токены, пароли) не храните в коде. PM2 умеет читать файл конфигурации ecosystem.config.js, его создаёт команда pm2 init simple. Если на сервере живёт Telegram-бот, подберите ресурсы по статье сервер для Telegram-бота.

Что делать дальше

Поставьте Nginx и сертификат, чтобы приложение открывалось по домену, и настройте резервные копии. Подобрать сервер под Node.js можно на странице подбора VPS: тарифы от 140 ₽ в месяц, цены сверены 19 октября 2026 года.