Настройка автоматических обновлений (Unattended Upgrades) на Debian 13, 12, 11

Unattended Upgrades — это инструмент для автоматической установки обновлений безопасности и критических пакетов на Debian. Он особенно полезен на серверах, VPS и production-системах, где важно вовремя получать патчи без ручного вмешательства. Главные сложности для новичка: нужно понять разницу между systemd-таймерами (apt-daily.timer и apt-daily-upgrade.timer), правильно настроить Origins-Pattern (чтобы обновлялись только нужные репозитории), а также опционально настроить уведомления по email и автоматическую перезагрузку. Также важно уметь проверять логи и отлаживать конфигурацию через --dry-run --debug.

💡 В этом руководстве вы установите и настроите Unattended Upgrades на Debian. Вы узнаете, как включить автоматическую установку обновлений безопасности, настроить systemd-таймеры, исключить определённые пакеты, настроить email-уведомления и автоматическую перезагрузку, а также как проверять логи и решать типичные проблемы.

В этой статье вы узнаете:

  • Как установить Unattended Upgrades
  • Как настроить обновления только для репозитория безопасности
  • Как исключить пакеты из автоматического обновления
  • Как настроить email-уведомления
  • Как настроить автоматическую перезагрузку после обновления
  • Как проверить логи и отлаживать конфигурацию
  • Как решить типичные проблемы: обновления не работают, проблемы с зависимостями, ошибки dpkg

Для кого: системные администраторы, владельцы VPS, а также все, кто хочет автоматизировать установку обновлений безопасности на Debian 11, 12 или 13.

Оглавление

1. 🔧 Предварительные требования

Перед настройкой убедитесь, что:

  • У вас установлена Debian 11, 12 или 13
  • Подключение к интернету стабильно
  • У вас есть права sudo

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.

Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете настраивать систему.

✅ Если выводит root — всё в порядке, можете продолжать.

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.

1.1 Обновление системы

Перед настройкой всегда обновляйте список пакетов.

sudo apt update && sudo apt upgrade -y

2. 📦 Установка Unattended Upgrades

sudo apt install unattended-upgrades -y

Что делает: Устанавливает пакет для автоматических обновлений.

Опционально: Установите дополнительные пакеты:

sudo apt install apt-config-auto-update powermgmt-base -y
  • apt-config-auto-update — для автоматической перезагрузки
  • powermgmt-base — для проверки питания (ноутбуки)

3. 🕐 Понимание systemd-таймеров

Unattended Upgrades запускается через systemd-таймеры, а не через cron.

ТаймерРасписаниеЧто делает
apt-daily.timer2 раза в день (6:00 и 18:00)Скачивает списки пакетов и
новые версии
apt-daily-upgrade.timerРаз в день (6:00)Устанавливает обновления
через unattended-upgrades

Проверка статуса таймеров:

systemctl status apt-daily-upgrade.timer

Просмотр расписания:

systemctl list-timers apt-daily*

4. ⚙️ Базовая настройка

4.1 Резервное копирование конфигурации

sudo cp /etc/apt/apt.conf.d/50unattended-upgrades{,.bak}

4.2 Редактирование конфигурации

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

4.3 Настройка источников обновлений

По умолчанию включены только обновления безопасности:

Unattended-Upgrade::Origins-Pattern {
    "origin=Debian,codename=${distro_codename},label=Debian";
    "origin=Debian,codename=${distro_codename},label=Debian-Security";
    "origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
};

Если вы хотите обновлять также -updates (точечные релизы):

Unattended-Upgrade::Origins-Pattern {
    "origin=Debian,codename=${distro_codename},label=Debian";
    "origin=Debian,codename=${distro_codename},label=Debian-Security";
    "origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
    "origin=Debian,codename=${distro_codename}-updates,label=Debian";
};

4.4 Исключение пакетов из автоматического обновления

Unattended-Upgrade::Package-Blacklist {
    "nginx";
    "mysql-server";
    "postgresql";
    "docker-ce";
};

4.5 Настройка email-уведомлений

Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "on-change";

Значения MailReport:

  • always — всегда отправлять отчёт
  • only-on-error — только при ошибках
  • on-change — когда произошли изменения

