Деплой 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 приложения?
Есть бесплатный тариф для старта и небольших проектов. Оплата платных тарифов — в рублях, картой российского банка, для юрлиц доступен договор.