Деплой на VPS: pm2/systemd/nginx

Деплой приложения на VPS: настройка процесса через pm2 или systemd, nginx как reverse proxy и HTTPS. Пошаговая инструкция, как своими руками вывести проект в интернет.

Автор — Дмитрий Тыльный, Senior DevOps · 21 июля 2026 · 5 мин
Деплой на VPS: pm2/systemd/nginx

Коротко. Чтобы проект стал доступен по адресу в интернете, нужен сервер (VPS), процесс-менеджер (pm2 или systemd), чтобы приложение не падало, nginx как reverse proxy и HTTPS через бесплатный сертификат. Это классический навык, который сильно усиливает портфолио.

Что такое VPS

VPS — виртуальный сервер, который вы арендуете и настраиваете сами. На нём вы разворачиваете приложение, базу и веб-сервер. Доступ — по SSH. Стоит недорого (несколько сотен рублей в месяц) и даёт понимание, как устроен продакшн изнутри, — то, чего не увидишь на платформах вроде Vercel.

Держим процесс живым

Если просто запустить приложение в терминале, оно умрёт при закрытии сессии. Нужен процесс-менеджер:

  • pm2 (для Node.js): pm2 start server.js, автозапуск после перезагрузки.
  • systemd (универсально): unit-файл, который стартует и перезапускает приложение при падении.

Nginx как reverse proxy

Nginx принимает запросы на 80/443 и перенаправляет их вашему приложению (например, на порт 3000):

server {
  listen 80;
  server_name example.com;
  location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
  }
}

Это скрывает внутренний порт, позволяет раздавать статику и добавить HTTPS.

HTTPS бесплатно

Сертификат Let's Encrypt выдаётся бесплатно; утилита certbot настраивает его для nginx автоматически и продлевает. HTTPS сегодня обязателен: без него браузеры помечают сайт небезопасным.

Безопасность сервера: минимум

Свежий VPS сканируют боты уже через минуты после запуска, поэтому базовую защиту настраивают сразу. Минимальный набор джуна: вход по SSH-ключу вместо пароля, отключённый вход под root, файрвол (ufw), открытый только на нужные порты (22, 80, 443), и регулярные обновления системы. Это не «продвинутый DevOps», а гигиена, без которой сервер с вашим проектом быстро станет чужим.

Чеклист деплоя

  1. Арендовать VPS, зайти по SSH, обновить систему.
  2. Установить рантайм (Node/Python), клонировать проект.
  3. Поднять приложение под pm2/systemd.
  4. Настроить nginx как reverse proxy.
  5. Выпустить HTTPS через certbot.
  6. Закрыть лишние порты (firewall), настроить деплой из CI.

Чеклист «не стыдно показать в проде»

  • процесс под systemd/pm2, автоперезапуск;
  • nginx reverse proxy + HTTPS (Let's Encrypt);
  • firewall: только 80/443/ssh, ssh по ключу;
  • логи приложения и access/error nginx;
  • бэкап данных и .env не в git;
  • отдельный пользователь, не root для приложения.

Для джуна важен не «идеальный k8s», а понимание: процесс живёт, порт слушает, проксирует, сертификат обновляется, логи читаются. Контейнеры — следующий шаг: Docker, общий трек — DevOps старт.

Обновление без «ой упало»

Простой путь: новый релиз в соседний каталог → migrate → switch symlink → restart → healthcheck. Откат — symlink назад. Не invent k8s, пока один VPS не обслуживаете спокойно.

Следующий шаг в бэкенде

Примените идеи из «Деплой на VPS: pm2/systemd/nginx» к своему учебному проекту или к одной вакансии на этой неделе. Соберите минимальный API: CRUD + валидация + одна таблица в БД + README с запуском. Дальше: REST API, SQL, auth, деплой. План — бэкенд 2026, обзор роли — backend starter.

Как применить «Деплой на VPS: pm2/systemd/nginx» на практике

Пройдите материал не как статью, а как задание. Выпишите 3 тезиса из разделов (Что такое VPS; Держим процесс живым; Nginx как reverse proxy) и напротив каждого — действие на 30–90 минут: что сделаете руками, какой файл/репозиторий появится, как поймёте что готово. Без этого колонки «изучил» в голове не конвертируются в оффер.

Связка с соседними материалами: Docker, DevOps старт, REST API, SQL, auth. Не читайте всё подряд — возьмите один следующий URL и закройте его артефактом в git до конца недели. Если роль ещё не выбрана, сначала профессии и 5 вакансий-ориентиров, потом возвращайтесь к этой теме.

На собеседовании по теме «Деплой на VPS: pm2/systemd/nginx» вас почти всегда просят пример из практики. Подготовьте 60–90 секунд: задача → что сделали → результат/ограничение. Даже учебный пример звучит сильнее пересказа теории.

Частые вопросы

VPS или облачный хостинг?
Для обучения VPS даёт понимание «как всё устроено». Платформы (Vercel и т.п.) проще, но скрывают детали. Для портфолио полезно уметь работать с VPS.

pm2 или systemd?
pm2 проще для Node-проектов; systemd универсален и есть в любой Linux-системе. Достаточно освоить один.

Нужен ли Docker для деплоя?
Не обязателен, но упрощает переносимость. См. Docker для новичка.

Как автоматизировать деплой?
Настроить CI/CD, который на каждый push сам обновляет сервер — см. GitHub Actions.

Материал «Деплой на VPS: pm2/systemd/nginx» имеет смысл только вместе с практикой: один артефакт в git на этой неделе важнее десяти вкладок с теорией. Если застряли на выборе роли — начните с профессий и одной вакансии-ориентира.

Нужен оффер, а не пятый сертификат?

Записи реальных собесов и разборы — в Telegram.

Смотреть разборы