На сайт

Установка Node.js на VPS. nvm, npm и деплой приложения

Как установить Node.js на VPS Ubuntu: nvm или Nodesource, npm, запуск приложения. Хостинг Node на виртуальном сервере.

Node.js на VPS — база для ботов, API и Next.js. Установка и запуск.

Какую версию Node.js выбрать

Версия Статус Рекомендация
Node.js 18 Maintenance LTS Для старых проектов
Node.js 20 Active LTS Рекомендуется для продакшна
Node.js 22 Current Для новых проектов

Всегда используйте LTS-версии на продакшн-серверах, они получают обновления безопасности дольше.

Установка Node.js через nvm (рекомендуется)

nvm (Node Version Manager) позволяет легко устанавливать и переключаться между версиями Node.js.

Установка nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.bashrc

scr

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

# Установить последнюю LTS-версию
nvm install --lts

# Установить конкретную версию
nvm install 20

# Переключиться между версиями
nvm use 20

# Проверить версию
node -v
npm -v

scr

Установка Node.js из репозитория NodeSource

Альтернативный способ, если не нужно несколько версий:

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install nodejs -y

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

Простой запуск

cd /var/www/myapp
npm install
node app.js

Проблема: приложение остановится при закрытии SSH-сессии.

Запуск через PM2 (рекомендуется для продакшна)

PM2 это менеджер процессов, который держит приложение запущенным и перезапускает при падениях.

# Установка PM2
npm install -g pm2

# Запуск приложения
pm2 start app.js --name "myapp"

# Полезные команды
pm2 list              # Список процессов
pm2 logs myapp        # Логи приложения
pm2 restart myapp     # Перезапуск
pm2 stop myapp        # Остановка
pm2 delete myapp      # Удаление

# Автозапуск при перезагрузке сервера
pm2 startup
pm2 save

scr scr

Проксирование через Nginx

Чтобы приложение было доступно по доменному имени на порту 80/443:

server {
    listen 80;
    server_name myapp.com;

    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_cache_bypass $http_upgrade;
    }
}

После настройки Nginx добавьте SSL через Certbot:

certbot --nginx -d myapp.com

Полезные инструменты

Инструмент Назначение
PM2 Менеджер процессов, автоперезапуск
nodemon Автоперезапуск при изменении файлов (для разработки)
dotenv Переменные окружения из .env файла
nvm Управление версиями Node.js

Никогда не запускайте Node.js-приложения от имени root. Создайте отдельного пользователя и используйте Nginx для проксирования с порта 80.