Как выложить Telegram-бота на Node.js (Telegraf)
Бот на Node.js собран: Telegraf отвечает на команды, npm start поднимает проект, локально всё работает. Дальше встаёт привычный вопрос — где его держать, чтобы он отвечал круглосуточно, а не только пока открыт ваш ноутбук. Обычный ответ — арендовать VPS, поставить Node.js на сервер, настроить процесс-менеджер вроде pm2 и автозапуск. Для небольшого бота это несоразмерно много.
Бота на Telegraf или node-telegram-bot-api можно выложить и без сервера. Разберём, как подготовить проект на Node.js и опубликовать его так, чтобы он работал сам, без вашего компьютера и без ручной настройки.
Проверьте package.json и команду запуска
Убедитесь, что в package.json перечислены зависимости (Telegraf или node-telegram-bot-api и всё остальное) и задан скрипт запуска — обычно start. Папку node_modules в архив класть не нужно: платформа установит зависимости по package.json и package-lock.json сама.
Вынесите токен бота в переменную окружения
Токен от BotFather не оставляйте в коде и не коммитьте в репозиторий. Читайте его из process.env, например process.env.BOT_TOKEN. При настройке проекта Netrun спросит это значение и подставит его как секрет снаружи кода.
Оставьте режим long polling
Для простого бота проще запускать его в режиме long polling — bot.launch() в Telegraf делает именно это. Тогда не нужно поднимать веб-сервер, настраивать вебхук и открывать порт. Это самый беспроблемный режим для хостинга, и Telegraf использует его по умолчанию.
Уберите жёстко прописанные пути и порты
Если бот попутно поднимает веб-часть, порт берите из переменной окружения, а не из жёсткого числа. Для чистого бота на long polling порт не нужен вовсе — главное не оставлять в коде путей и значений, завязанных на ваш компьютер.
Загрузите проект в Netrun
Загрузите код ZIP-архивом или импортом из GitHub-репозитория — приватный тоже подойдёт. Netrun определит, что это Node.js, установит зависимости и запустит бота. Выбирать сервер, версию Node.js или процесс-менеджер вручную не нужно.
Запустите и проверьте бота
После сборки бот стартует и начинает отвечать в Telegram. Логи видны в кабинете в реальном времени — если бот молчит, причина будет понятна. На бесплатном тарифе бот работает круглосуточно: входящие сообщения поддерживают его активным, и компьютер для этого включать не нужно.
Боту на Node.js не нужен ни pm2 на арендованном VPS, ни постоянно включённый ноутбук. Загрузите код в Netrun, вынесите токен в секрет — и бот на Telegraf будет отвечать круглосуточно. Один такой бот работает на бесплатном тарифе без оплаты.
Частые вопросы
Где выложить Telegram-бота на Node.js
На бесплатном тарифе Netrun можно держать одного бота на Node.js без оплаты. Платформа определяет язык по package.json, устанавливает зависимости и запускает бота, который работает круглосуточно на серверах Netrun, а не на вашем компьютере.
Подойдёт ли это для Telegraf и node-telegram-bot-api
Да. Netrun запускает любой Node.js-проект независимо от библиотеки. Главное — указать зависимости и скрипт запуска в package.json, вынести токен в переменную окружения и оставить режим long polling.
Нужно ли настраивать pm2 и автозапуск
Нет. Поддержанием процесса и перезапуском при сбое занимается платформа. Ставить pm2, настраивать systemd или автозапуск, как на VPS, не требуется.
Класть ли node_modules в архив
Нет. Папку node_modules загружать не нужно — Netrun установит зависимости по package.json и package-lock.json при сборке. Это делает архив меньше и сборку чище.
Будет ли бот работать при выключенном компьютере
Да. После публикации бот живёт на серверах Netrun, поэтому отвечает независимо от того, включён ли ваш ноутбук, и перезапускается сам, если упадёт.