4.6 Автоматическая перезагрузка

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

4.7 Очистка неиспользуемых пакетов

Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

4.8 Логирование в syslog

Unattended-Upgrade::SyslogEnable "true";

5. 🧪 Проверка конфигурации

Всегда проверяйте конфигурацию после изменений:

sudo unattended-upgrades --dry-run --debug

Что ищем:

  • Allowed origins — должны быть ваши источники
  • Packages that will be upgraded — список пакетов для обновления
  • Нет ошибок в выводе

6. 📊 Управление сервисом

КомандаЧто делает
systemctl status unattended-upgradesСтатус сервиса
sudo systemctl restart unattended-upgradesПерезапуск сервиса
sudo systemctl disable apt-daily-upgrade.timerОтключение таймера

7. 📜 Просмотр логов

7.1 Логи Unattended Upgrades

sudo cat /var/log/unattended-upgrades/unattended-upgrades.log

7.2 Последние строки

sudo tail -50 /var/log/unattended-upgrades/unattended-upgrades.log

7.3 Поиск по дате

sudo grep "2026-04-28" /var/log/unattended-upgrades/unattended-upgrades.log

7.4 Через journalctl

Если включена syslog-опция:

journalctl -u unattended-upgrades

8. ⚠️ Решение типичных проблем

8.1 Обновления не запускаются автоматически

Причина: Таймер отключён.

Решение:

sudo systemctl enable apt-daily-upgrade.timer
sudo systemctl start apt-daily-upgrade.timer

8.2 Пакеты не обновляются (held back)

Причина: Конфликт зависимостей.

Решение: Проверьте вручную:

sudo apt update
sudo apt --simulate upgrade

Если проблемы есть — выполните полное обновление вручную:

sudo apt upgrade

8.3 Ошибка dpkg lock

Симптом: Could not get lock /var/lib/dpkg/lock-frontend

Решение: Проверьте, не запущен ли другой APT-процесс:

ps aux | grep -E 'apt|dpkg'

Если ничего не работает — удалите锁 (осторожно!):

sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a

8.4 Email-уведомления не работают

Причина: Нет настроенного MTA (mail transfer agent).

Решение: Установите bsd-mailx и postfix:

sudo apt install bsd-mailx postfix -y

При установке Postfix выберите «Internet Site».

9. ⚙️ (Опционально) Настройка cron вместо systemd-таймеров

Если вы хотите задать своё расписание, отключите systemd-таймер и добавьте cron-задание:

sudo systemctl disable apt-daily-upgrade.timer

Добавьте cron-задание:

sudo crontab -e

Пример (ежедневно в 3 часа ночи):

0 3 * * * /usr/bin/unattended-upgrade

10. ❌ Удаление Unattended Upgrades

sudo apt remove unattended-upgrades apt-config-auto-update powermgmt-base -y
sudo apt autoremove -y

Удаление конфигурации (опционально):

sudo rm /etc/apt/apt.conf.d/50unattended-upgrades

11. 📝 Чек-лист: всё готово к работе

  • [ ] Пакет unattended-upgrades установлен
  • [ ] Файл конфигурации /etc/apt/apt.conf.d/50unattended-upgrades настроен
  • [ ] sudo unattended-upgrades --dry-run --debug не показывает ошибок
  • [ ] systemd-таймер активен (systemctl status apt-daily-upgrade.timer)
  • [ ] Email-уведомления настроены
  • [ ] Автоматическая перезагрузка настроена

Заключение

Вы настроили автоматические обновления безопасности на Debian. Это важный шаг для обеспечения безопасности сервера, особенно если вы не можете заходить на него каждый день. Главное, что нужно запомнить: по умолчанию обновляются только пакеты из репозитория безопасности (security.debian.org). Если нужно обновлять и другие репозитории, добавьте их в Origins-Pattern. Всегда проверяйте конфигурацию через --dry-run --debug. Для серверов, где критична доступность, настройте уведомления и время перезагрузки.

Что дальше:

  • Настройте Fail2Ban для защиты от брутфорса
  • Настройте Firewalld или UFW для ограничения доступа
  • Настройте Timeshift для создания снимков перед обновлениями (можно запускать через cron)
  • Настройте SSH-доступ для удалённого управления