Files
links/DEPLOYMENT.md
Andrey K. Choi e1bb1ab90a
Some checks failed
continuous-integration/drone/push Build is failing
🚀 Добавлен мастер-скрипт развертывания с полной автоматизацией
 Новые возможности:
- Мастер-развертывание с автоматической настройкой всех компонентов
- Генерация безопасных .env файлов с криптографически стойкими ключами
- Полная изоляция и защита PostgreSQL
- Автоматическая настройка Let's Encrypt SSL
- Система backup и мониторинга
- Comprehensive security audit для БД

🔧 Новые команды:
- make deploy - мастер-развертывание
- make pre-deploy-check - проверка готовности системы
- make security-audit - аудит безопасности PostgreSQL
- make ssl-setup - интерактивная настройка SSL
- make update-production-security - безопасное обновление в продакшене

📁 Новые файлы:
- scripts/master-deploy.sh - основной скрипт развертывания
- scripts/pre-deploy-check.sh - проверка системы
- scripts/ssl-manager.sh - управление SSL сертификатами
- scripts/audit-db-security.sh - аудит безопасности БД
- DEPLOYMENT.md - полное руководство по развертыванию
- COMMANDS.md - справочник команд
- SECURITY.md - документация по безопасности

🔒 Улучшения безопасности:
- Изоляция PostgreSQL в Docker сети (без внешних портов)
- SCRAM-SHA-256 аутентификация
- TLSv1.3 для БД соединений
- Удаление прав суперпользователя у приложения
- Детальное логирование всех операций БД
- Security headers в nginx
- Автообновление SSL сертификатов
2025-11-04 14:07:58 +09:00

