В эпиграфе матрос из «Гамлета» доставляет письмо Горацио: сначала убеждается, что нашёл нужного человека. В Telegram мы тоже видим имя получателя и ждём ответа. Только у бота вся приёмная может помещаться на вашем ноутбуке. Закрыли крышку — приёмная легла спать, не сняв вывески.
Бесплатный хостинг для Telegram-бота выбирают по режиму его работы. Для личной пробы часто хватает собственного компьютера. Для небольшого бота, который отвечает на входящие сообщения и не хранит данные на своём диске, можно рассмотреть Render Free с webhook. Если бот должен сам писать по расписанию, отвечать без задержек и надёжно помнить записи, эти требования нужно проверить отдельно: бесплатный веб-сервис Render засыпает.
Возьмём дачного помощника. Сегодня он выдаёт список вещей по запросу. Завтра вы захотите напоминаний о поливе, и в требованиях появится срок. Фикус способен пережить многие наши затеи, но разбираться в расписании бесплатного хостинга ему уже лишнее.
Бесплатный хостинг для Telegram-бота: что происходит без ноутбука
Вы показываете семье бота: «Что взять?» — и в ответ приходят перчатки, семена, ключ от сарая. Отлично, теперь у дачи есть справочная. Вечером ноутбук закрывается. Утром брат стоит у запертого сарая, пишет боту и получает тишину. Справочная существует, даже аватарка на месте. Окно выдачи ключей закрыто изнутри вашим сном.
В Telegram осталась учётная запись бота. Программа на компьютере остановилась или ушла в сон вместе с ним. Хостинг нужен, чтобы эта программа могла работать независимо от открытой крышки вашего ноутбука.
Хостинг — место, где выполняется программа. В одном варианте она дежурит постоянно, в другом запускается после входящего запроса. Поэтому бесплатное размещение начинаем выбирать с вопроса: когда семье нужен этот помощник?
Если пока есть только имя от BotFather и задумка, начните с создания своего Telegram-бота. Для уже написанного учебного бота на Python есть отдельный разбор локального запуска. Здесь выбираем условия размещения; команды для Python-проекта в настройки Go переносить не нужно.
Три вопроса перед выбором сервера
Первый: кто начинает разговор? Справочник отвечает на сообщение. Напоминатель должен сам появиться в восемь утра: ему нужен работающий планировщик, который запускает дело к сроку. Спящий веб-сервис от одного наступления восьми часов не просыпается. Надеяться, что его поднимет тревога за рассаду, пока рано.
Второй: сколько можно ждать? Дома за завтраком минутная пауза переносится легко. У закрытых ворот под дождём за ту же минуту успевает закончиться дачный сезон. Запишите своё условие: «Смотрим список заранее, можем подождать» или «Спрашиваем на месте, нужен быстрый ответ».
Третий: что бот должен помнить? Список «ключ, перчатки, семена» в исходниках снова появится после запуска. Отметка «сегодня полил», оставленная только в памяти процесса, исчезнет. Бот проснётся отдохнувшим и совершенно невиновным: про помидоры он впервые слышит. Важным записям нужно постоянное хранилище.
| Ваша задача | Бесплатный вариант для начала | Что проверить |
|---|---|---|
| Проверить команды самому | Свой компьютер, пока программа запущена | Процесс работает, компьютер не спит |
| Давать небольшой список по запросу | Render Free, HTTP-обработчик и webhook | Устраивает задержка после простоя, важные данные не лежат на временном диске |
| Самому напоминать о поливе к сроку | Для пробы — работающий в это время компьютер | Есть действующий планировщик и процесс доступен к сроку |
| Вести историю поливов или записи семьи | Размещение вместе с постоянным хранилищем | История переживает рестарт, понятны условия и резервная копия |
Для нашего первого списка решение может звучать так: «Оставляю бота на компьютере, проверяю команды вечером вместе с семьёй». Для следующей пробы: «Выбираю Render Free, готов ждать после простоя, личных записей бот не хранит». Уже получилось требование к размещению, с которым можно сравнивать предложения сервисов.
Выберите ближайший шаг вместе с ИИ
Для начала хватит рассказа о своём боте. Откройте бесплатный чат DeepSeek и вставьте запрос. Если уже работаете в ChatGPT или Claude, можно обратиться к ним.
У меня Telegram-бот для семейной дачи: выдаёт список вещей по запросу.
Помоги выбрать между компьютером и бесплатным размещением.
Сначала спроси по одному: какая у меня система, что уже запущено,
на чём написан бот, сколько можно ждать и что нужно сохранять.
Потом помоги выполнить один ближайший шаг. Объясняй, что открыть,
куда вставить текст или команду, какого результата ждать. Жди ответа.
Если для Render нужен переход с polling на HTTP, сначала объясни его
на моём проекте и предложи отдельную пробу; не считай её уже готовой.
Токены и пароли останутся у меня. Ошибки покажу без них и личных данных:
разбирай конкретную причину, давай одну проверку. Условия тарифа
и спорные команды сверяй с официальной документацией сервиса.
Если не уверен, скажи; без поиска попроси нужный фрагмент справки.
На первом шаге получится короткое решение о размещении. К нему можно вернуться с файлами своего проекта без секретов. Для команд с curl ниже попросите помощника сначала определить подходящий терминал и объяснить, как задать переменные у себя. Отдельно уточните, какое действие только читает состояние, а какое подключает адрес: setWebhook уже меняет доставку сообщений.
Что означает Free у Render
Render предлагает Free для проб и личных хобби-проектов. На 22 октября 2026 года официальная справка описывает такие условия бесплатного веб-сервиса:
- после 15 минут без входящего трафика сервис останавливается;
- новый HTTP-запрос будит его, запуск занимает примерно минуту;
- workspace получает 750 бесплатных часов работы в календарный месяц; несколько веб-сервисов используют общий запас;
- при исчерпании часов бесплатные веб-сервисы приостанавливаются до следующего месяца;
- локальные изменения файлов теряются при перезапуске, новом развёртывании и засыпании; постоянный диск к Free подключить нельзя.
Для такого размещения берём ответчик без состояния: получил команду, выдал готовый список. После сна ему нечего вспоминать. Семейный журнал в файле SQLite рядом с программой сюда уже не вписывается. При остановке сервис потеряет изменения на временном диске — даже если накануне старательно всё записывал.
Бесплатная база Render Postgres тоже имеет срок: она истекает через 30 дней. Это отдельная проба базы, а не бессрочный способ хранить семейный архив. Бесплатный Key Value хранит данные в памяти и теряет их при рестарте.
Кроме часов есть включённые объёмы исходящего трафика и минут сборки. При их превышении с добавленным способом оплаты возможны начисления. Без него Render приостанавливает бесплатные сервисы из-за трафика либо новые сборки из-за минут сборки. Перед созданием сервиса посмотрите условия своего workspace в Billing и убедитесь, что выбрали именно Free для самого сервиса.
Слово «бесплатный» относится к конкретному набору ресурсов. У часов сервиса, сборок, хранилища и внешних API могут быть разные условия. Если бот обращается к платной нейросети, её запросы от размещения бесплатными не становятся. Нашему ответчику с готовым списком такая нейросеть для каждого сообщения вообще не нужна.
Как сообщения попадают в программу
Telegram поддерживает два основных способа получения обновлений. При polling программа сама запрашивает новые события. Ей нужен работающий процесс. При webhook Telegram отправляет событие на HTTPS-адрес обработчика. Эти способы одновременно не используют — это указано в FAQ Telegram.
Для Render Free выбираем второй путь. Входящее сообщение вызывает HTTP-запрос, который может разбудить сервис. Перенести туда прежний бесконечный polling и считать задачу решённой нельзя: исходящие запросы к Telegram не равны входящему трафику, по которому Render определяет простой. Потребуется именно HTTP-обработчик.
Здесь нужен уже готовый Go HTTP-проект: он принимает события Telegram по выбранному пути, например /telegram, и умеет отвечать боту. Если у вас пока только локальный polling-проект, сохраните сегодняшний результат и отдельно поставьте задачу на этот переход. Обычный веб-сервер с надписью Hello World ещё не умеет выдавать семье список вещей.
Документированный путь для готового Go HTTP-бота
Если по условиям выше Render Free подходит, дальше можно пройти такой маршрут со своим проектом. Понадобятся существующий бот, его токен, собственный репозиторий с HTTP-программой и доступ к Render. Для выбора размещения регистрироваться заранее не требуется.
- Проверьте, что программа слушает
0.0.0.0и порт из переменной окруженияPORT. Это требование Render к веб-сервисам. Адресlocalhostпредназначен для локального доступа и для этого размещения не годится. - В кабинете Render выберите New → Web Service, подключите нужный репозиторий и ветку. Для языка выберите Go.
- Укажите команды сборки и запуска своего проекта. В официальном примере Go это
go build -tags netgo -ldflags '-s -w' -o appи./app. Если основной пакет лежит вcmd/bot, команда вашего проекта будет другой: берите её из его инструкции. - Выберите план вычислений Free. Токен бота и секрет webhook добавьте через переменные окружения. Их названия должны совпадать с теми, которые читает программа. Токен не кладут в репозиторий и не вставляют в запрос к ИИ.
- Запустите развёртывание и посмотрите журнал. После успешного запуска у сервиса появится адрес вида
https://имя-сервиса.onrender.com. Render предоставляет HTTPS; свой домен для этой пробы не нужен.
Проверьте адрес и путь обработчика по инструкции проекта. Зелёный статус развёртывания подтверждает запуск сервиса. Главная страница показывает, что веб-сервер отвечает. А для семьи всё это пока бесполезные хорошие новости: им нужен список в чате. До него остался ещё переход от Telegram к вашему обработчику.
Для webhook программе также следует проверять заголовок X-Telegram-Bot-Api-Secret-Token. Секрет вы задаёте сами и одинаково настраиваете в приложении и при подключении webhook.
Подключите адрес и проверьте паузу
Вызов setWebhook сообщает Telegram HTTPS-адрес обработчика. Например, в своей оболочке с заранее заданными переменными BOT_TOKEN, WEBHOOK_URL и WEBHOOK_SECRET можно выполнить:
curl --request POST "https://api.telegram.org/bot${BOT_TOKEN}/setWebhook" \
--data-urlencode "url=${WEBHOOK_URL}" \
--data-urlencode "secret_token=${WEBHOOK_SECRET}"
WEBHOOK_URL — полный адрес вместе с путём обработчика, например https://имя-сервиса.onrender.com/telegram. Токен бота и секрет webhook — разные значения. Секрет webhook допускает латинские буквы, цифры, _ и -; его длина — от 1 до 256 знаков.
Состояние подключения проверяют так:
curl "https://api.telegram.org/bot${BOT_TOKEN}/getWebhookInfo"
В результате посмотрите url, число ожидающих событий pending_update_count и last_error_message, если поле есть. У старой ошибки проверьте время last_error_date: это последняя записанная проблема, не обязательно нынешняя. Методы и поля описаны в Telegram Bot API. Успех setWebhook подтверждает установку адреса; ответ бота проверяют отдельно.
После подключения напишите боту свою команду: должен прийти именно нужный список. Затем оставьте сервис без входящих запросов дольше 15 минут и повторите сообщение. Запишите задержку после простоя. Всё это время не открывайте его веб-страницу для подстраховки: такой запрос способен разбудить сервис раньше Telegram, и проверка получится другой.
Если сообщение после сна не привело к ответу, посмотрите журнал сервиса и ошибки webhook. Не считайте любой сбой обычной минутной паузой: путь обработчика, проверка секрета и сама обработка тоже могут быть настроены неверно.
Отдельно проверьте состояние после перезапуска. Список должен снова выдаваться, а значимые записи — сохраняться в предусмотренном для них хранилище. Если вчера бот помнил все поливы, а сегодня начал жизнь с чистого листа, назначать его семейным летописцем рано. Сначала выясните, куда записываются данные и как их восстановить.
На выходе сохраните короткую запись: «Размещение — …; после простоя ответ пришёл за …; важные данные лежат …». Это уже результат вашей проверки. Если испытание ещё не проводили, так и напишите: «Выбрал вариант, паузу и восстановление предстоит проверить». Эти два состояния удобно различать до того, как вы позовёте остальных.
Если в разговоре с помощником вырастет система управления дачным хозяйством на сорок функций, вернитесь к одному списку и одной семье. А если напоминания и история действительно нужны, откройте сценарий Telegram-бота: вместе с ними меняются требования к размещению.
Частые вопросы
Telegram сам бесплатно разместит программу после BotFather?
BotFather создаёт учётную запись. Логику ответов выполняет ваша запущенная программа. Без неё бот может существовать в поиске Telegram и не отвечать.
Подойдёт ли обычный бесплатный статический сайт?
Статический сайт раздаёт готовые файлы. Для описанного Go-проекта нужен веб-сервис, который выполняет программу и принимает события. Выбирайте тип сервиса по тому, как устроен ваш проект.
Можно ли хранить SQLite рядом с ботом на Render Free?
Для значимых данных этот путь не подходит: файловая система временная, после остановки или развёртывания изменения теряются. Оставьте такой проект локальным для пробы либо сначала выберите постоянное хранилище и проверьте восстановление данных.
Если бот не ответил, надо сразу менять хостинг?
Сначала посмотрите состояние процесса, webhook и журнал ошибок. Возможно, дело в пути обработчика или токене, а после простоя — в пробуждении. Последовательность проверки есть в статье почему Telegram-бот не отвечает. Переезд с той же ошибкой просто даст молчащему боту новый адрес.
Нужен ли сервер, чтобы попробовать одну семейную команду?
Можно оставить уже работающий проект на своём компьютере на время пробы. Важно договориться, когда он доступен, и не рассчитывать на спящий компьютер как на дежурного по поливу.
Начните с короткого решения: «Пробую на компьютере» или «Переношу готовый HTTP-справочник на Render Free и проверяю ответ после сна». Уже можно делать следующий шаг без бесконечного выбора серверов. А когда дойдёте до напоминаний, добавьте к решению срок и постоянное хранение записей. Тогда лейке не придётся стоять у кровати ноутбука и ждать, когда он соизволит вспомнить про фикус.