3.9 KiB
Модель безопасности
Цель проекта — выполнять повторяемое обслуживание 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.
Рекомендуемая эксплуатация
- Создайте snapshot VM перед первым запуском.
- Проверьте installer и checksum.
- Запустите на тестовой VM.
- Проверьте journal, failed units и приложение.
- Только потом развертывайте на остальные серверы.
- Перезагружайте сервер в согласованное maintenance window.
Что проверить после запуска
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и данных приложений; - отдельно проверенная процедура восстановления.