Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud
Эпоха домашнего хостинга, когда боты запускались на личном ноутбуке с нестабильным Wi-Fi или на бесплатных тарифах Heroku (мир их праху), прошла. Современный стандарт разработки требует отказоустойчивости, аптайма 99.9% и профессионального управления ресурсами.
Однако многие разработчики до сих пор боятся облачных платформ (AWS, Google Cloud, Yandex Cloud), считая их либо слишком сложными, либо неоправданно дорогими для пет-проектов.
В этой статье мы разрушим этот миф. Мы развернем Python-бота на инфраструктуре Yandex Compute Cloud так, как это делают DevOps-инженеры: с использованием SSH-ключей, виртуальных окружений, демонизации процессов через systemd и, самое главное, оптимизируем бюджет так, что содержание сервера обойдется дешевле чашки кофе в месяц.
Архитектура и выбор железа
Первая ошибка новичка - покупка избыточных мощностей. Текстовый бот на aiogram - это легковесное приложение. 99% времени оно находится в режиме IDLE (ожидание), потребляя около 0.1% CPU. Арендовать для этого выделенный сервер - все равно что покупать грузовик для перевозки пакета с продуктами.
Мы будем использовать Yandex Cloud. Почему?
- Российская юрисдикция и оплата: Никаких проблем с картами и блокировками.
- Гибкость конфигурации: Мы можем собрать сервер-конструктор под свои нужды.
- Прерываемые машины (Preemptible VMs): Киллер-фича для экономии.
Настройка виртуальной машины (ВМ)
Заходим на console.cloud.yandex.ru. Если просит- создаем платежный аккаунт (нужна карта, спишут и вернут 11 рублей).
1) В главном меню нажимаем кнопку "Создать ресурс".
2) Выбираем "Виртуальная машина".
Идем далее.
ОС (Операционная система): Выбираем Ubuntu 24.04 LTS. Почему: LTS (Long Term Support) версии поддерживаются 5 лет. Это индустриальный стандарт. Ubuntu имеет самое большое комьюнити — любой ответ на вопрос гуглится за секунды.
Платформа и vCPU: Переходим на вкладку Shared-core (Поделенное ядро).
- Платформа: Intel Ice Lake (современная архитектура, отличная производительность).
- vCPU: 2 ядра.
- Гарантированная доля vCPU: Выбираем 20%.Теория: Это технология берстинга (burstable). Ваш бот гарантированно получает 20% мощности ядра постоянно. Но когда приходит сообщение и нужно обработать код, облако на короткое время дает вам все 100%. Для событийно-ориентированных приложений (ботов) это идеальная модель.
- RAM: 1 или 2 ГБ. Для aiogram хватит и 512 МБ, но 1 ГБ - комфортный запас для системы и логов.
Диск (Storage): Меняем SSD на HDD и ставим 10–13 ГБ.
- Нюанс: SSD быстрее, но для бота, который раз в секунду пишет строчку в лог, скорость IOPS не важна. HDD в облаке Яндекса работают достаточно быстро для наших задач, а стоят копейки.
Дилемма "Прерываемости" (Preemptible): В настройках блоке ресурсов есть галочка "Прерываемая".
ВКЛ (Preemptible): Сервер стоит ~600 ₽/мес. Но Яндекс принудительно перезагружает его раз в 24 часа.
ВЫКЛ (Standard): Сервер стоит ~1400 ₽/мес (при 20% vCPU). Работает без остановок годами.
Рекомендация: Для production-решений (бизнес-боты) галочку не ставим. Для пет-проектов и экспериментов ставим ВКЛ, но обязательно настраиваем автозапуск.
Безопасность доступа: SSH-ключи
Облака не любят пароли. Пароль можно сбрутить (подобрать), его можно перехватить. Профессионалы используют асимметричное шифрование.
Генерация пары ключей
Вам нужна пара:
- Приватный ключ (Private Key): Хранится у вас на компьютере. Никому нельзя показывать. Это ваш «паспорт».
- Публичный ключ (Public Key): Загружается на сервер Яндекса. Это замок, который открывается только вашим паспортом.
Нажимаем на "Добавить ключ".
И выбираем "Сгенерировать".
Важно: Если вы работаете на Windows, убедитесь, что ваш приватный ключ (без расширения public) лежит в папке C:\Users\ВашUser\.ssh\ и имеет правильные права доступа (доступен только владельцу), иначе SSH-клиент откажется его использовать из соображений безопасности.
Даем имя нашей виртуальной машине и запускаем.
Инициализация среды
Сервер создан. Мы получили IP-адрес.
Нажимаем WIN+R и откройте powershell.
Подключаемся (если ключ лежит стандартно):
Если ключ лежит нестандартно, добавляем флаг -i путь_к_ключу. Например:
Если увидели зеленую строку user@...:~$ — поздравляю, вы внутри своего сервера! Вы - хакер =)
Настройка окружения
Теперь мы управляем сервером командами. Копируйте их по одной и вставляйте в консоль (правой кнопкой мыши), нажимая Enter.
Обновляем сервер
Ставим инструменты Python
Создаем домик для бота
Ставим библиотеки
Заливаем код
Самый простой способ создать файл прямо на сервере - редактор nano.
Пишем:
Откроется пустое поле. Скопируйте код вашего бота на компьютере.
Вставьте его в консоль (Правая кнопка мыши).
Сохраняем:
- Ctrl + O, затем Enter.
- Ctrl + X (Выход).
Проверка: Запустите бота вручную:
Если в Телеграме бот ответил - всё супер. Нажмите Ctrl + C, чтобы остановить его. Сейчас мы сделаем так, чтобы он работал сам.
Бессмертие (Systemd)
Чтобы бот работал вечно и сам запускался после перезагрузки сервера (особенно если вы выбрали Прерываемый тип), настроим Systemd.
Создаем файл службы:
Вставляем этот текст (он универсальный для нашей настройки):
Сохраняем (Ctrl+O, Enter, Ctrl+X).
И запускаем команды по очереди:
Всё! Теперь вы можете закрыть PowerShell, выключить компьютер и уйти спать. Бот работает в облаке. Вы только что развернули профессиональный продакшн-сервер за 600 рублей. Добро пожаловать в клуб!