Сайты и приложения

Как выложить Node.js приложение в интернет

· 4 мин чтения

Коротко

Чтобы выложить Node.js приложение в интернет, укажите в package.json зависимости и команду запуска, слушайте порт из переменной PORT и загрузите код без node_modules. Netrun определит Node.js, установит зависимости, запустит приложение и для веб-сервиса выдаст ссылку с HTTPS — pm2, nginx и Dockerfile не нужны. Ключи и токены задаются в секретах, а при сбое приложение перезапускается само.

  • В package.json Node.js-приложения должны быть перечислены зависимости и указана команда запуска.
  • Веб-сервис на Node.js должен слушать адрес 0.0.0.0 и порт из process.env.PORT.
  • Fastify по умолчанию слушает только 127.0.0.1, поэтому для работы в интернете ему нужно явно указать host: "0.0.0.0".
  • Менеджер процессов pm2 в Netrun не нужен: при падении платформа перезапускает приложение сама.
  • Ключи, токены и строку подключения к базе Netrun хранит зашифрованными и передает приложению через переменные окружения.

Запуск Node.js-сервиса по классике — это аренда VPS, установка Node, менеджер процессов вроде pm2, обратный прокси через nginx и сертификат для HTTPS. Много ручной настройки ради одного приложения.

В Netrun вы загружаете код, а сборку, запуск и перезапуск берем на себя. Ниже — по шагам.

  1. Подготовьте проект#

    В package.json должны быть зависимости и команда запуска приложения. Секреты — ключи, токены, строку подключения к базе — читайте из переменных окружения, а не из кода.

  2. Загрузите код#

    ZIP-архивом или импортом из GitHub-репозитория, в том числе приватного. Папку node_modules класть не нужно.

  3. Netrun соберет и запустит#

    Платформа определит Node.js, установит зависимости и запустит приложение — Dockerfile и настройка процесса не нужны.

  4. Укажите секреты, если они нужны#

    Когда Netrun спросит про переменные окружения, впишите значения ключей и токенов. Они хранятся отдельно от кода.

  5. Получите ссылку#

    Для веб-сервиса Netrun выдаст публичный адрес с HTTPS. Логи и статус видны в кабинете, а при сбое приложение перезапустится автоматически.

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

Частые вопросы

Как правильно слушать порт в Express и Fastify?

В Express достаточно app.listen(process.env.PORT || 3000): по умолчанию он слушает все адреса. В Fastify адрес нужно указать явно: fastify.listen({ port: Number(process.env.PORT), host: "0.0.0.0" }), иначе приложение будет доступно только изнутри сервера.

Нужен ли pm2 или systemd?

Нет. Перезапуск при падении платформа берет на себя, а логи приложения видны в кабинете. Достаточно обычной команды запуска, например node index.js, в скрипте start.

Подойдет ли Netrun для приложения на TypeScript?

Да, если в package.json есть скрипт сборки, который компилирует TypeScript, и команда запуска готового кода. Проверьте, что проект собирается у вас локально той же командой: ошибки сборки в Netrun видны в логах в кабинете.

Можно ли запустить на Node.js Telegram-бота?

Да, ботов на telegraf или grammY Netrun запускает как фоновый процесс без публичной ссылки. На бесплатном тарифе бот работает ограниченное время, а круглосуточно — на тарифе Pro.

Почему сервис медленно отвечает после паузы?

На бесплатном тарифе веб-сервис засыпает без запросов и просыпается при первом обращении, поэтому первый ответ после паузы занимает несколько секунд. На тарифе Pro проект не засыпает.

Запустите свой проект

Загрузите код, ответьте на пару вопросов — и получите рабочую ссылку. Есть бесплатный тариф

Попробовать Netrun
Все статьи блога