Files
tg_tinder_bot/docs/PRODUCTION_DEPLOYMENT.md
2025-09-18 14:19:49 +09:00

8.6 KiB
Raw Permalink Blame History

Инструкция по развертыванию 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: токен от @BotFather
  • DB_PASSWORD: надежный пароль для базы данных
  • JWT_SECRET: случайная строка для JWT
  • ENCRYPTION_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

Скрипт автоматически выполнит:

  1. Получение последних изменений из репозитория
  2. Перезапуск контейнеров с новой версией кода
  3. Применение миграций базы данных

🛡️ Обеспечение безопасности

Настройка файрвола

# Разрешение только необходимых портов
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

📝 Рекомендации по обслуживанию

  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
    
  2. Мониторинг использования ресурсов:

    # Просмотр использования ресурсов контейнерами
    docker stats
    
  3. Обновление Docker образов:

    # Обновление образов
    docker-compose pull
    docker-compose up -d
    
  4. Проверка журналов на наличие ошибок:

    # Поиск ошибок в логах
    docker-compose logs | grep -i error
    docker-compose logs | grep -i exception
    

📋 Контрольный список деплоя

  • Установлены Docker и Docker Compose
  • Клонирован репозиторий
  • Настроен файл .env с реальными данными
  • Запущены контейнеры через docker-compose
  • Проверено подключение бота к Telegram API
  • Настроено резервное копирование
  • Настроен файрвол и безопасность сервера
  • Проверены и настроены логи
  • (Опционально) Настроен SSL для веб-интерфейса
  • (Опционально) Настроено автоматическое обновление