Короткий ответ: backend на Node.js должен иметь package.json, команду npm start, слушать порт из process.env.PORT и не зависеть от локальных путей вашего компьютера. На хостинге обычно выполняют npm install, затем запускают процесс командой из package.json
Запросы «как запустить бек на node js на хостинге» и «node js как развернуть для сайта» появляются, когда локально все уже работает на localhost:3000, но непонятно, как превратить это в доступный сайт или API. Главная мысль: хостинг не запускает ваш проект “как в редакторе”, ему нужна понятная команда запуска и корректные настройки окружения
Проверьте локальный проект
В корне проекта должны быть файлы
project/
package.json
server.js
В package.json должна быть команда запуска
{
"scripts": {
"start": "node server.js"
}
}
Проверьте локально
npm install
npm start
Если проект не запускается локально через npm start, на хостинге он почти наверняка тоже не запустится
Используйте process.env.PORT
На локальном компьютере вы можете писать порт 3000, но хостинг часто сам выдает порт через переменную окружения
Правильнее так
const express = require("express");
const app = express();
const port = process.env.PORT || 3000;
app.get("/", (request, response) => {
response.send("Backend работает");
});
app.listen(port, () => {
console.log(`Сервер запущен на порту ${port}`);
});
Если хостинг задаст PORT, приложение использует его. Если вы запускаете локально, будет 3000
Не храните секреты в коде
Пароли, ключи API и строки подключения к базе выносите в переменные окружения
const databaseUrl = process.env.DATABASE_URL;
Локально можно использовать .env, но на хостинге переменные обычно задаются в панели управления или конфигурации сервиса
Подготовьте проект к отправке
Обычно в репозиторий отправляют
- исходный код
package.jsonpackage-lock.json- настройки запуска
Не отправляют
node_modules.envс настоящими секретами- локальные временные файлы
Папку node_modules хостинг восстановит через npm install
Что делает хостинг
Типичный сценарий такой
npm install
npm start
Некоторые платформы позволяют указать build-команду и start-команду отдельно. Для простого Express API build-команда может быть не нужна, а start-команда будет npm start
Как понять, что backend работает
Сделайте health-check маршрут
app.get("/health", (request, response) => {
response.json({ status: "ok" });
});
После деплоя откройте
https://ваш-домен/health
Если видите {"status":"ok"}, процесс запущен и отвечает
Что делать с фоновым процессом
На обычном VPS Node.js-процесс должен жить после закрытия SSH. Для этого используют process manager, systemd, Docker или настройки платформы. Запуск node server.js вручную в SSH-сессии — плохой вариант для продакшена: вы закроете терминал, процесс может остановиться
Для учебного VPS часто используют PM2, но важно понимать принцип: нужен не просто запуск, а управление процессом
Мини-практика
Подготовьте учебный Express-сервер с /health, добавьте npm start, замените порт на process.env.PORT || 3000 и проверьте локально. Затем удалите node_modules, выполните npm install и снова запустите проект
Если после удаления node_modules проект восстановился, он ближе к тому, как будет запускаться на хостинге
Частые ошибки
На хостинге приложение не видит порт Проверьте, что используете process.env.PORT, а не жестко зашитый порт
Проект запускается только из редактора Хостингу нужна команда npm start. Проверьте запуск из терминала
Загрузили node_modules Не нужно переносить зависимости руками. Храните package.json и package-lock.json
Секреты лежат в коде Пароли и ключи должны быть в переменных окружения, а не в публичном репозитории
Что почитать дальше по Node.js
Если нужен общий маршрут по теме, откройте рубрику Node.js. Для соседних задач пригодятся эти разборы:
- Как запустить JS-файл через Node.js: терминал, папка и первый вывод
- Как запустить Node.js в фоне: PM2, nohup и systemd простыми словами
- Как запустить проект Node.js: npm install, package.json и команды start/dev
- Как запустить сервер Node.js: простой HTTP-сервер и Express



