pre-deploy commit

This commit is contained in:
2025-09-18 14:19:49 +09:00
parent 5ea3e8c1f3
commit 713eadc643
50 changed files with 2238 additions and 569 deletions

View File

@@ -0,0 +1,264 @@
# Инструкция по развертыванию Telegram Tinder Bot в Production
Это подробное руководство по развертыванию Telegram Tinder Bot в production-окружении с использованием Docker и Docker Compose.
## 📋 Требования
- **Операционная система**: Ubuntu 20.04 или выше (рекомендуется) / Windows Server с Docker
- **Программное обеспечение**:
- Docker (последняя версия)
- Docker Compose (последняя версия)
- Git
## 🚀 Быстрое развертывание
### 1. Клонирование репозитория
```bash
git clone https://github.com/your-username/telegram-tinder-bot.git
cd telegram-tinder-bot
```
### 2. Настройка конфигурации
```bash
# Создание файла конфигурации из шаблона
cp .env.production .env
# Редактирование конфигурационного файла
nano .env
```
Важно указать следующие параметры:
- `TELEGRAM_BOT_TOKEN`: токен от @BotFather
- `DB_PASSWORD`: надежный пароль для базы данных
- `JWT_SECRET`: случайная строка для JWT
- `ENCRYPTION_KEY`: случайная строка для шифрования
### 3. Запуск деплоя
```bash
# Сделайте скрипт исполняемым
chmod +x deploy.sh
# Запустите деплой
./deploy.sh
```
## 🔧 Подробное руководство по установке
### Подготовка сервера Ubuntu
```bash
# Обновление системы
sudo apt update && sudo apt upgrade -y
# Установка необходимых пакетов
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common git
# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Добавление текущего пользователя в группу docker
sudo usermod -aG docker ${USER}
# Установка Docker Compose
sudo apt install -y docker-compose
```
### Клонирование и настройка проекта
```bash
# Создание директории для проекта
mkdir -p /opt/telegram-tinder
cd /opt/telegram-tinder
# Клонирование репозитория
git clone https://github.com/your-username/telegram-tinder-bot.git .
# Настройка .env файла
cp .env.production .env
nano .env
# Создание директорий для данных и логов
mkdir -p uploads logs
chmod 777 uploads logs
```
### Запуск проекта
```bash
# Запуск в фоновом режиме
docker-compose up -d
# Проверка статуса контейнеров
docker-compose ps
# Просмотр логов
docker-compose logs -f
```
## 🔄 Обновление бота
Для обновления бота выполните:
```bash
cd /путь/к/telegram-tinder-bot
./deploy.sh
```
Скрипт автоматически выполнит:
1. Получение последних изменений из репозитория
2. Перезапуск контейнеров с новой версией кода
3. Применение миграций базы данных
## 🛡️ Обеспечение безопасности
### Настройка файрвола
```bash
# Разрешение только необходимых портов
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
```
### Настройка HTTPS с Let's Encrypt (опционально)
Для использования HTTPS с Let's Encrypt и Nginx:
```bash
# Установка Certbot
sudo apt install -y certbot python3-certbot-nginx
# Получение SSL-сертификата
sudo certbot --nginx -d your-domain.com
```
## 📊 Мониторинг и управление
### Просмотр логов
```bash
# Логи всех контейнеров
docker-compose logs -f
# Логи конкретного контейнера (например, бота)
docker-compose logs -f bot
# Последние 100 строк логов
docker-compose logs --tail=100 bot
```
### Управление сервисами
```bash
# Остановка всех контейнеров
docker-compose down
# Перезапуск всех контейнеров
docker-compose restart
# Перезапуск только бота
docker-compose restart bot
```
### Доступ к базе данных
```bash
# Вход в консоль PostgreSQL
docker-compose exec db psql -U postgres -d telegram_tinder_bot
# Резервное копирование базы данных
docker-compose exec db pg_dump -U postgres telegram_tinder_bot > backup_$(date +%Y%m%d).sql
# Восстановление базы из резервной копии
cat backup.sql | docker-compose exec -T db psql -U postgres -d telegram_tinder_bot
```
## 🔍 Устранение неполадок
### Проверка работоспособности
```bash
# Проверка API бота
curl http://localhost:3000/health
# Проверка подключения к базе данных
docker-compose exec bot node -e "const { Client } = require('pg'); const client = new Client({ host: 'db', port: 5432, database: 'telegram_tinder_bot', user: 'postgres', password: process.env.DB_PASSWORD }); client.connect().then(() => { console.log('Connected to DB!'); client.end(); }).catch(e => console.error(e));"
```
### Общие проблемы и решения
**Проблема**: Бот не отвечает в Telegram
**Решение**:
- Проверьте валидность токена бота
- Проверьте логи на наличие ошибок: `docker-compose logs -f bot`
**Проблема**: Ошибки подключения к базе данных
**Решение**:
- Проверьте настройки подключения в `.env`
- Убедитесь, что контейнер с базой данных запущен: `docker-compose ps`
- Проверьте логи базы данных: `docker-compose logs db`
**Проблема**: Недостаточно свободного места на диске
**Решение**:
- Очистите неиспользуемые Docker образы: `docker image prune -a`
- Очистите неиспользуемые Docker тома: `docker volume prune`
## 🔁 Настройка автоматического обновления
### Настройка автообновления через Cron
```bash
# Редактирование crontab
crontab -e
# Добавление задачи (обновление каждую ночь в 3:00)
0 3 * * * cd /путь/к/telegram-tinder-bot && ./deploy.sh > /tmp/tg-tinder-update.log 2>&1
```
## 📝 Рекомендации по обслуживанию
1. **Регулярное резервное копирование**:
```bash
# Ежедневное резервное копирование через cron
0 2 * * * docker-compose exec -T db pg_dump -U postgres telegram_tinder_bot > /path/to/backups/tg_$(date +\%Y\%m\%d).sql
```
2. **Мониторинг использования ресурсов**:
```bash
# Просмотр использования ресурсов контейнерами
docker stats
```
3. **Обновление Docker образов**:
```bash
# Обновление образов
docker-compose pull
docker-compose up -d
```
4. **Проверка журналов на наличие ошибок**:
```bash
# Поиск ошибок в логах
docker-compose logs | grep -i error
docker-compose logs | grep -i exception
```
---
## 📋 Контрольный список деплоя
- [ ] Установлены Docker и Docker Compose
- [ ] Клонирован репозиторий
- [ ] Настроен файл .env с реальными данными
- [ ] Запущены контейнеры через docker-compose
- [ ] Проверено подключение бота к Telegram API
- [ ] Настроено резервное копирование
- [ ] Настроен файрвол и безопасность сервера
- [ ] Проверены и настроены логи
- [ ] (Опционально) Настроен SSL для веб-интерфейса
- [ ] (Опционально) Настроено автоматическое обновление