222 lines
6.1 KiB
Markdown
222 lines
6.1 KiB
Markdown
# Деплой Telegram Tinder Bot на Ubuntu 24.04
|
||
|
||
Это руководство поможет вам настроить и развернуть Telegram Tinder Bot на сервере с Ubuntu 24.04.
|
||
|
||
## Предварительные требования
|
||
|
||
- Сервер с Ubuntu 24.04
|
||
- Права администратора (sudo)
|
||
- Доменное имя (опционально, для SSL)
|
||
|
||
## Шаг 1: Подготовка сервера
|
||
|
||
```bash
|
||
# Обновите систему
|
||
sudo apt update && sudo apt upgrade -y
|
||
|
||
# Установите необходимые пакеты
|
||
sudo apt install -y curl wget git build-essential postgresql postgresql-contrib nginx
|
||
|
||
# Установите Node.js и npm
|
||
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
||
sudo apt install -y nodejs
|
||
|
||
# Проверьте установку
|
||
node --version
|
||
npm --version
|
||
```
|
||
|
||
## Шаг 2: Настройка PostgreSQL
|
||
|
||
```bash
|
||
# Запустите и включите PostgreSQL
|
||
sudo systemctl start postgresql
|
||
sudo systemctl enable postgresql
|
||
|
||
# Подключитесь к PostgreSQL
|
||
sudo -u postgres psql
|
||
|
||
# В консоли PostgreSQL создайте базу данных и пользователя
|
||
CREATE DATABASE tg_tinder_bot;
|
||
CREATE USER tg_bot WITH PASSWORD 'сложный_пароль';
|
||
GRANT ALL PRIVILEGES ON DATABASE tg_tinder_bot TO tg_bot;
|
||
\q
|
||
|
||
# Проверьте подключение
|
||
psql -h localhost -U tg_bot -d tg_tinder_bot
|
||
# Введите пароль, когда будет запрошено
|
||
```
|
||
|
||
## Шаг 3: Клонирование репозитория и установка зависимостей
|
||
|
||
```bash
|
||
# Создайте директорию для бота
|
||
sudo mkdir -p /opt/tg_tinder_bot
|
||
sudo chown $USER:$USER /opt/tg_tinder_bot
|
||
|
||
# Клонируйте репозиторий
|
||
git clone https://your-git-repo-url.git /opt/tg_tinder_bot
|
||
cd /opt/tg_tinder_bot
|
||
|
||
# Установите зависимости
|
||
npm ci
|
||
|
||
# Сделайте скрипты исполняемыми
|
||
chmod +x bin/update.sh
|
||
```
|
||
|
||
## Шаг 4: Настройка окружения
|
||
|
||
```bash
|
||
# Создайте файл .env из примера
|
||
cp .env.example .env
|
||
|
||
# Отредактируйте файл .env
|
||
nano .env
|
||
|
||
# Укажите следующие параметры:
|
||
# BOT_TOKEN=your_telegram_bot_token
|
||
# DB_HOST=localhost
|
||
# DB_PORT=5432
|
||
# DB_USER=tg_bot
|
||
# DB_PASSWORD=сложный_пароль
|
||
# DB_NAME=tg_tinder_bot
|
||
# и другие необходимые параметры
|
||
```
|
||
|
||
## Шаг 5: Инициализация базы данных и сборка проекта
|
||
|
||
```bash
|
||
# Запустите миграции
|
||
npm run migrate:up
|
||
|
||
# Соберите проект
|
||
npm run build
|
||
```
|
||
|
||
## Шаг 6: Настройка PM2 для управления процессами
|
||
|
||
```bash
|
||
# Установите PM2 глобально
|
||
sudo npm install -g pm2
|
||
|
||
# Запустите бота через PM2
|
||
pm2 start dist/bot.js --name tg_tinder_bot
|
||
|
||
# Настройте автозапуск PM2
|
||
pm2 startup
|
||
# Выполните команду, которую выдаст предыдущая команда
|
||
|
||
# Сохраните конфигурацию PM2
|
||
pm2 save
|
||
```
|
||
|
||
## Шаг 7: Настройка Nginx (если нужен веб-интерфейс)
|
||
|
||
```bash
|
||
# Создайте конфигурационный файл Nginx
|
||
sudo nano /etc/nginx/sites-available/tg_tinder_bot
|
||
|
||
# Добавьте следующее содержимое
|
||
# server {
|
||
# listen 80;
|
||
# server_name ваш-домен.com;
|
||
#
|
||
# location / {
|
||
# proxy_pass http://localhost:3000; # Замените на порт вашего веб-интерфейса
|
||
# proxy_http_version 1.1;
|
||
# proxy_set_header Upgrade $http_upgrade;
|
||
# proxy_set_header Connection 'upgrade';
|
||
# proxy_set_header Host $host;
|
||
# proxy_cache_bypass $http_upgrade;
|
||
# }
|
||
# }
|
||
|
||
# Создайте символьную ссылку
|
||
sudo ln -s /etc/nginx/sites-available/tg_tinder_bot /etc/nginx/sites-enabled/
|
||
|
||
# Проверьте конфигурацию Nginx
|
||
sudo nginx -t
|
||
|
||
# Перезапустите Nginx
|
||
sudo systemctl restart nginx
|
||
```
|
||
|
||
## Шаг 8: Настройка SSL с Certbot (опционально, но рекомендуется)
|
||
|
||
```bash
|
||
# Установите Certbot
|
||
sudo apt install -y certbot python3-certbot-nginx
|
||
|
||
# Получите SSL-сертификат
|
||
sudo certbot --nginx -d ваш-домен.com
|
||
|
||
# Certbot автоматически обновит конфигурацию Nginx
|
||
```
|
||
|
||
## Шаг 9: Настройка автоматического обновления
|
||
|
||
```bash
|
||
# Отредактируйте crontab
|
||
crontab -e
|
||
|
||
# Добавьте строку для ежедневного обновления в 4:00
|
||
0 4 * * * cd /opt/tg_tinder_bot && ./bin/update.sh >> /var/log/tg_bot_update.log 2>&1
|
||
```
|
||
|
||
## Управление ботом
|
||
|
||
```bash
|
||
# Перезапустить бота
|
||
pm2 restart tg_tinder_bot
|
||
|
||
# Остановить бота
|
||
pm2 stop tg_tinder_bot
|
||
|
||
# Посмотреть логи
|
||
pm2 logs tg_tinder_bot
|
||
|
||
# Посмотреть статус
|
||
pm2 status
|
||
```
|
||
|
||
## Обновление вручную
|
||
|
||
```bash
|
||
cd /opt/tg_tinder_bot
|
||
./bin/update.sh
|
||
```
|
||
|
||
## Резервное копирование базы данных
|
||
|
||
```bash
|
||
# Создайте директорию для резервных копий
|
||
mkdir -p ~/backups
|
||
|
||
# Создайте резервную копию
|
||
pg_dump -U tg_bot tg_tinder_bot > ~/backups/tg_tinder_bot_$(date +%Y%m%d).sql
|
||
|
||
# Автоматическое резервное копирование (добавьте в crontab)
|
||
# 0 3 * * * pg_dump -U tg_bot tg_tinder_bot > ~/backups/tg_tinder_bot_$(date +%Y%m%d).sql && find ~/backups -name "tg_tinder_bot_*.sql" -mtime +7 -delete
|
||
```
|
||
|
||
## Решение проблем
|
||
|
||
### Проблемы с базой данных
|
||
Проверьте журналы PostgreSQL:
|
||
```bash
|
||
sudo tail -f /var/log/postgresql/postgresql-*.log
|
||
```
|
||
|
||
### Проблемы с ботом
|
||
Проверьте журналы PM2:
|
||
```bash
|
||
pm2 logs tg_tinder_bot
|
||
```
|
||
|
||
### Проблемы с Nginx
|
||
Проверьте журналы Nginx:
|
||
```bash
|
||
sudo tail -f /var/log/nginx/error.log
|
||
```
|