forked from NikolaySimakov/Shop-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
deploy_bot.sh
69 lines (55 loc) · 2.22 KB
/
deploy_bot.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
# Функция для проверки наличия команды
command_exists() {
type "$1" &> /dev/null ;
}
# Установка jq, если он не установлен
if ! command_exists jq ; then
sudo apt install -y jq
fi
# Читаем файл конфигурации
# Читаем файл конфигурации
BOT_TOKEN=$(jq -r '.BOT_TOKEN' setup_config.json)
DOMAIN_OR_IP=$(jq -r '.DOMAIN_OR_IP' setup_config.json)
ADMINS=$(jq -r '.ADMINS | join(",")' setup_config.json)
# Устанавливаем режим noninteractive для установки пакетов
export DEBIAN_FRONTEND=noninteractive
# Обновляем пакеты
sudo apt update
sudo apt upgrade -y
# Устанавливаем необходимые пакеты
sudo apt install -y python3 python3-pip python3-venv nginx certbot
# Создаем виртуальное окружение и устанавливаем зависимости
python3 -m venv crabtash
source crabtash/bin/activate
pip install -r requirements.txt
# Обновляем конфигурацию бота
sed -i "s/BOT_TOKEN = .*/BOT_TOKEN = '$BOT_TOKEN'/g" ./data/config.py
sed -i "s/WEBHOOK_HOST = .*/WEBHOOK_HOST = 'https:\/\/$DOMAIN_OR_IP'/g" ./data/config.py
sed -i "s/ADMINS = .*/ADMINS = [$ADMINS]/g" ./data/config.py
# Получаем SSL-сертификат
sudo certbot certonly --standalone --preferred-challenges http --non-interactive --agree-tos --email [email protected] -d $DOMAIN_OR_IP
# Настраиваем Nginx
sudo tee /etc/nginx/sites-available/default <<EOF
server {
listen 80;
server_name $DOMAIN_OR_IP;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name $DOMAIN_OR_IP;
ssl_certificate /etc/letsencrypt/live/$DOMAIN_OR_IP/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$DOMAIN_OR_IP/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo systemctl restart nginx
# Запускаем бота
python3 app.py