# Модель безопасности Цель проекта — выполнять повторяемое обслуживание Ubuntu/Debian с минимальным риском. «Безопасно» не означает «невозможно сломать»: любое системное обновление может содержать ошибку пакета, несовместимость приложения или service restart. ## Принципы ### Без удаления пакетов Основное обновление использует `apt-get upgrade --no-remove`. `dist-upgrade` и `full-upgrade` не используются. `autoremove` выключен. Причина: пакет, нужный локальному приложению, иногда ошибочно остается помеченным как автоматически установленный. ### Без автоматического reboot Новое ядро устанавливается, но активируется только после решения администратора. Это предотвращает незапланированный разрыв VPN, базы данных, SSH или другого сервиса. ### Без опасной очистки файлов Очистка временных данных делегируется `systemd-tmpfiles`, `logrotate`, `journalctl` и APT. Проект не содержит рекурсивного удаления широких каталогов. ### Без очистки Docker по умолчанию Stopped containers, tagged images, volumes и networks могут содержать нужное состояние. Поэтому Docker cleanup выключен. Опция удаляет только dangling images. ### Сохранение конфигов `Dpkg::Options::=--force-confold` сохраняет установленную локальную конфигурацию. Новая версия файла пакета обычно остается рядом как `.dpkg-dist`; ее нужно сравнить вручную. ### Проверки до изменения APT upgrade не запускается при: - поврежденном/незавершенном состоянии `dpkg`; - критически малом свободном месте; - ошибке `apt-get update`. ### Один процесс `flock` предотвращает параллельные maintenance-запуски. APT-lock ожидается до 10 минут, что уменьшает конфликт с `apt-daily`. ## Рекомендуемая эксплуатация 1. Создайте snapshot VM перед первым запуском. 2. Проверьте installer и checksum. 3. Запустите на тестовой VM. 4. Проверьте journal, failed units и приложение. 5. Только потом развертывайте на остальные серверы. 6. Перезагружайте сервер в согласованное maintenance window. ## Что проверить после запуска ```bash systemctl --failed dpkg --audit apt list --upgradable journalctl -u safe-monthly-maintenance.service -n 200 test -e /var/run/reboot-required && echo "reboot required" ``` Для VPN, reverse proxy, базы данных и других сервисов добавьте собственные health checks после системного обслуживания. ## Rollback Проект сохраняет список пакетов, но не создает полноценный rollback. Для надежного возврата нужны: - snapshot гипервизора/VPS-провайдера; - резервная копия `/etc` и данных приложений; - отдельно проверенная процедура восстановления.