Автообновления Ubuntu — самый дешёвый способ защитить сервер: пакет unattended-upgrades сам скачивает и устанавливает обновления безопасности, пока вы занимаетесь своими делами. Это критично, потому что между публикацией уязвимости и началом её массовой эксплуатации ботами проходят считанные дни, а иногда часы — вспомните дыры в OpenSSH, OpenSSL или sudo. Сервер, который никто не обновлял три месяца, — лёгкая добыча. В этой инструкции настроим автоматические обновления безопасности на Ubuntu 24.04 LTS за 15 минут: установка, тонкая настройка, автоперезагрузка, исключения и проверка, что всё действительно работает.
Как устроены автообновления в Ubuntu
За автоматику отвечают три компонента:
- unattended-upgrades — скрипт, который выбирает и ставит обновления из разрешённых источников;
- systemd-таймеры
apt-daily.timer(скачивает списки пакетов) иapt-daily-upgrade.timer(запускает установку) — они заменяют старый cron; - конфиги в /etc/apt/apt.conf.d/ — файл
20auto-upgradesвключает механизм, файл50unattended-upgradesопределяет, что именно ставить.
По умолчанию устанавливаются только обновления из ветки безопасности (noble-security для Ubuntu 24.04). Это патчи, которые Canonical выпускает без смены версий программ — то есть исправления уязвимостей без новых функций и, как следствие, с минимальным риском что-то сломать. Обычные обновления и релизные апгрейды автоматика не трогает: они остаются за вами, и о правильном ручном процессе мы писали в статье о том, как правильно обновлять сервер на Ubuntu/Debian.
Шаг 1. Установка unattended-upgrades
На свежих образах Ubuntu Server пакет часто уже стоит, но проверить не помешает:
sudo apt update
sudo apt install -y unattended-upgrades apt-listchanges
apt-listchanges — опциональное дополнение: оно собирает список изменений в пакетах, который удобно получать в отчётах.
Шаг 2. Включение автообновлений
Самый простой способ — штатный диалог:
sudo dpkg-reconfigure --priority=low unattended-upgrades
Ответьте «Yes» — утилита создаст файл /etc/apt/apt.conf.d/20auto-upgrades с содержимым:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
«1» означает «раз в день». Тот же файл можно создать и вручную без диалога — результат одинаковый. Проверьте, что таймеры активны:
systemctl list-timers apt-daily.timer apt-daily-upgrade.timer
Шаг 3. Тонкая настройка 50unattended-upgrades
Главный конфиг — /etc/apt/apt.conf.d/50unattended-upgrades. Откройте его:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Источники обновлений
В начале файла — секция Unattended-Upgrade::Allowed-Origins. По умолчанию раскомментированы именно те строки, которые нужны для обновлений безопасности:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
// "${distro_id}:${distro_codename}-updates";
};
Для боевого сервера этого достаточно. Если хотите, чтобы автоматически ставились и обычные исправления (не только security), раскомментируйте строку с -updates — но для продакшена консервативный вариант надёжнее.
Полезные опции
Найдите и настройте следующие параметры (сняв // в начале строки):
// Удалять неиспользуемые зависимости после обновления:
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Перезагружаться автоматически, если обновление этого требует:
Unattended-Upgrade::Automatic-Reboot "true";
// ...но только ночью, когда трафик минимален:
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
// Отчёт на почту (нужен настроенный отправитель, например msmtp):
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "only-on-error";
Автоперезагрузка — вопрос политики. Для личного проекта или тестового сервера смело включайте: ночной рестарт на минуту незаметен. Для продакшена с базой данных многие предпочитают "false" и перезагрузку вручную в согласованное окно. Компромисс: включить автоперезагрузку, но следить за состоянием сервера — как это организовать, читайте в статье про мониторинг VPS с уведомлениями в Telegram.
Исключения: что не обновлять автоматически
Если какой-то пакет должен оставаться замороженным (например, вы держите конкретную версию из-за совместимости), добавьте его в чёрный список:
Unattended-Upgrade::Package-Blacklist {
"postgresql-16";
// регулярные выражения тоже работают:
// "linux-";
};
Шаг 4. Проверка: dry-run и логи
Убедитесь, что конфигурация валидна и автоматика видит обновления, ничего при этом не устанавливая:
sudo unattended-upgrade --dry-run --debug
В выводе должны быть строки Allowed origins are: ... и список пакетов к установке (или сообщение, что обновлять нечего). Ошибок быть не должно. Запустить установку принудительно, не дожидаясь таймера, можно так:
sudo unattended-upgrade --debug
Вся история работы пишется в лог — заглядывайте туда при разборе полётов:
tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
Подробности о каждой установке пакетов — в /var/log/unattended-upgrades/unattended-upgrades-dpkg.log.
Перезагрузки и needrestart: чего автоматика не умеет
Два важных ограничения, о которых часто забывают:
- Новое ядро работает только после перезагрузки. Пакет установится, но сервер продолжит работать на старом ядре. Индикатор — файл
/var/run/reboot-required: если он существует, нужен рестарт. Проверка одной строкой:cat /var/run/reboot-required 2>/dev/null || echo "Перезагрузка не требуется". - Обновлённые библиотеки не подхватываются работающими сервисами. Если обновился OpenSSL, то Nginx, ставший на него ссылаться, продолжает держать в памяти старую версию до рестарта. В Ubuntu 24.04 за это отвечает утилита needrestart — она входит в серверную поставку и после обновлений перезапускает затронутые сервисы или сообщает о них. Посмотреть, что требует рестарта:
sudo needrestart -b.
Практический вывод: автообновления — не «поставил и забыл навсегда», а «поставил и заглядываю раз в неделю». Это всё равно на порядок надёжнее, чем вспоминать про apt upgrade раз в квартал.
Рекомендуемые конфигурации под разные сценарии
| Сценарий | Источники | Автоперезагрузка | Комментарий |
|---|---|---|---|
| Личный сайт, пет-проект | security + updates | Да, 04:00 | Максимум автоматики, минимум внимания |
| Продакшен с БД | только security | Нет | Рестарт вручную в окно обслуживания |
| Мелкие фоновые серверы (боты, кроны) | security + updates | Да, 05:00 | Простой на минуту ночью не критичен |
| Тестовый / staging | security + updates | Да, любое время | Заодно ловите проблемы раньше продакшена |
Третий сценарий — типичный случай для недорогих серверов под Telegram-ботов и скрипты: например, на NAT VPS от Cheap-Host за 59–349 ₽/мес unattended-upgrades с автоперезагрузкой позволяет вообще не вспоминать об администрировании неделями. Для сайтов на обычном VPS (у Cheap-Host это тариф Start: 6 vCPU, 8 ГБ RAM, 96 ГБ NVMe за 450 ₽/мес) подойдёт первый или второй профиль.
Место автообновлений в общей защите сервера
Unattended-upgrades закрывает один — но очень важный — пункт обороны: свежесть пакетов. Полный периметр включает SSH-ключи, файрвол, Fail2ban и бэкапы; всё вместе собрано в нашем чек-листе безопасности VPS из 15 пунктов. Если сервер у вас совсем новый, начните с первых 10 шагов после покупки VPS — автообновления там идут сразу после базовой настройки доступа.
FAQ
Может ли unattended-upgrades сломать сервер?
Риск минимален: по умолчанию ставятся только патчи безопасности из noble-security, которые выпускаются без смены версий ПО. Ломающие изменения приходят с мажорными обновлениями, которые автоматика не выполняет.
Обновляет ли unattended-upgrades ядро?
Да, пакеты ядра из security-ветки ставятся, но заработает новое ядро только после перезагрузки. Включите Automatic-Reboot с ночным временем или следите за /var/run/reboot-required.
Как исключить пакет из автообновлений?
Добавьте его в Unattended-Upgrade::Package-Blacklist в файле 50unattended-upgrades. Поддерживаются регулярные выражения: "linux-" исключит все пакеты ядра.
Как убедиться, что автообновления работают?
Смотрите /var/log/unattended-upgrades/unattended-upgrades.log — там фиксируется каждый запуск. Плюс проверьте, что таймеры apt-daily.timer и apt-daily-upgrade.timer активны.
Заменяет ли это ручное обновление сервера?
Нет. Автоматика закрывает только безопасность. apt full-upgrade и переход на новые релизы Ubuntu по-прежнему делаются вручную — достаточно раза в месяц.
Вывод
Пятнадцать минут на установку unattended-upgrades избавляют от главного риска заброшенных серверов — незакрытых уязвимостей. Схема простая: установить пакет, включить через dpkg-reconfigure, проверить источники в 50unattended-upgrades, решить вопрос с автоперезагрузкой и прогнать --dry-run. Дальше система сама держит себя в актуальном состоянии, а вам остаётся раз в неделю заглянуть в лог.
Если нужен сервер под сайт или приложение, которое должно просто работать, — у Cheap-Host тариф Start от 450 ₽/мес: NVMe, KVM с полным root, безлимитный трафик и выдача сервера за 45–60 секунд. Установить Ubuntu 24.04 и включить автообновления можно в первые же десять минут. Тарифы — на cheap-host.onl.