323 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 CatLink Master Deployment Guide
Полное руководство по мастер-развертыванию проекта CatLink с автоматической настройкой всех компонентов.
## 🎯 Что включает мастер-развертывание
### 1. 🔧 Системные требования и подготовка
- Автоматическая проверка системы
- Установка необходимых компонентов (nginx, certbot, docker)
- Проверка портов и ресурсов
### 2. ⚙️ Генерация конфигурации
- **Автоматическая генерация .env** с безопасными настройками
- **Генерация Django SECRET_KEY** (криптографически стойкий)
- **Генерация паролей БД** (32 символа, случайные)
- **Настройка доменов** и SSL параметров
### 3. 🗄️ База данных и безопасность
- **Полная изоляция PostgreSQL** в Docker сети
- **Удаление прав суперпользователя** у приложения
- **SCRAM-SHA-256 аутентификация**
- **TLSv1.3 SSL/TLS** для БД
- **Детальное логирование** всех операций
- **Автоматический аудит безопасности**
### 4. 🔒 SSL/TLS сертификаты
- **Let's Encrypt** автоматическое получение
- **Автообновление сертификатов** via cron
- **Fallback на самоподписанные** для тестирования
- **HTTP→HTTPS редирект**
- **Security headers** (HSTS, CSP, XSS Protection)
### 5. 🌐 Nginx конфигурация
- **Reverse proxy** для frontend и backend
- **Security headers** и защита
- **Gzip compression**
- **Статические файлы** с кэшированием
- **Rate limiting** и DDoS защита
### 6. 💾 Backup и мониторинг
- **Автоматические backup** БД и файлов
- **Система здоровья** (health checks)
- **Логирование** всех операций
- **Cron задачи** для обслуживания
## 🚀 Быстрый старт
### 1. Проверка готовности системы
```bash
make pre-deploy-check
```
### 2. Мастер-развертывание
```bash
make deploy
```
### 3. Проверка безопасности
```bash
make security-audit
```
## 📋 Пошаговая инструкция
### Шаг 1: Подготовка сервера
1. **Обновите систему:**
```bash
sudo apt update && sudo apt upgrade -y
```
2. **Клонируйте проект:**
```bash
cd /opt
sudo git clone https://github.com/smartsoltech/links.git
sudo chown -R $USER:$USER links
cd links
```
3. **Проверьте готовность:**
```bash
make pre-deploy-check
```
### Шаг 2: Настройка DNS
Убедитесь что ваш домен указывает на IP сервера:
```bash
# Проверьте A-запись
nslookup your-domain.com
# Должен возвращать IP вашего сервера
```
### Шаг 3: Мастер-развертывание
Запустите мастер-скрипт:
```bash
make deploy
```
Скрипт запросит:
- **Основной домен** (например: links.yourdomain.com)
- **Дополнительные домены** (через запятую, опционально)
- **Email для Let's Encrypt**
- **Режим SSL** (Let's Encrypt / самоподписанный / без SSL)
- **Окружение** (production / staging / development)
### Шаг 4: Проверка развертывания
После завершения проверьте:
```bash
# Статус сервисов
make status
# Проверка здоровья
./scripts/health-check.sh
# Аудит безопасности
make security-audit
```
## 🔧 Генерируемые файлы и настройки
### 1. `.env` файл
Автоматически генерируется с:
- **DJANGO_SECRET_KEY** - криптографически стойкий ключ
- **DATABASE_PASSWORD** - случайный 32-символьный пароль
- **DJANGO_ALLOWED_HOSTS** - настроенные домены
- **NEXT_PUBLIC_API_URL** - правильный API URL
- **SSL настройки** в зависимости от выбора
### 2. Nginx конфигурация
- **HTTP→HTTPS редирект**
- **Security headers** (HSTS, CSP, XSS Protection)
- **Proxy настройки** для frontend и backend
- **Gzip compression**
- **Timeout настройки**
### 3. PostgreSQL безопасность
- **Изоляция в Docker сети** (без внешних портов)
- **SCRAM-SHA-256** аутентификация
- **TLSv1.3** для SSL
- **Логирование** подключений и операций
- **Ограниченные права** для пользователя приложения
### 4. SSL сертификаты
- **Let's Encrypt** с автообновлением
- **Wildcard поддержка** для поддоменов
- **Fallback** на самоподписанные
- **Cron задача** для обновления
## 🔒 Безопасность
### Аудит безопасности PostgreSQL
```bash
make security-audit
```
**Проверяет:**
- Версию PostgreSQL
- SSL настройки
- Права пользователей
- Сетевую изоляцию
- Настройки логирования
- Конфигурационные файлы
**Оценивает по 10-балльной шкале**
### Управление SSL
```bash
# Интерактивная настройка SSL
make ssl-setup
# Обновление сертификатов
make ssl-renew
```
### Обновление безопасности в продакшене
```bash
make update-production-security
```
## 💾 Backup и восстановление
### Автоматические backup
- **База данных**: ежедневно в 2:00
- **Файлы**: tar.gz архивы
- **Конфигурация**: .env и docker-compose файлы
- **Ротация**: хранение 30 дней
### Ручной backup
```bash
./scripts/auto-backup.sh
```
### Восстановление
```bash
# Восстановление БД
docker exec -i links-db-1 psql -U postgres links_db < backups/database/links_db_YYYYMMDD_HHMMSS.sql
# Восстановление файлов
tar -xzf backups/files/media_YYYYMMDD_HHMMSS.tar.gz
```
## 📊 Мониторинг и обслуживание
### Проверка здоровья системы
```bash
./scripts/health-check.sh
```
### Просмотр логов
```bash
make logs
```
### Мониторинг ресурсов
```bash
make monitor
```
### Перезапуск сервисов
```bash
make restart
```
## 🆘 Устранение неполадок
### 1. Проблемы с SSL
```bash
# Проверка статуса сертификатов
./scripts/ssl-manager.sh
# Принудительное обновление
sudo certbot renew --force-renewal
```
### 2. Проблемы с БД
```bash
# Аудит безопасности
make security-audit
# Проверка подключения
docker exec links-db-1 pg_isready -U postgres
```
### 3. Проблемы с контейнерами
```bash
# Пересборка без кэша
make build
# Полный перезапуск
make restart
# Просмотр логов
make logs
```
### 4. Проблемы с доменом
```bash
# Проверка DNS
nslookup your-domain.com
# Проверка nginx
sudo nginx -t
sudo systemctl status nginx
```
## 🎯 Результат развертывания
После успешного развертывания вы получите:
### 🌐 Готовый сайт
- **HTTPS** с валидными сертификатами
- **Автообновление** SSL
- **Security headers** и защита
- **Optimized** конфигурация nginx
### 🔒 Безопасная БД
- **Изолированная** в Docker сети
- **Зашифрованные** соединения (TLS 1.3)
- **Ограниченные права** приложения
- **Полное логирование**
### 💾 Система backup
- **Автоматические** ежедневные backup
- **Ротация** файлов (30 дней)
- **Простое восстановление**
### 📊 Мониторинг
- **Health checks** для всех сервисов
- **Логирование** операций
- **Resource monitoring**
## 🔄 Обновления
### Обновление кода
```bash
git pull
make restart
```
### Обновление безопасности
```bash
make update-production-security
```
### Обновление SSL
```bash
make ssl-renew
```
## 📞 Поддержка
- **README.md** - основная документация
- **SECURITY.md** - руководство по безопасности
- **logs/** - логи системы
- **scripts/** - утилиты обслуживания
---
**🎉 Поздравляем! Ваш CatLink готов к использованию!**