Files
links/docs/DEPLOYMENT.md
Andrey K. Choi 3732068464
Some checks failed
continuous-integration/drone/push Build is failing
docs moved
2025-11-04 20:47:00 +09:00

9.4 KiB
Raw Permalink Blame History

🚀 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. Проверка готовности системы

make pre-deploy-check

2. Мастер-развертывание

make deploy

3. Проверка безопасности

make security-audit

📋 Пошаговая инструкция

Шаг 1: Подготовка сервера

  1. Обновите систему:
sudo apt update && sudo apt upgrade -y
  1. Клонируйте проект:
cd /opt
sudo git clone https://github.com/smartsoltech/links.git
sudo chown -R $USER:$USER links
cd links
  1. Проверьте готовность:
make pre-deploy-check

Шаг 2: Настройка DNS

Убедитесь что ваш домен указывает на IP сервера:

# Проверьте A-запись
nslookup your-domain.com

# Должен возвращать IP вашего сервера

Шаг 3: Мастер-развертывание

Запустите мастер-скрипт:

make deploy

Скрипт запросит:

  • Основной домен (например: links.yourdomain.com)
  • Дополнительные домены (через запятую, опционально)
  • Email для Let's Encrypt
  • Режим SSL (Let's Encrypt / самоподписанный / без SSL)
  • Окружение (production / staging / development)

Шаг 4: Проверка развертывания

После завершения проверьте:

# Статус сервисов
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

make security-audit

Проверяет:

  • Версию PostgreSQL
  • SSL настройки
  • Права пользователей
  • Сетевую изоляцию
  • Настройки логирования
  • Конфигурационные файлы

Оценивает по 10-балльной шкале

Управление SSL

# Интерактивная настройка SSL
make ssl-setup

# Обновление сертификатов
make ssl-renew

Обновление безопасности в продакшене

make update-production-security

💾 Backup и восстановление

Автоматические backup

  • База данных: ежедневно в 2:00
  • Файлы: tar.gz архивы
  • Конфигурация: .env и docker-compose файлы
  • Ротация: хранение 30 дней

Ручной backup

./scripts/auto-backup.sh

Восстановление

# Восстановление БД
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

📊 Мониторинг и обслуживание

Проверка здоровья системы

./scripts/health-check.sh

Просмотр логов

make logs

Мониторинг ресурсов

make monitor

Перезапуск сервисов

make restart

🆘 Устранение неполадок

1. Проблемы с SSL

# Проверка статуса сертификатов
./scripts/ssl-manager.sh

# Принудительное обновление
sudo certbot renew --force-renewal

2. Проблемы с БД

# Аудит безопасности
make security-audit

# Проверка подключения
docker exec links-db-1 pg_isready -U postgres

3. Проблемы с контейнерами

# Пересборка без кэша
make build

# Полный перезапуск
make restart

# Просмотр логов
make logs

4. Проблемы с доменом

# Проверка 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

🔄 Обновления

Обновление кода

git pull
make restart

Обновление безопасности

make update-production-security

Обновление SSL

make ssl-renew

📞 Поддержка

  • README.md - основная документация
  • SECURITY.md - руководство по безопасности
  • logs/ - логи системы
  • scripts/ - утилиты обслуживания

🎉 Поздравляем! Ваш CatLink готов к использованию!