🚀 Добавлен мастер-скрипт развертывания с полной автоматизацией
Some checks failed
continuous-integration/drone/push Build is failing
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 сертификатов
This commit is contained in:
323
DEPLOYMENT.md
Normal file
323
DEPLOYMENT.md
Normal file
@@ -0,0 +1,323 @@
|
||||
# 🚀 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 готов к использованию!**
|
||||
Reference in New Issue
Block a user