8.6 KiB
8.6 KiB
Инструкция по развертыванию Telegram Tinder Bot в Production
Это подробное руководство по развертыванию Telegram Tinder Bot в production-окружении с использованием Docker и Docker Compose.
📋 Требования
- Операционная система: Ubuntu 20.04 или выше (рекомендуется) / Windows Server с Docker
- Программное обеспечение:
- Docker (последняя версия)
- Docker Compose (последняя версия)
- Git
🚀 Быстрое развертывание
1. Клонирование репозитория
git clone https://github.com/your-username/telegram-tinder-bot.git
cd telegram-tinder-bot
2. Настройка конфигурации
# Создание файла конфигурации из шаблона
cp .env.production .env
# Редактирование конфигурационного файла
nano .env
Важно указать следующие параметры:
TELEGRAM_BOT_TOKEN: токен от @BotFatherDB_PASSWORD: надежный пароль для базы данныхJWT_SECRET: случайная строка для JWTENCRYPTION_KEY: случайная строка для шифрования
3. Запуск деплоя
# Сделайте скрипт исполняемым
chmod +x deploy.sh
# Запустите деплой
./deploy.sh
🔧 Подробное руководство по установке
Подготовка сервера Ubuntu
# Обновление системы
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
Клонирование и настройка проекта
# Создание директории для проекта
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
Запуск проекта
# Запуск в фоновом режиме
docker-compose up -d
# Проверка статуса контейнеров
docker-compose ps
# Просмотр логов
docker-compose logs -f
🔄 Обновление бота
Для обновления бота выполните:
cd /путь/к/telegram-tinder-bot
./deploy.sh
Скрипт автоматически выполнит:
- Получение последних изменений из репозитория
- Перезапуск контейнеров с новой версией кода
- Применение миграций базы данных
🛡️ Обеспечение безопасности
Настройка файрвола
# Разрешение только необходимых портов
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:
# Установка Certbot
sudo apt install -y certbot python3-certbot-nginx
# Получение SSL-сертификата
sudo certbot --nginx -d your-domain.com
📊 Мониторинг и управление
Просмотр логов
# Логи всех контейнеров
docker-compose logs -f
# Логи конкретного контейнера (например, бота)
docker-compose logs -f bot
# Последние 100 строк логов
docker-compose logs --tail=100 bot
Управление сервисами
# Остановка всех контейнеров
docker-compose down
# Перезапуск всех контейнеров
docker-compose restart
# Перезапуск только бота
docker-compose restart bot
Доступ к базе данных
# Вход в консоль 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
🔍 Устранение неполадок
Проверка работоспособности
# Проверка 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
# Редактирование crontab
crontab -e
# Добавление задачи (обновление каждую ночь в 3:00)
0 3 * * * cd /путь/к/telegram-tinder-bot && ./deploy.sh > /tmp/tg-tinder-update.log 2>&1
📝 Рекомендации по обслуживанию
-
Регулярное резервное копирование:
# Ежедневное резервное копирование через cron 0 2 * * * docker-compose exec -T db pg_dump -U postgres telegram_tinder_bot > /path/to/backups/tg_$(date +\%Y\%m\%d).sql -
Мониторинг использования ресурсов:
# Просмотр использования ресурсов контейнерами docker stats -
Обновление Docker образов:
# Обновление образов docker-compose pull docker-compose up -d -
Проверка журналов на наличие ошибок:
# Поиск ошибок в логах docker-compose logs | grep -i error docker-compose logs | grep -i exception
📋 Контрольный список деплоя
- Установлены Docker и Docker Compose
- Клонирован репозиторий
- Настроен файл .env с реальными данными
- Запущены контейнеры через docker-compose
- Проверено подключение бота к Telegram API
- Настроено резервное копирование
- Настроен файрвол и безопасность сервера
- Проверены и настроены логи
- (Опционально) Настроен SSL для веб-интерфейса
- (Опционально) Настроено автоматическое обновление