Home » Быстрый старт: Как развернуть свой VPS под Docker с автодеплоем
Быстрый старт: Как развернуть свой VPS под Docker с автодеплоем

Быстрый старт: Как развернуть свой VPS под Docker с автодеплоем

Если ты когда-нибудь пытался запустить свой проект на Node.js в продакшене, то знаешь, что просто node app.js на домашнем компе — это не вариант. Нужно что-то понадежнее, чтобы твой сервис не падал от любого чиха, а пользователи не жаловались на тормоза. В этой статье я расскажу, как быстро и правильно развернуть Node.js-приложение на VPS, используя PM2 для управления процессами и NGINX как обратный прокси. Всё максимально практично и без воды — только то, что реально работает.

Зачем вообще заморачиваться с VPS, PM2 и NGINX?

  • VPS — это твой личный сервер в облаке, где ты хозяин. Никаких ограничений, как на шаред-хостинге.
  • Node.js — идеален для современных веб-приложений, но сам по себе не умеет работать с https, балансировкой и автозапуском после падения.
  • PM2 — менеджер процессов для Node.js, который перезапустит твой сервис, если он упал, и поможет с логами.
  • NGINX — быстрый и надёжный веб-сервер, который умеет проксировать запросы, раздавать статику и работать с SSL.

Всё вместе — это классическая схема для любого серьёзного проекта. Так работают и стартапы, и крупные компании.

Как это работает? Архитектура и алгоритмы

Схема простая, но эффективная:

  1. Пользователь заходит на твой сайт по домену (например, mycoolapp.com).
  2. Запрос попадает на NGINX, который слушает 80/443 порты (HTTP/HTTPS).
  3. NGINX решает, что делать с запросом: отдать статику или проксировать на Node.js.
  4. Node.js-приложение крутится в фоне под управлением PM2 — если оно падает, PM2 его поднимает.
  5. Ответ возвращается пользователю через NGINX.

Вот простая схема:

Пользователь → [NGINX] → [PM2 → Node.js] → [База данных, если есть]

Где взять VPS?

Если у тебя ещё нет VPS, можешь взять тут: https://arenda-server.cloud/vps — быстро, просто, без лишней бюрократии.

Установка и настройка: шаг за шагом

1. Подключаемся к VPS

Обычно после заказа VPS тебе приходит IP, логин (обычно root) и пароль. Подключаемся по SSH:

ssh root@your_vps_ip

2. Обновляем систему

apt update && apt upgrade -y

(Для CentOS вместо apt используй yum или dnf)

3. Ставим Node.js

Рекомендую ставить через nvm — это удобно и гибко:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
node -v
npm -v

Если нужен другой способ — смотри официальную инструкцию.

4. Устанавливаем PM2

npm install -g pm2

Проверь, что всё ок:

pm2 --version

5. Копируем проект на сервер

  • Через git clone (если проект на GitHub/GitLab)
  • Через scp или rsync (если локально)
git clone https://github.com/yourname/yourproject.git
cd yourproject
npm install

6. Запускаем приложение через PM2

pm2 start app.js --name myapp

Где app.js — твой главный файл.

Чтобы процесс запускался после ребута сервера:

pm2 startup
pm2 save

7. Устанавливаем и настраиваем NGINX

apt install nginx -y

Проверь, что работает:

systemctl status nginx

Теперь настраиваем проксирование. Открываем конфиг:

nano /etc/nginx/sites-available/default

Пример конфига для Node.js (замени mycoolapp.com и порт на свой):

server {
    listen 80;
    server_name mycoolapp.com www.mycoolapp.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Перезапускаем NGINX:

systemctl reload nginx

8. (Бонус) Настраиваем HTTPS через Let’s Encrypt

apt install certbot python3-certbot-nginx -y
certbot --nginx

Следуй инструкциям — сертификат будет установлен автоматически.

Практические советы и лайфхаки

  • Держи логи под контролем: pm2 logs покажет, что происходит с приложением.
  • Для деплоя можно использовать PM2 deploy или Capistrano (для продвинутых).
  • Не запускай Node.js на 80/443 портах напрямую — это небезопасно и неудобно.
  • Ограничь доступ к серверу по SSH (например, через fail2ban или смену порта).
  • Регулярно обновляй Node.js, NGINX и саму систему.

Кейсы: что бывает, если сделать всё правильно и неправильно

Позитивный кейс

Миша поднял свой стартап на VPS по этой схеме. Сайт выдержал 10k пользователей в день, не падал, SSL работал, а обновления выкатывались за пару минут. PM2 спасал от падений, а NGINX — от DDoS и кривых запросов.

Негативный кейс

Петя запускал Node.js напрямую на 80 порту, без NGINX и PM2. Сайт падал при каждом баге, SSL не работал, поисковики ругались на небезопасное соединение, а после перезагрузки VPS всё приходилось запускать вручную.

Частые ошибки новичков и мифы

  • Ошибка: “Зачем мне NGINX, если Node.js и так умеет слушать порт?”
    Реальность: NGINX нужен для SSL, балансировки, отдачи статики и безопасности.
  • Ошибка: “PM2 — это только для больших проектов”.
    Реальность: Даже для маленьких pet-проектов PM2 спасёт от лишних нервов.
  • Миф: “VPS — это сложно и дорого”.
    Реальность: Сейчас VPS стоит как пара чашек кофе в месяц, а настроить его проще, чем кажется.
  • Ошибка: Не сохранять конфиг PM2 (pm2 save), из-за чего после ребута всё падает.
  • Ошибка: Не закрывать лишние порты на сервере — открывай только то, что реально нужно.

Похожие решения и альтернативы

  • forever — альтернатива PM2, но менее удобная и функциональная (forever на GitHub).
  • systemd — можно запускать Node.js как сервис, но это сложнее для новичков.
  • Caddy — альтернатива NGINX, умеет сам получать SSL, но менее популярен (caddyserver.com).
  • Docker — для контейнеризации, если хочется ещё больше гибкости (но это отдельная тема).

Заключение: почему стоит выбрать такую схему?

Если тебе нужен быстрый, надёжный и гибкий сервер для Node.js — VPS + PM2 + NGINX это проверенное временем решение. Ты получаешь:

  • Полный контроль над сервером и приложением
  • Автоматический перезапуск и логи через PM2
  • Безопасность и SSL через NGINX
  • Гибкость для масштабирования и обновлений

Не бойся пробовать — даже если что-то не получится с первого раза, опыт быстро приходит. А если нужна быстрая аренда VPS — вот ссылка. Удачи в продакшене!

Полезные ссылки

Если остались вопросы — пиши в комментариях, помогу чем смогу!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked