Skip to content

Публикация aiogram бота на VPS

Выбор сервера

В этой статье развернём на сервере бота написанного в предыдущей статье. Демонстрация работы бота @bestserver_calculator_bot

Для запуска aiogram нужен либо выделенный, либо виртуальный сервер с любым linux дистрибутивом.

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

Для начала достаточно будет конфигурации с 1Гб оперативной памяти и 1 ядром процессора. Можете арендовать самый дешёвый у Timeweb или поискать в каталоге

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

В данной статье для примера приобретём виртуальный сервер в Timeweb Cloud. Операционную систему использовать Ubuntu 24, так как этот дистрибутив один из самых популярных.

Переходим на сайт Timeweb и регистрируем аккаунт. Закидываем на баланс желаемую сумму, не обязательно оплачивать сразу за целый месяц.

Затем переходим на страницу создания виртуального сервера и нажимаем кнопку СоздатьПервый шаг приобретения сервера

Операционную систему выбираем самую свежую UbuntuВыбор операционной системы

Регион выбираем Санкт-Петербург. В нём доступна конфигурация Standart. Выбираем её и затем самый дешёвый тариф с 1 ядром процессора и 1 ГБ оперативной памяти. Выбор региона и конфигурации

В разделе Сеть оставляем Публичный IPv4. В теории если ваш провайдер поддерживает v6, то от него можно отказаться, но выходит за рамки данной статьи. Настройка параметров сети

Бэкапы можем отключить если хотим сэкономить немного денег. Но вообще желательно их делать если на сервере есть ценные данные. Отключение бэкаоп

Тут же можно указать ключ для подключения к ssh, но это так же выходит за рамки данной статьи.

Имя сервера указываем на свой вкус и нажимаем кнопку Заказать. Имя сервера

После создания данные для подключения к нему можно будет скопировать на странице сервера. Данные для подключения к серверу

Подключение к серверу

Чтобы подключиться к серверу нужно знать ip адрес сервера, логи и пароль. Эти данные можно получить в панели управления после покупки сервера либо некоторые хостеры присылают их на электронную почту.

Открывает терминал. На Windows это cmd. Удобнее всего открыть его сразу в PyCharm сочетанием Ctrl+F12, но можно и отельное окно запустить.

В терминале вводим следующую команду и нажимаем Enter. IP адрес заменяем на свой.

shell
ssh root@213.171.8.164

На вопрос о сохранение ключа отвечаем yes и Enter. Процесс подключения к серверу по ssh

Затем вводим пароль или вставляем пароль и снова нажимаем Enter. После успешного ввода можем выполнять команды на нашем сервере. Успешное подключение к серверу по ssh

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

Первым делом рекомендуется обновить на сервере все кэш программ и все уже установленные программы. Для это вбиваем в терминал команды

shell
apt update
apt upgrade

Затем устанавливаем Python

shell
apt install python3-venv

Затем создаём папку для нашего бота и переходим в неё

shell
mkdir -p /www/calculator-bot
cd /www/calculator-bot

Создаём виртуальное окружение

shell
python3 -m venv .venv

Проверяем что питон установился следующей командой.

shell
./.venv/bin/python --version

Должна отобразиться версия питона. Для работы aiogram она должна быть не меньше 3.8.

Загрузка файлов бота

Файлы на сервер можно удобно копировать используя встроенный в PyCharm плагин Remote Server (но он доступен только в платной версии). Либо установить бесплатный плагин Source Synchronizer Так же можно настроить автодеплой через git репозиторий, но всё это выходи за рамки данной статьи.

Мы поступим проще, и скопируем файлы через ssh. (Выполнять нужно в новом терминале на своём компьютере)

shell
scp ./* root@213.171.8.164:/www/calculator-bot

# или можно скопритьва все файлы из папки
scp ./* root@213.171.8.164:/www/calculator-bot

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

В ранее открытом ранее терминале (на сервере) выполняем команду для установки зависимостей

shell
./.venv/bin/pip install -r requirements.txt

Проверка работы бота

Теперь всё готово. Запускаем командой

shell
./.venv/bin/python3 main.py

Проверяем что бот в телеграме работает: Демонстрация работы бота

Настройка автозапуска

Бот запущенный просто в терминале перестанет работать после отключения от сервера. Красивым способом будет настроить systemd для запуска нашего бота. Это позволит ему продолжить работу после перезагрузки сервера. Советчиков рекомендующих использовать nohup или screen слушать не стоит.

Открываем текстовый редактор:

shell
nano /etc/systemd/system/calculator-bot.service

Вставляем туда следующий текст:

systemd
[Unit]
Description=Calculator Bot Service
After=network.target

[Service]
Restart=always
Type=simple
WorkingDirectory=/www/calculator-bot
ExecStart=/www/calculator-bot/.venv/bin/python3 main.py

[Install]
WantedBy=multi-user.target

Сохраняем (Ctrl+S) и выходим из редактора (Ctrl+X).

Активируем и запускаем сервис:

shell
systemctl enable calculator-bot.service
service calculator-bot start

Проверить что сервис работает можно командой:

shell
service calculator-bot status

Повышение безопасности

Запуск бота на сервер от имени root пользователя не является безопасным. Взлом бота даст злоумышленнику полный доступ к серверу. Поэтому создадим нового пользователя с ограниченными правами и будем запускать бота от его имени.

Создадим нового пользователя на сервере командой:

shell
useradd calculator-bot

Сделаем его владельцем папки с ботом:

shell
chown calculator-bot /www/calculator-bot

Откроем файл сервиса на редактирование:

shell
nano /etc/systemd/system/calculator-bot.service

И в раздел [Service] добавим строку

systemd
[Service]
User=calculator-bot

Обновим конфигурацию сервиса и перезапустим его:

shell
systemctl daemon-reload
service calculator-bot restart

Всё, мы молодцы 😃