VPS ДЛЯ БОТА
Бот в Telegram — это программа, которая должна быть запущена всегда. Закрыл ноутбук — бот замолчал. Поэтому его переносят на VPS: виртуальный сервер, который работает круглосуточно и принадлежит только тебе.
Хорошая новость: обычному боту нужен самый дешёвый сервер из тех, что вообще продают. Плохая: обычный хостинг для сайтов под бота не годится, и это выясняется уже после оплаты.
Боту не нужен мощный сервер. Ему нужен сервер, который не выключается.
Почему не подходит обычный хостинг
Виртуальный хостинг рассчитан на сайты: пришёл запрос — скрипт отработал и завершился. Бот устроен иначе — это постоянно работающий процесс, который сам держит соединение с Telegram.
- Долгие процессы убивают. Хостинг завершает скрипты, которые работают дольше нескольких минут.
- Исходящие соединения ограничены. Нестандартные порты часто закрыты, а серверы Telegram с хостинга могут быть недоступны.
- Нет прав. Нельзя поставить нужную версию языка, библиотеки и настроить автозапуск.
Мы наступили на это сами. С виртуального хостинга, где лежит этот сайт, запросы к Telegram просто уходили в таймаут: формы заявок не могли отправить уведомление в мессенджер. Пришлось сохранять заявки в базу сайта, а всех ботов держать на отдельном VPS.
Какой сервер нужен
Ориентироваться стоит на память: именно она кончается первой.
Наш собственный сервер с ботами — 2 ГБ памяти, и на нём одновременно работают несколько проектов. Этого хватает, пока не начинаешь обрабатывать на нём видео или держать в памяти большие данные.
На что смотреть кроме памяти
- Расположение. Сервер должен стабильно видеть серверы Telegram. Перед оплатой на месяц возьми почасовой тариф или пробный период и проверь связь.
- IPv6. Полезная страховка: у нас на одном из серверов Telegram стабильно работал именно по IPv6, когда по обычному адресу связь рвалась.
- Тип диска. SSD или NVMe. На старых жёстких дисках база тормозит даже у маленького бота.
- Резервные копии. Снимки сервера по расписанию — услуга за небольшую доплату, которая однажды спасёт проект.
- Оплата. Помесячная без обязательств на год: сервер легко сменить, если что-то не так.
Как запустить бота, чтобы он работал всегда
Главная ошибка новичка — запустить бота командой в окне терминала и закрыть окно. Процесс умирает вместе с окном. Правильный способ — оформить бота как службу: система сама запускает его при старте сервера и перезапускает после падения.
- Подключись к серверу по SSH и создай отдельного пользователя — не работай под root.
- Загрузи код бота в его папку и установи зависимости в отдельное окружение.
- Положи токен бота в файл с переменными окружения, а не в код.
- Создай файл службы: что запускать, от какого пользователя, из какой папки, с перезапуском при сбое.
- Включи автозапуск и запусти службу.
- Проверь журнал службы: в нём видно, с какой ошибкой бот упал, если упал.
После этого бот переживает и перезагрузку сервера, и собственные ошибки. Что ещё настроить на сервере в первый день — в разборе про безопасность аккаунтов.
Бесплатный VPS: бывает ли
Запрос «бесплатный VPS для телеграм-бота» понятен, но вариантов три, и у каждого подвох.
- Пробные периоды. Несколько дней или стартовый баланс. Годятся, чтобы проверить сервер, но не чтобы на нём жить.
- Бесплатные тарифы облаков. Существуют, но требуют карту, имеют жёсткие лимиты и могут быть отключены при простое.
- «Вечно бесплатные» хостинги. Обычно засыпают без запросов, а бот, который уснул, не отвечает пользователю.
Младший платный тариф стоит как пара чашек кофе в месяц и снимает все эти проблемы. Для бота, которым кто-то пользуется, экономить здесь нет смысла. Как выбирать сервер под сайт, а не под бота, описано в основной статье про хостинг.
Мелочи, которые ломают ботов
- Два экземпляра. Один и тот же бот, запущенный и на сервере, и на домашнем компьютере, получает сообщения через раз. Запускай в одном месте.
- Частые перезапуски. Каждое переподключение — событие для Telegram. Десятки рестартов за вечер могут закончиться ограничениями, особенно если бот работает через пользовательские аккаунты.
- Создание ботов пачкой. У BotFather есть ограничение на число новых ботов за короткое время — мы упирались в него после четырёх ботов подряд с одного аккаунта.
- Кончился диск. Журналы растут незаметно. Настрой их ротацию в первый же день.
Частые вопросы
Какой VPS нужен для телеграм-бота?
Простому боту хватает самого младшего тарифа: 1 ядро и 1 ГБ памяти. Боту с базой данных и рассылками лучше взять 2 ГБ памяти и диск от 20 ГБ.
Можно ли запустить телеграм-бота на обычном хостинге?
Обычно нет: виртуальный хостинг завершает долгие процессы, ограничивает исходящие соединения и не даёт настроить автозапуск. Боту нужен VPS.
Бывает ли бесплатный VPS для бота?
Есть пробные периоды и бесплатные тарифы облаков, но с жёсткими лимитами и требованием карты. Для постоянной работы надёжнее младший платный тариф.
Как сделать, чтобы бот работал круглосуточно?
Оформить его как службу системы: она запускает бота при старте сервера и автоматически перезапускает после сбоя. Запуск командой в окне терминала прекращается при закрытии окна.
Без «секретных связок», обычная работа с понятной механикой.
