# Инструкция по развертыванию 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 для веб-интерфейса - [ ] (Опционально) Настроено автоматическое обновление