Деплой TypeScript приложения на VPS: пошаговое руководство

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Деплой TypeScript приложения на VPS: пошаговое руководство

Вы написали крутое приложение на TypeScript. Локально всё работает идеально, но пора показать проект миру. Деплой на VPS (Virtual Private Server) — это логичный и гибкий шаг. В отличие от облачных платформ, VPS даёт полный контроль над окружением.

В этой статье мы разберём пошаговый процесс деплоя TypeScript-приложения на VPS. Мы будем использовать Node.js, PM2 для управления процессами и Nginx в качестве обратного прокси. Все примеры — на TypeScript.

Предполагается, что у вас есть базовые навыки работы с Linux и SSH.

1. Подготовка сервера и подключение

Первый шаг — аренда VPS (DigitalOcean, Vultr, Timeweb и т.д.) и подключение по SSH.

ssh root@ваш_ip_сервера

Сразу обновим пакеты и установим необходимые утилиты:

apt update && apt upgrade -y
apt install curl git nginx -y

Установим Node.js (рекомендуем LTS версию):

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs

Проверим версии:

node -v
npm -v

2. Клонирование репозитория и сборка TypeScript

Теперь клонируем ваш проект. Для примера будем использовать простое Express-приложение на TypeScript:

git clone https://github.com/ваш_username/ваш_репозиторий.git
cd ваш_репозиторий

Установим зависимости:

npm install

TypeScript нужно скомпилировать в JavaScript. Обычно это делается командой:

npm run build

В package.json это должно быть прописано как:

{
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js"
  }
}

Проверьте, что в папке dist появились скомпилированные файлы.

3. Установка и настройка PM2

PM2 — это менеджер процессов для Node.js. Он перезапускает приложение при падении, поддерживает логи и кластеризацию.

Установим PM2 глобально:

npm install pm2 -g

Запустим приложение:

pm2 start dist/index.js --name "my-typescript-app"

Сохраним список процессов, чтобы PM2 восстанавливал их после перезагрузки сервера:

pm2 save
pm2 startup

PM2 выведет команду, которую нужно выполнить (обычно это systemctl enable pm2-root). Скопируйте и выполните её.

Проверить статус можно командой:

pm2 status

4. Настройка Nginx как обратного прокси

Nginx будет принимать запросы на 80 порту (HTTP) и перенаправлять их на ваше приложение (например, на порт 3000).

Создадим конфигурационный файл:

nano /etc/nginx/sites-available/my-typescript-app

Вставим следующий код (измените server_name на ваш домен или IP):

server {
    listen 80;
    server_name ваш_домен.ru www.ваш_домен.ru;

    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;
    }
}

Активируем сайт:

ln -s /etc/nginx/sites-available/my-typescript-app /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Теперь ваше приложение доступно по IP или домену.

5. Настройка HTTPS (SSL) с Certbot

Без HTTPS сейчас никуда. Используем Let's Encrypt и Certbot.

Установим Certbot:

apt install certbot python3-certbot-nginx -y

Запустим получение сертификата:

certbot --nginx -d ваш_домен.ru -d www.ваш_домен.ru

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

Проверьте автообновление:

certbot renew --dry-run

6. Автоматизация деплоя (опционально)

Чтобы не заходить на сервер каждый раз, можно настроить простой скрипт деплоя. Например, через GitHub Actions или bash-скрипт на сервере.

Создайте файл deploy.sh:

#!/bin/bash
cd /root/ваш_репозиторий
git pull origin main
npm install
npm run build
pm2 restart my-typescript-app

Дайте права на выполнение:

chmod +x deploy.sh

Теперь достаточно выполнить ./deploy.sh для обновления приложения.

Заключение

Мы разобрали полный цикл деплоя TypeScript-приложения на VPS: от настройки сервера до HTTPS. Основные шаги: подготовка сервера, сборка TypeScript, запуск через PM2, настройка Nginx и SSL.

Этот подход подходит для большинства Node.js проектов. Главные плюсы — полный контроль и низкая стоимость по сравнению с облачными платформами.

Если у вас возникли вопросы — пишите в комментариях. Удачи в деплое!

Блоги

Рекомендаций по книгам