Сайты и приложения
Как выложить Node.js приложение в интернет
Коротко
Чтобы выложить 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 вы загружаете код, а сборку, запуск и перезапуск берем на себя. Ниже — по шагам.
Подготовьте проект#
В package.json должны быть зависимости и команда запуска приложения. Секреты — ключи, токены, строку подключения к базе — читайте из переменных окружения, а не из кода.
Загрузите код#
ZIP-архивом или импортом из GitHub-репозитория, в том числе приватного. Папку node_modules класть не нужно.
Netrun соберет и запустит#
Платформа определит Node.js, установит зависимости и запустит приложение — Dockerfile и настройка процесса не нужны.
Укажите секреты, если они нужны#
Когда Netrun спросит про переменные окружения, впишите значения ключей и токенов. Они хранятся отдельно от кода.
Получите ссылку#
Для веб-сервиса 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 проект не засыпает.