Все кейсы

Infrastructure Setup / Ubuntu / Nginx / PM2

Развертывание fullstack-приложения на VPS

В нескольких проектах я настраивал VPS с нуля. Здесь описываю запуск приложений через PM2, подключение доменов и проверку Nginx, HTTPS и базы данных.

Автор: Ярослав Мусатов Опубликовано: Обновлено:
НаправлениеИнфраструктура
Год2025
СрокПроектная задача
РольInfrastructure Setup

Личная зона ответственности

Мой вклад

Здесь перечислена выполненная мной работа в рамках задачи, а не авторство всего продукта или результат всей команды.

  • Подготовил VPS и production-окружение для frontend, backend и базы данных.
  • Настроил Nginx, процессы приложения, SSL и переменные окружения.
  • Проверил связность компонентов и доступность приложения после развёртывания.

Задача по запуску проекта на VPS

В нескольких проектах мне нужно было самостоятельно запускать fullstack-приложение на пустом VPS. Это означало собрать рабочее production-окружение с нуля: подготовить Ubuntu, установить Node.js и базу данных, настроить процессы, домены, SSL и reverse proxy.

Типовая схема включала frontend на порту 3000 и backend на порту 1337. Снаружи пользователь должен был видеть домен с HTTPS, а внутри сервер должен был корректно проксировать запросы, держать процессы живыми и давать возможность быстро смотреть логи.

Что усложняло запуск на сервере

На новом VPS нужно было согласовать версии Node.js, права доступа, переменные окружения, firewall, swap, подключение к базе и настройки Nginx.

Если backend не запускался, я проверял рабочую директорию, переменные окружения и базу. Проксирование проверял отдельно, после локального ответа приложения.

Как собиралась production-инфраструктура

Я разделял frontend и backend как отдельные production-процессы под управлением PM2. Для каждого процесса проверялись переменные окружения, рабочая директория, команда запуска и логи. Nginx отвечал за публичный вход, SSL, домены и reverse proxy к нужным портам.

Отдельно настраивались DNS, Certbot, HTTPS, редиректы, firewall и базовые системные вещи вроде swap. Я проверял каждый слой отдельно: отвечает ли процесс локально, работает ли прокси, открывается ли домен, корректен ли сертификат, видит ли backend базу.

  • Frontend и backend запускались как отдельные production-процессы
  • Nginx связывал домен с внутренними сервисами
  • Проверка шла по слоям: процесс, прокси, домен, SSL

Как проверялась работа production

Если домен не открывался, проверял DNS и Nginx. Если не отвечал API, смотрел процесс PM2, переменные окружения и доступ к базе. При проблемах с HTTPS проверял сертификат, блок конфигурации домена и редиректы.

Менял настройки после того, как находил участок со сбоем. Это помогало отделить ошибку приложения от ошибки прокси или домена.

Локальный ответ приложения, ответ Nginx и доступность домена проверялись отдельно.

Что получил проект после настройки

В результате приложения получали рабочую production-инфраструктуру на VPS: процессы запускались через PM2, Nginx проксировал запросы, домены работали по HTTPS, а базовую диагностику можно было выполнять через логи, локальные проверки и состояние сервисов.

Как поддерживать это окружение

Для этих проектов хватало PM2 и Nginx. При поддержке я использовал одну и ту же последовательность: локальный ответ приложения, прокси, домен и HTTPS.

Проверяемые детали и ограничения

Материалы проекта

Работающий интерфейс проекта после развёртывания production-окружения
Изображение из проекта.

Что можно проверить по материалу

  • На изображении показан интерфейс проекта, обслуживаемого настроенной инфраструктурой.
  • В кейсе перечислены проверяемые слои развёртывания: Nginx, процессы frontend и backend, PostgreSQL, SSL и переменные окружения.
  • Отдельно описана последовательная проверка домена, reverse proxy и внутренних портов.

Что осталось за рамками

IP-адреса, переменные окружения, конфигурации сервера и доступ к мониторингу не публикуются из соображений безопасности. Изображение подтверждает работающий интерфейс, а не внутреннюю конфигурацию VPS.

Стек

Ubuntu 22.04
Node.js
Nginx
PM2
Strapi
PostgreSQL
SSL

Проекты, где применялся этот опыт

Подробнее о проектах: задача, интерфейс и выполненная работа.

Связанные услуги

Если у вас похожая задача, посмотрите состав работ и порядок оценки.

Перенос WordPress-сайта на VPS: файлы, база, HTTPS и редиректы