Деплой Node.js на VPS: PM2, nginx и SSL

Как выкатить приложение без Docker: процесс, прокси и сертификат.

Вернуться в гайды

На VPS собираете проект, поднимаете его через PM2 на localhost, снаружи ставите nginx и Let's Encrypt.

Гайд «Деплой Node.js на VPS: PM2, nginx и SSL» — про один маршрут в Cursor, раздел «Автоматизация и деплой». Как выкатить приложение без Docker: процесс, прокси и сертификат.

Деплой Node.js на VPS: PM2, nginx и SSL

Зачем он нужен

Как выкатить приложение без Docker: процесс, прокси и сертификат. На VPS собираете проект, поднимаете его через PM2 на localhost, снаружи ставите nginx и Let's Encrypt.

Ниже тот же маршрут, что и в короткой версии гайда, только с проверкой в конце. Схема показывает порядок, следующая картинка — экран, с которым сверяют diff.

Как идти по шагам

Коротко

На VPS собираете проект, поднимаете его через PM2 на localhost, снаружи ставите nginx и Let's Encrypt. Docker не обязателен, если один Node-процесс.

Подробнее

Схема простая: Node слушает 127.0.0.1:3000, nginx принимает 80/443 и проксирует.

  1. На сервере ставите Node LTS и nginx.
  2. Кладёте код в каталог проекта, в .env — секреты, не в git.
  3. Собираете фронт или запускаете node / next start.
  4. PM2 держит процесс: pm2 start и pm2 save, чтобы пережил ребут.
  5. В nginx — proxy_pass на localhost, заголовки Host и X-Forwarded-Proto.
  6. Сертификат — certbot. HTTP редиректите на HTTPS.

Логи смотрите в pm2 logs. Если 502 — процесс не слушает порт или упал после деплоя.

Для Next.js на том же VPS часто удобнее Docker — см. деплой Next.js на Beget. Этот гайд — если хотите без контейнеров.

Ключевые выводы

PM2 держит процесс, nginx закрывает наружу, SSL обязателен на проде. Секреты только на сервере. После обновления — git pull, сборка, pm2 restart.

FAQ

Зачем nginx, если Node сам слушает 3000?

Снаружи не стоит открывать порт приложения. nginx даёт HTTPS, один вход и несколько сайтов на одном VPS.

PM2 или systemd?

Для одного Node-приложения PM2 проще. systemd тоже нормально, если уже так принято на сервере.

Почему после ребута сайт лежит?

Не сделали pm2 startup и pm2 save. Процесс не поднялся сам.

Деплой Node.js на VPS: PM2, nginx и SSL

Что проверить руками

Ответ агента не считается результатом. Для «Деплой Node.js на VPS: PM2, nginx и SSL» проверка такая: откройте файл, страницу или лог и убедитесь, что изменилось именно то, о чём гайд. Docker не обязателен, если один Node-процесс.

Если видите лишние файлы, чужой пакет или секрет в diff — правку не принимайте. Вернитесь к шагу, где задача ещё была узкой.

Чего в этом гайде не делать

Не расширяйте «Деплой Node.js на VPS: PM2, nginx и SSL» на весь репозиторий. Схема простая: Node слушает 127.0.0.1:3000, nginx принимает 80/443 и проксирует. Соседняя тема — соседний гайд. Сюда не входят карты, пароли и чужие кабинеты.

Короткий маршрут

  1. Коротко
  2. Подробнее
  3. Ключевые выводы
  4. FAQ

На VPS собираете проект, поднимаете его через PM2 на localhost, снаружи ставите nginx и Let's Encrypt. Docker не обязателен, если один Node-процесс. Схема простая: Node слушает 127.0.0.1:3000, nginx принимает 80/443 и проксирует.

Порядок для «Деплой Node.js на VPS: PM2, nginx и SSL» такой. Сначала рамка: Как выкатить приложение без Docker: процесс, прокси и сертификат. Потом один проход агента и ваша проверка результата, а не отчёт модели.

Если агент ушёл в сторону, остановите его и повторите последний шаг из списка. Не просите переписать всю историю чата заново.

В разделе «Автоматизация и деплой» этот маршрут заканчивается, когда проверка из гайда прошла. Docker не обязателен, если один Node-процесс.

Перед Accept сверьте diff со схемой шагов. Для «Деплой Node.js на VPS: PM2, nginx и SSL» достаточно одного узкого изменения.

Мы используем файлы cookie для того, чтобы предоставить пользователям больше возможностей при посещении сайта. Оставаясь на сайте, Вы соглашаетесь на обработку файлов cookie. Подробнее об условиях использования.