Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Эпоха домашнего хостинга, когда боты запускались на личном ноутбуке с нестабильным Wi-Fi или на бесплатных тарифах Heroku (мир их праху), прошла. Современный стандарт разработки требует отказоустойчивости, аптайма 99.9% и профессионального управления ресурсами.

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Однако многие разработчики до сих пор боятся облачных платформ (AWS, Google Cloud, Yandex Cloud), считая их либо слишком сложными, либо неоправданно дорогими для пет-проектов.

В этой статье мы разрушим этот миф. Мы развернем Python-бота на инфраструктуре Yandex Compute Cloud так, как это делают DevOps-инженеры: с использованием SSH-ключей, виртуальных окружений, демонизации процессов через systemd и, самое главное, оптимизируем бюджет так, что содержание сервера обойдется дешевле чашки кофе в месяц.

Архитектура и выбор железа

Первая ошибка новичка - покупка избыточных мощностей. Текстовый бот на aiogram - это легковесное приложение. 99% времени оно находится в режиме IDLE (ожидание), потребляя около 0.1% CPU. Арендовать для этого выделенный сервер - все равно что покупать грузовик для перевозки пакета с продуктами.

Мы будем использовать Yandex Cloud. Почему?

  1. Российская юрисдикция и оплата: Никаких проблем с картами и блокировками.
  2. Гибкость конфигурации: Мы можем собрать сервер-конструктор под свои нужды.
  3. Прерываемые машины (Preemptible VMs): Киллер-фича для экономии.

Настройка виртуальной машины (ВМ)

Заходим на console.cloud.yandex.ru. Если просит- создаем платежный аккаунт (нужна карта, спишут и вернут 11 рублей).

1) В главном меню нажимаем кнопку "Создать ресурс".

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

2) Выбираем "Виртуальная машина".

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Идем далее.

ОС (Операционная система): Выбираем Ubuntu 24.04 LTS. Почему: LTS (Long Term Support) версии поддерживаются 5 лет. Это индустриальный стандарт. Ubuntu имеет самое большое комьюнити — любой ответ на вопрос гуглится за секунды.

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Платформа и vCPU: Переходим на вкладку Shared-core (Поделенное ядро).

  • Платформа: Intel Ice Lake (современная архитектура, отличная производительность).
  • vCPU: 2 ядра.
  • Гарантированная доля vCPU: Выбираем 20%.Теория: Это технология берстинга (burstable). Ваш бот гарантированно получает 20% мощности ядра постоянно. Но когда приходит сообщение и нужно обработать код, облако на короткое время дает вам все 100%. Для событийно-ориентированных приложений (ботов) это идеальная модель.
  • RAM: 1 или 2 ГБ. Для aiogram хватит и 512 МБ, но 1 ГБ - комфортный запас для системы и логов.
Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Диск (Storage): Меняем SSD на HDD и ставим 10–13 ГБ.

  • Нюанс: SSD быстрее, но для бота, который раз в секунду пишет строчку в лог, скорость IOPS не важна. HDD в облаке Яндекса работают достаточно быстро для наших задач, а стоят копейки.
Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Дилемма "Прерываемости" (Preemptible): В настройках блоке ресурсов есть галочка "Прерываемая".

ВКЛ (Preemptible): Сервер стоит ~600 ₽/мес. Но Яндекс принудительно перезагружает его раз в 24 часа.

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

ВЫКЛ (Standard): Сервер стоит ~1400 ₽/мес (при 20% vCPU). Работает без остановок годами.

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Рекомендация: Для production-решений (бизнес-боты) галочку не ставим. Для пет-проектов и экспериментов ставим ВКЛ, но обязательно настраиваем автозапуск.

Безопасность доступа: SSH-ключи

Облака не любят пароли. Пароль можно сбрутить (подобрать), его можно перехватить. Профессионалы используют асимметричное шифрование.

Генерация пары ключей

Вам нужна пара:

  1. Приватный ключ (Private Key): Хранится у вас на компьютере. Никому нельзя показывать. Это ваш «паспорт».
  2. Публичный ключ (Public Key): Загружается на сервер Яндекса. Это замок, который открывается только вашим паспортом.

Нажимаем на "Добавить ключ".

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

И выбираем "Сгенерировать".

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Важно: Если вы работаете на Windows, убедитесь, что ваш приватный ключ (без расширения public) лежит в папке C:\Users\ВашUser\.ssh\ и имеет правильные права доступа (доступен только владельцу), иначе SSH-клиент откажется его использовать из соображений безопасности.

Даем имя нашей виртуальной машине и запускаем.

Инициализация среды

Сервер создан. Мы получили IP-адрес.

Нажимаем WIN+R и откройте powershell.

Подключаемся (если ключ лежит стандартно):

ssh user@IP_ADDRESS

Если ключ лежит нестандартно, добавляем флаг -i путь_к_ключу. Например:

ssh -i "C:\Users\user\.ssh\ssh-key-1111111111" user@IP_ADDRESS

Если увидели зеленую строку user@...:~$ — поздравляю, вы внутри своего сервера! Вы - хакер =)

Как запустить телеграм-бота на сервере: бессмертный код за копейки в Yandex Cloud

Настройка окружения

Теперь мы управляем сервером командами. Копируйте их по одной и вставляйте в консоль (правой кнопкой мыши), нажимая Enter.

Обновляем сервер

sudo apt update && sudo apt upgrade -y

Ставим инструменты Python

sudo apt install python3-pip python3-venv -y

Создаем домик для бота

mkdir bot cd bot python3 -m venv venv source venv/bin/activate

Ставим библиотеки

pip install aiogram aiohttp

Заливаем код

Самый простой способ создать файл прямо на сервере - редактор nano.

Пишем:

nano bot.py

Откроется пустое поле. Скопируйте код вашего бота на компьютере.

Вставьте его в консоль (Правая кнопка мыши).

Сохраняем:

  • Ctrl + O, затем Enter.
  • Ctrl + X (Выход).

Проверка: Запустите бота вручную:

python bot.py

Если в Телеграме бот ответил - всё супер. Нажмите Ctrl + C, чтобы остановить его. Сейчас мы сделаем так, чтобы он работал сам.

Бессмертие (Systemd)

Чтобы бот работал вечно и сам запускался после перезагрузки сервера (особенно если вы выбрали Прерываемый тип), настроим Systemd.

Создаем файл службы:

sudo nano /etc/systemd/system/bot.service

Вставляем этот текст (он универсальный для нашей настройки):

[Unit] Description=My Telegram Bot After=network.target [Service] Type=simple User=user WorkingDirectory=/home/user/bot # Внимание: путь к python внутри папки venv! ExecStart=/home/user/bot/venv/bin/python bot.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target

Сохраняем (Ctrl+O, Enter, Ctrl+X).

И запускаем команды по очереди:

sudo systemctl daemon-reload sudo systemctl enable bot sudo systemctl start bot

Всё! Теперь вы можете закрыть PowerShell, выключить компьютер и уйти спать. Бот работает в облаке. Вы только что развернули профессиональный продакшн-сервер за 600 рублей. Добро пожаловать в клуб!

А в моём уютном ТГ-канале - я очень хорошо и понятно пишу про нейросети. Теория, практика, готовые наборы топовых промптов. Подписывайтесь, гарантированно будет полезно!

8
2 комментария