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

Зачем он нужен
Как выкатить приложение без 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 и проксирует.
- На сервере ставите Node LTS и nginx.
- Кладёте код в каталог проекта, в
.env— секреты, не в git. - Собираете фронт или запускаете
node/next start. - PM2 держит процесс:
pm2 startиpm2 save, чтобы пережил ребут. - В nginx —
proxy_passна localhost, заголовкиHostиX-Forwarded-Proto. - Сертификат — 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» проверка такая: откройте файл, страницу или лог и убедитесь, что изменилось именно то, о чём гайд. Docker не обязателен, если один Node-процесс.
Если видите лишние файлы, чужой пакет или секрет в diff — правку не принимайте. Вернитесь к шагу, где задача ещё была узкой.
Чего в этом гайде не делать
Не расширяйте «Деплой Node.js на VPS: PM2, nginx и SSL» на весь репозиторий. Схема простая: Node слушает 127.0.0.1:3000, nginx принимает 80/443 и проксирует. Соседняя тема — соседний гайд. Сюда не входят карты, пароли и чужие кабинеты.
Короткий маршрут
- Коротко
- Подробнее
- Ключевые выводы
- 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» достаточно одного узкого изменения.