# 📦 Инструкция по развертыванию Global-IT24 Landing Page

## 🎯 Быстрый старт

```bash
cd /home/ubuntu/global_it24_landing

# 1. Настройте .env файл (если еще не настроен)
nano .env

# 2. Очистите старые контейнеры и кеш
docker compose down
docker builder prune -f

# 3. Запустите развертывание (РЕКОМЕНДУЕТСЯ)
./deploy.sh --fast
```

## 📝 Варианты развертывания

### Вариант 1: Быстрая сборка (РЕКОМЕНДУЕТСЯ)
```bash
./deploy.sh --fast
```
⏱️ **Время:** 10-15 минут  
✅ **Использует:** BuildKit кеш для ускорения

### Вариант 2: Полная сборка без кеша
```bash
./deploy.sh
```
⏱️ **Время:** 20-30 минут  
⚠️ **Используйте только:** При первом развертывании или проблемах с кешем

### Вариант 3: Обновление без пересборки
```bash
./update.sh
```
⏱️ **Время:** ~10 секунд  
✅ **Используйте:** Когда изменились только переменные .env

### Вариант 4: Обновление с пересборкой
```bash
./update.sh --rebuild
```
⏱️ **Время:** 5-10 минут  
✅ **Используйте:** После изменения кода или зависимостей

## 🔧 Конфигурация .env

Обязательные переменные:

```bash
# Основные настройки
DOMAIN=video.mscsrv.ru
NEXT_PUBLIC_SITE_URL=https://video.mscsrv.ru
APP_HOST_IP=192.168.50.100  # IP вашего сервера

# База данных PostgreSQL
POSTGRES_USER=global_it24_user
POSTGRES_PASSWORD=ваш_надежный_пароль
POSTGRES_DB=global_it24_db
DATABASE_URL="postgresql://..."

# Email уведомления
SMTP_HOST=smtp.yandex.ru
SMTP_PORT=587
SMTP_USER=info@global-it24.ru
SMTP_PASSWORD=ваш_пароль_приложения
EMAIL_FROM=info@global-it24.ru
EMAIL_TO=info@global-it24.ru

# Telegram уведомления (опционально)
TELEGRAM_BOT_TOKEN=ваш_токен_бота
TELEGRAM_CHAT_ID=ваш_chat_id

# Traefik (если используется внешний Traefik)
TRAEFIK_HOST=traefik-host  # Hostname сервера с Traefik
```

## 📊 Мониторинг

### Проверка статуса
```bash
./status.sh
```

### Просмотр логов
```bash
./logs.sh              # Все логи
./logs.sh --tail 100   # Последние 100 строк
```

### Проверка работы приложения
```bash
# Локально
curl http://localhost:3000

# Через Traefik (если настроен)
curl https://video.mscsrv.ru
```

## 🐛 Решение проблем

### Проблема: Сборка зависла на "Building fresh packages"

**Решение:**
```bash
# Остановите сборку
Ctrl+C

# Очистите кеш
docker builder prune -f

# Попробуйте снова с --fast
./deploy.sh --fast
```

См. подробности в `QUICK_FIX.md`

### Проблема: Недостаточно ресурсов

**Проверьте:**
```bash
free -h           # Проверка RAM
df -h             # Проверка диска
docker info       # Лимиты Docker
```

**Рекомендуемые ресурсы:**
- CPU: минимум 2 ядра, рекомендуется 4
- RAM: минимум 4GB, рекомендуется 8GB
- Диск: минимум 10GB свободного места

### Проблема: Не запускается после сборки

**Проверьте логи:**
```bash
docker compose logs web
docker compose logs db
```

**Типичные причины:**
1. Ошибки в .env файле
2. База данных не запустилась
3. Порт 3000 уже занят

### Проблема: База данных не подключается

**Проверьте:**
```bash
# Статус контейнера БД
docker compose ps db

# Логи БД
docker compose logs db

# Подключение вручную
docker compose exec db psql -U $POSTGRES_USER -d $POSTGRES_DB
```

## 🔄 Обновление приложения

### Обновление кода из Git
```bash
cd /home/ubuntu/global_it24_landing
git pull origin master
./update.sh --rebuild
```

### Обновление только переменных .env
```bash
nano .env
./update.sh
```

### Применение миграций БД
```bash
docker compose exec web npx prisma migrate deploy
```

## 📦 Резервное копирование

### Создание бэкапа БД
```bash
./backup-db.sh
```

Файл сохраняется в: `./backups/db_backup_YYYYMMDD_HHMMSS.sql`

### Восстановление из бэкапа
```bash
docker compose exec -T db psql -U $POSTGRES_USER -d $POSTGRES_DB < backups/db_backup_XXXXXXXX.sql
```

## 🌐 Настройка Traefik

1. Скопируйте пример конфигурации:
```bash
cp traefik-config-example.yml /путь/к/traefik/dynamic/global-it24.yml
```

2. Отредактируйте параметры:
   - `APP_HOST_IP:3000` - IP вашего сервера
   - `video.mscsrv.ru` - ваш домен

3. Перезагрузите Traefik:
```bash
docker restart traefik  # или используйте ваш метод
```

## 📚 Дополнительная документация

- `BUILD_OPTIMIZATION.md` - Подробности оптимизации сборки
- `QUICK_FIX.md` - Быстрое решение проблемы зависания
- `DATABASE.md` - Управление базой данных

## 🆘 Поддержка

Если проблема не решена:

1. Проверьте логи: `./logs.sh`
2. Проверьте статус: `./status.sh`
3. Попробуйте полную пересборку:
```bash
docker compose down -v
docker builder prune -a -f
./deploy.sh
```

## ✅ Чек-лист после развертывания

- [ ] Приложение запущено: `./status.sh`
- [ ] Доступно локально: `curl http://localhost:3000`
- [ ] База данных работает: `docker compose logs db`
- [ ] Логи без ошибок: `./logs.sh`
- [ ] Настроен Traefik (если используется)
- [ ] Форма обратной связи работает
- [ ] Email уведомления приходят
- [ ] Telegram уведомления работают (если настроены)
- [ ] Создан первый бэкап БД: `./backup-db.sh`

## 🚀 Готово!

Приложение развернуто и готово к работе!

Полезные команды:
```bash
./status.sh           # Статус
./logs.sh             # Логи
./update.sh           # Обновление
./backup-db.sh        # Бэкап БД
./deploy.sh --help    # Справка по развертыванию
./update.sh --help    # Справка по обновлению
```
