PaaS Инфраструктура в РФ 🇷🇺

Деплой Node.js приложений

Автоматический деплой Node.js приложений из Git: Express, NestJS, Fastify. Серверы в РФ, оплата в рублях, авто-SSL и свой домен. Бесплатный старт.

Автодеплой из Git

Платформа сама скачает код с Репозитория, соберет проект и запустит его.

Готовая среда

Не нужно настраивать Nginx или Linux. Под капотом надежные серверы RelaxDev.

Свои домены и SSL

Привяжите свой домен в 1 клик, а платформа автоматически выпустит Let's Encrypt SSL.

RelaxDev запускает Node.js-приложения прямо из вашего репозитория: платформа сама определяет стек, ставит зависимости, собирает проект и поднимает его в изолированном Docker-контейнере. Не нужно арендовать VPS, настраивать Nginx, systemd и обновлять сертификаты руками — сборка, запуск, HTTPS и мониторинг идут из коробки.

Инфраструктура физически расположена в России, оплата в рублях по карте российского банка, договор с юрлицом. Это важно для проектов, которые после ухода Heroku и ограничений Vercel остались без предсказуемого хостинга: здесь не нужен зарубежный платёжный метод и нет риска, что аккаунт заблокируют по географии.

Как задеплоить Node.js?

1. Подключите репозиторий

Авторизуйтесь через GitHub, GitLab, GitFlic или GitVerse и выберите репозиторий с приложением. Укажите ветку — по умолчанию main. Приватные репозитории поддерживаются: доступ выдаётся через OAuth, пароль от git-аккаунта платформе не передаётся.

2. Проверьте автоопределение стека

Платформа читает package.json и сама подбирает команды сборки и запуска. Если проект нестандартный (монорепозиторий, кастомный бандлер), команды можно переопределить вручную или подложить собственный Dockerfile — он имеет приоритет над автодетектом.

// package.json — что читает автодетект
{
  "scripts": {
    "build": "tsc -p .",
    "start": "node dist/main.js"
  },
  "engines": { "node": ">=20" }
}

3. Добавьте переменные окружения

Секреты, строки подключения к БД и токены задаются в разделе «Переменные окружения» в формате ключ — значение. Они шифруются и подставляются в контейнер при запуске, в репозиторий не попадают. Ключевая переменная — PORT: приложение обязано слушать именно её, а не захардкоженный порт.

// Express — правильно
const port = process.env.PORT || 3000;
app.listen(port, '0.0.0.0');

// NestJS — правильно
await app.listen(process.env.PORT ?? 3000, '0.0.0.0');

4. Запустите деплой и привяжите домен

После первой сборки проект доступен на техническом адресе платформы. Свой домен подключается в настройках: добавляете A-запись у регистратора, платформа сама выпускает и продлевает SSL-сертификат Let's Encrypt. Включённый автодеплой пересобирает проект на каждый push в выбранную ветку.

Сравнение платформ

ПлатформаСтатусОплата
HerokuНе работает с РФОплата картой РФ невозможна
RenderДоступен частичноОплата только в валюте
RailwayДоступен частичноНужна зарубежная карта
RelaxDevСерверы в РФРубли, есть бесплатный тариф

Технически Render и Railway остаются рабочими вариантами, вопрос в оплате и юрисдикции: зарубежная карта, валютный биллинг, отсутствие договора с российским юрлицом. Если это блокирует — RelaxDev закрывает тот же сценарий (git push → рабочий адрес) с рублёвой оплатой и инфраструктурой внутри страны.

Частые ошибки и решения

Приложение собралось, но адрес отдаёт 502

Почти всегда причина в порте: приложение слушает захардкоженный 3000 вместо process.env.PORT, либо слушает 127.0.0.1 вместо 0.0.0.0. Внутри контейнера localhost недоступен снаружи — укажите хост 0.0.0.0.

Сборка падает на npm install

Проверьте, что package-lock.json закоммичен и соответствует package.json. Расхождение ломает npm ci. Если зависимость требует нативной компиляции, укажите версию Node в engines — автодетект её учитывает.

Can't reach database server при сборке

Возникает, когда сборка обращается к БД (миграции Prisma, генерация страниц). Включите опцию сборки с доступом к базе в настройках проекта либо перенесите миграции в команду запуска, а не сборки.

FAQ

Нужно ли писать Dockerfile для Node.js проекта?

Нет. Платформа определяет стек по package.json и собирает проект автоматически. Dockerfile нужен, только если требуется нестандартная среда — например, системные библиотеки для обработки изображений.

Какие версии Node.js поддерживаются?

Актуальные LTS-версии. Нужную версию можно закрепить в поле engines в package.json — сборка её учитывает.

Можно ли запустить WebSocket-приложение?

Да, соединения проксируются с поддержкой WebSocket. Отдельная настройка не требуется, приложение должно слушать тот же порт из переменной PORT.

Что происходит при push в репозиторий?

При включённом автодеплое платформа принимает webhook, собирает новую версию и заменяет контейнер. Если сборка падает, предыдущая рабочая версия остаётся запущенной.

Сколько стоит хостинг Node.js приложения?

Есть бесплатный тариф для старта и небольших проектов. Оплата платных тарифов — в рублях, картой российского банка, для юрлиц доступен договор.