3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер

3 горизонтальные линии, бургер
Удалить все
ЗАГРУЗКА ...

Содержание



    Запуск телеграм бота на сервере (деплой бота на сервере)

    Часы
    19.01.2024
    /
    Часы
    05.10.2025
    /
    Часы
    6 минут
    Глазик
    5169
    Сердечки
    3
    Соединённые точки
    0
    Соединённые точки
    2
    Соединённые точки
    1
    Теги:
    Бот
    Сервер

    Вступление

    В данной статье я хотел бы раскрыть тему о том, как можно сделать твоего телеграмм бота видимым и доступным для других, то есть его размещение и обслуживание на сервере. Чтобы его мог пощупать не только ты, но любой другой желающий.
    Я покажу пример развертывания тг бота на VPS сервере beget. Ибо я хорошо с ним знаком. Но, данная статья универсальна для любого хостинг провайдера.
    И без дальнейших рассусоливаний давай приступим к развертыванию.

    Подготовка сервера к работе, его развертывание

    Итак, ты имеешь готовый проект с ботом, он у тебя запускается и работает. Но ты не можешь вечно оставлять компьютер (и соответственно программу) включенной. Значит, разворачиваем на других компьютерах, которые не жалко. Да, я про сервера, хостинг и VPS.
    И вот так, мы с тобой подошли к вопросу, как развернуть сервер. И где его достать.
    • Нажми на вкладку облако.
    • Потом на кнопку создать.
    • Настрой сервер под себя.

    Добавление проекта на сервер

    После того как сервер был создан и настроен под вас. Нужно будет зайти на него. Для этого копируем внешний IP, и в терминале вводим
    ssh root@YOUR_IP
    У тебя спросят пароль. Его высылают обычно по зарегистрированной почте. Введи его.
    Обновляем пакеты и внешние зависимости
    sudo apt update sudo apt upgrade
    Переходим в домашний каталог
    cd /home

    Перенос проекта

    Используя Git

    Клонируем проект
    git clone https://github/YourUserName/YourRepoName
    И соответственно
    git pull
    Для обновления проекта

    Без Git

    Создаём пустую директорию
    mkdir NewProject
    И переходим туда
    cd NewProject
    Для переноса файлов проекта, используй файловый менеджер хостинга или, как я, используй команду scp
    scp -r /path/to/project root@YOur_IP:/path/where/to/save
    Где /path/to/project папка проекта на локальной машины. Где YOur_IP это IP выданный хостингом Где /path/where/to/save это место куда будет перемещена папка проекта, на сервере

    Настройка виртуального окружения python

    Если ты не используешь виртуальное окружение при создании ботов (что конечно же нежелательно), то можешь смело пропускать данный шаг.
    После того как все файлы проекта были перенесены. Мы должны будем убедиться в том чтобы все необходимые пакеты для python были установлены.
    Для этого, создадим виртуальное окружение
    python -m venv .venv
    Активируем его
    source .venv/bin/activate

    Установка зависимостей

    Без файла зависимостей

    Если файла зависимостей нет, то есть тот файл, который генерирует команда pip freeze. То придётся самолично прописать все пакеты, которые необходимо установить.
    pip install aiogram pip install OTHERE_PACKAGES
    и так далее

    С файлом зависимости

    Если файл зависимости есть. А он создаётся командой
    pip freeze > req.txt
    Зависимости, таким образом устанавливаются очень просто
    pip install -r req.txt

    Проверка работоспособности сервера и бота

    Для того чтобы проверить, всё ли работает. Проделаем те же шаги как и при разработке на локальной машине
    Заходим в директорию проекта на сервере
    ssh root@You.Ip.add.es cd /YOur/project/Folder
    Активируем виртуальное окружение(если есть)
    source .venv/bin/activate
    Запускаем бота
    python main.py
    Открываем телеграмм и даём команды боту. Если отвечает, что же, значит всё получилось. Если нет перепройди предыдущие шаги и убедись в правильности введённых команд.

    Автоматизируем обновление проекта

    Небольшое отступление по теме

    Всё работает, и в принципе, можно было бы на этом и остановиться. Но сервер имеет такое свойство как перезагружаться время от времени. Да и вам тоже придётся его перезагружать по тем или иным причинам.
    То есть, при каждой такой загрузке вам придётся заново заходить на сервер, активировать виртуальное окружение (если есть) и запускать бота, опять.
    Мы люди занятые, ведь так? Зачем нам помнить и проверять постоянно, работает бот или нет ? Лучше данную задачу, как и любую другую, автоматизировать.

    Создание необходимых файлов

    Для этого мы создадим systemd службу, демона, как я его называю, и скрипт который данная служба будет запускать.
    Создадим службу.
    touch /lib/systemd/system/bot_name.service
    Отредактируем файл
    vim /lib/systemd/system/bot_name.service
    Вставь туда следующий код
    [Unit] Description=Telegram bot After=syslog.target After=network.target [Service] Type=simple WorkingDirectory=/Where/Your/Bot/Project/Exist/ ExecStart=/Where/Your/Bot/Project/Exist/start.sh RestartSec=60 Restart=always [Install] WantedBy=multi-user.target
    Где /Where/Your/Bot/Project/Exist/ всего лишь директория твоего проекта
    Где /Where/Your/Bot/Project/Exist/start.sh всего лишь местоположение скрипта запуска бота
    Дальше создадим скрипт запуска бота. Обычно я его создаю в директории самого проекта заранее.
    touch start.sh
    Добавим ему бит исполнения. Дадим ему возможность быть запущенным из терминала.
    chmod +x start.sh
    Добавим следующий контент в скрипт
    #!/usr/bin/env bash cd /Where/Your/Bot/Project/Exist/ source .venv/bin/activate python main.py

    Инициализация службы и её запуск

    Осталось выполнить буквально пару команд
    systemctl enable bot_name.service systemctl start bot_name.service
    Из вывода данных команд непонятно, успешно ли мы запустилась служба или нет. Чтобы проверить и узнать наверняка выполни команду
    systemctl status bot_name.service
    Если active(running). Значит служба успешно запущена Также можно увидеть что служба enabled. Это значит, что при каждом запуске или перезагрузке системы, данная служба будет запущена автоматически.

    Подготовка проекта к длительной поддержке

    Многие, в том числе я раньше, недооценивали (недооценивают) данный шаг. До тех пор, пока лично не столкнёшься с монотонностью и повторяемостью шагов, которых можно было бы избежать, если всё правильно сделать и настроить.
    Вот, типичные шаги, каждого, кто собирается обновить своего тг бота.
    • Зайти на сервер (ssh или специализированная админка хостинга)
    • Перейти к директории проекта.
    • Перенести новые файлы с локального компьютера на сервер (ssh-move или файловый менеджер хостинга)
    • Убедиться что ничего не сломал
    • Убедиться что всё перенёс
    • Обнаружить что нужно ещё что-то улучшить и повторить процесс заново.
    И это без баз данных. Да и некоторые шаги я объединил в один. Так, например, перенос файлов на сервер, та ещё задачка. Она становиться ещё более опасной если не делать резервное копирование (бэкапы). Не дай бог вам ошибиться и что-нибудь затереть. Всё пропало.
    Для себя, я выделил три основные проблемы, когда обновлял проекты:
    • Проблема доступа
    • Проблема проверки
    • Проблема резервного копирования
    Первая проблема решается при помощи ssh клиента и сгенерированных RSA паролей. Вторую и третью можно решить внедрив Git в проект.

    Настройка входа через SSH без пароля

    Конечно, web интерфейсы удобны, красивы, функциональны, но чёрт, их очень тяжело автоматизировать. Конечно, можно было бы использовать selenium, но зачем, если можно написать обычный python или bash/powershel скрипт.
    Идеальным решением данной проблемы является ssh доступ к серверу. Я на 100% уверен, что ты, мой читатель, знаешь что такое терминал и как с ним работать.
    По дефолту, чтобы получить доступ к серверу потребуется пароль. Но вводить его каждый раз это тот ещё гемор. Поэтому, настроим доступ к серверу через сгенерированную пару ключей. Один на локальную машину, другой на сервер.
    Генерируем пару.
    ssh-keygen -t rsa
    Когда просят ввести имя ключа, вводим полный путь до него + имя ключа
    Когда просят ввести пароль и другое, ничего не вводи.
    После генерации ключа перейди к директории где был сгенерирован ключ.
    cd ~/dima/.ssh/
    Копируем публичный ключ на целевой сервер.
    ssh-copy-id -i my_id.pub root@111.11.11.11
    Теперь вы должны войти в систему без ввода пароля.

    Внедрение технологии Git. Его практическое использование.

    Две проблемы я объединил в одну, ибо их обоих можно решить интегрировав одну единственную технологию контроля версий, да я про git.
    Данный инструмент берёт на себя отслеживание всех изменённых, удалённых и добавленных файлов. Также, в случае необходимости откатить изменения, просто выполни соответствующую команду.
    Я не собираюсь, рассказывать все особенности работы с git-ом. Но я покажу тот минимум, что необходим для легкого и быстрого обновления проекта. Спойлер, буквально 3 команды.

    Инициализация Git на локальной, домашней машине/компьютере.

    Сначала инициализируем пустой репозиторий.
    git init
    Создаём репозиторий на github, копируем ссылку на страницу репозитория.
    Добавляем скопированную ссылку
    git remote add REF_NAME https://github/YourUserName/YourRepoName
    Где REF_NAME это любое название вашей ссылки
    Добавляем файлы.
    git add .
    Создаём первый коммит
    git commit -m “Your comment”
    Отправляем изменения на сервер, в первый раз
    git push -u REF_NAME BRANCH_NAME
    Где REF_NAME это название твоей ссылки, которую ты обозвал 3 шага назад.
    Где BRANCH_NAME это имя ветки, по умолчанию это master

    Клонирование Git репозитория уже на сервере

    После входа на сервер. Остаётся запомнить 3 команды.
    Для создания локальной копии на сервере
    git clone https://github/YourUserName/YourRepoName
    Заходим в директорию локальной копии репозитория
    cd YourRepoName
    Для обновления проекта
    git pull

    Вывод

    Вот таким вот образом я разворачиваю своих телеграмм ботов на серверах. Все мои боты, которые я публикую здесь, имеют свой github репозиторий и в этих репозиториях вы сможете найти соответствующие примеры скриптов запуска и службы (демоны).
    Надеюсь данная статья помогла тебе развернуть твоего первого телеграмм бота. Пока.

    Не забудь поделиться, лайкнуть и оставить комментарий)

    Комментарии

    (1)

    captcha
    Отправить
    ЗАГРУЗКА ...
    Часы
    23 октября 2025 г. 10:41
    Человек
    Дима
    Привет
    Все ответы (1)
    Ответить
    ЗАГРУЗКА ...

    Другое

    Похожие статьи


    Как я создал телеграм бота вопросов. Или квиз бота | Тим зе Вебмастер

    Часы
    16.11.2023
    /
    Часы
    05.10.2025
    Глазик
    5771
    Сердечки
    4
    Соединённые точки
    1
    Соединённые точки
    0
    Соединённые точки
    1
    Готовый телеграм бот, на aiogram. С готовыми исходниками и скриптами бота на питоне. Данный тг бот уже запущен и готов, ищи TimQuizzer

    Виды телеграм ботов, какими бывают и их классификация

    Часы
    22.12.2024
    /
    Часы
    02.10.2025
    Глазик
    977
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Тут ты узнаешь классификацию телеграмм ботов и возможности которыми они обладают

    Как сделать и подключить токен для телеграм бота, его настройка

    Часы
    14.01.2025
    /
    Часы
    02.10.2025
    Глазик
    2949
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    1
    В этой статье ты узнаешь как я делаю токены для тг ботов, как их подключаю, где храню его и как настраиваю его.

    Использованные термины


    Релевантные вопросы