!!! Осторожно, скрипты могут затереть ваши файлы!!!
Предполагается установка на вновь созданный сервер!
Полный цикл работ по размещению бота на Aiogram3 c webhook, SSL на VPS/VDS.
Проверено на ОС серверов Timeweb, Рег.ру: Ubuntu 20.04, Ubuntu 22.04.
-
Подключаемся к серверу
ssh [email protected]
и выполняем последовательно все команды. -
Скачиваем первый скрипт, выполним команду:
wget https://raw.githubusercontent.com/Marat2010/Aiogram3/master/Scripts/1_start.sh
-
Делаем скрипт исполняемым:
chmod +x 1_start.sh
-
Запускаем скрипт (под root-ом):
./1_start.sh
- Установка пакетов: vsftpd, mc, python3-venv
- Создание пользователя для проекта.
- Установка переменных окружения: PROJECT_USER
- Копирование скриптов в каталог пользователя
- Смена пароля root-а
-
Заходим под созданным пользователем:
# su 'PROJECT_USER'
$ cd ~
-
Запускаем второй скрипт (под пользователем):
Scripts/2_venv.sh
- Создание проекта
- Установка и активация вирт. окружения
- Копирование файлов
- Установка Aiogram 3.2.0
- Установка переменных окружения: BOT_TOKEN, DOMAIN_IP, DOMAIN_NAME, PROJECT_NAME
- Подготовка самоподписанных SSL сертификатов для домена и IP
- Запуск сервиса, службы (SYSTEMD) бота
Перезайти
$ exit
,# su 'PROJECT_USER'
,$ cd ~
Или перезагрузиться. -
Запускаем третий скрипт (под пользователем):
Scripts/3_nginx.sh
- Установка пакета Nginx
- Настройка Nginx
- Копирование примеров страниц сайта
- Организация веб доступа к папке проекта
- Установка переменных окружения: EMAIL_SSL (для cron-а)
- Запись переменных окружения в файл '.env' проекта
- Перезапуск Nginx
Необходимо убедится, что наш веб сервер, доступен по имени домена: http://DOMAIN_NAME
Перезайти под root-ом: $ exit, $ exit, # ssh [email protected]
Или перезагрузиться. -
Запускаем четвертый скрипт (под root-ом) :
Scripts/4_cert.sh
- Установка пакета acme-nginx.
- Установка бесплатных сертификатов SSL (Let's Encrypt) для домена, через acme-nginx
- Настройка автоматического обновления сертификатов
- Перезапуск Nginx
Всё, проверяем бота! )
Для использования самоподписанного сертификата без Nginx, необходимо в main.py установить в True:
>SELF_SSL = True
После остановить Nginx, и перезапустить службу Aiogram3_bot:
sudo systemctl stop nginx.service
sudo systemctl daemon-reload
sudo systemctl restart Aiogram3_bot.service
Можно проверять бота! )