Показали, как настроить автоматическое обновление системных пакетов на сервере Ubuntu — от установки нужных компонентов до проверки работы. Описали способы, позволяющие системе самостоятельно устанавливать важные обновления без участия администратора. Это особенно важно для VPS, где нет полноценного системного администратора и всё приходится делать самостоятельно.
Зачем вообще обновлять сервер
Сервер работает, сайт грузится, письма идут — всё вроде хорошо. Но через пару месяцев — сообщения об уязвимостях, ошибки, сбои. Почему?
Потому что сервер — особенно VPS, доступный по SSH из любой точки мира — живёт в мире постоянных атак, багов и дыр. Без регулярных обновлений утекут данные, упадут сервисы или к серверу подключатся майнеры.
Обновления закрывают известные уязвимости, устраняют критические ошибки, повышают совместимость и стабильность работы. Это особенно актуально для VPS с ограниченными ресурсами: любое внедрение вредоносного кода или сбой из-за старых пакетов может привести к перегрузке, недоступности сайта и дополнительным расходам. Поэтому автообновление — базовая мера безопасности, которая должна быть включена сразу после запуска сервера.
Обновлять нужно вручную:
- зайти как суперпользователь,
- проверить обновления,
- установить,
- перезагрузить.

Если забыли, уехали, не умеете — сервер останется без защиты.
Чтобы не заниматься этим вручную, и нужна unattended-upgrades — утилита, которая сама ищет, сравнивает и устанавливает обновления без вашего участия. Она особенно полезна на VPS, где всё держится на одном-единственном человеке — вас. Не всегда есть возможность отслеживать выход новых патчей, заходить на сервер и вручную ставить всё нужное.
Unattended-upgrades — это системная программа Ubuntu, которая автоматически устанавливает безопасные обновления. Особое внимание уделяется устранению уязвимостей, влияющих на безопасность и стабильность сервера.
Каждая часть системы — это отдельный пакет. Он может содержать код, модули ядра, зависимости, службы и утилиты. Обновление пакетов позволяет закрывать дыры, исправлять ошибки, улучшать производительность и совместимость с другими компонентами.
Если настроить всё правильно, утилита будет регулярно ставить только критически важные обновления, не трогая нестабильные или экспериментальные пакеты. Это снижает риск что-то сломать, но при этом обеспечивает базовый уровень безопасности, без которого ни один сервер не может считаться надёжным.
Подключение к серверу
Если вы впервые открыли Ubuntu-сервер, скорее всего, у вас есть письмо от хостинга или VPS-провайдера с названием «Доступ к серверу». Там должны быть три вещи:
- IP-адрес — цифровой адрес вашего сервера, например: 123.45.67.89;
- логин — чаще всего это root (администратор);
- пароль — длинная строчка из букв и цифр.
Вам понадобится программа для подключения ― PuTTY или терминал.
Для Windows: скачайте бесплатную программу PuTTY.
Для macOS или Linux: просто откройте приложение «Терминал». В командной строке (в терминале) вводим:
ssh root@123.45.67.89
Замените адрес на свой, а root ― на имя пользователя, под которым подключаетесь.
Вас попросят ввести пароль — копируйте его и вставьте (в терминале символы не отображаются — это нормально).
Если вы вошли, значит смотрите на внутренности сервера.
Настройка автообновлений
Перейдём непосредственно к настройке обновлений.
Установка пакета unattended-upgrades
В Ubuntu он чаще всего уже установлен. На всякий случай выполним:
apt update && apt install unattended-upgrades -y
Если пакет уже есть — система просто ничего не переустановит. Если его не было — он добавится, без лишних вопросов (-y).
Включаем автообновления
Запускаем встроенный конфигуратор:
dpkg-reconfigure --priority=low unattended-upgrades
Появится синий экран с вопросом:
«Automatically download and install stable updates?»
Нужно выбрать Yes. Это включает автообновление только важных пакетов безопасности.
Важно
Если пропустить этот шаг, программа установится, но ничего делать не будет.
Настройка — что обновляется, а что нет
Открываем основной файл:
nano /etc/apt/apt.conf.d/50unattended-upgrades
Ищем раздел:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
Что означают строки:
- -security — обязательно оставить, именно это закрывает уязвимости;
- -updates — можно включить, если хотите получать обычные исправления;
- -proposed, -backports — не включайте, они могут содержать нестабильные пакеты.
Чтобы включить updates, просто уберите //:
"${distro_id}:${distro_codename}-updates"
Если после настройки ничего не обновляется, проверьте правильно ли указаны названия дистрибутива (buster, focal, jammy и т.д.).
Убедитесь, что в:
/etc/apt/sources.list
есть соответствующие репозитории (-security, -updates).
Запустите отладку:
unattended-upgrades --dry-run --debug
Если увидите «No packages found that can be upgraded» — всё работает, просто система и так уже обновлена.
Нужно ли перезагружать сервер после обновлений
По умолчанию — нет.
В файле 50unattended-upgrades найдите:
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "02:00"
Хотите, чтобы сервер сам перезагружался, если обновилось ядро или glibc? Тогда замените false на true.
Осторожно: если на сервере крутится сайт или база данных, перезагрузка без уведомления может всё остановить. Лучше оставить false и следить вручную.
Расписание обновлений
Открываем второй файл:
nano /etc/apt/apt.conf.d/20auto-upgrades
В нём задаётся когда и что делать:
- APT::Periodic::Update-Package-Lists "1" ― обновлять список пакетов каждый день;
- APT::Periodic::Download-Upgradeable-Packages "1" ― загружать доступные пакеты;
- APT::Periodic::AutocleanInterval "7" ― удалять старые пакеты раз в неделю;
- APT::Periodic::Unattended-Upgrade "1" ― запускать обновление каждый день.
- Значение "1" — это каждый день, "7" — раз в неделю. Если хотите реже — укажите "2", "3" и т.д.
Проверка логов и отладка
Журналы записываются в:
/var/log/unattended-upgrades/
Показать текущий:
less /var/log/unattended-upgrades/unattended-upgrades.log
Полезно проверить, были ли ошибки или обновления.
Отладка:
unattended-upgrades --dry-run --debug
Если увидите:
pkgs that look like they should be upgraded:
...
Packages that will be upgraded:
...
Значит, всё работает. Если пусто — ничего не обновлялось.
Уведомления на почту
По умолчанию уведомления не приходят. Чтобы получать отчёты открываем 50unattended-upgrades.
Находим:
//Unattended-Upgrade::Mail "root"
Меняем на:
Unattended-Upgrade::Mail "you@example.com"
Теперь отчёты будут отправляться на указанный почтовый адрес.
Важно, чтобы на сервере был настроен почтовый агент (например msmtp, sendmail, postfix). О настройке msmtp — в следующем разделе.
Настройка отправки писем через msmtp (для уведомлений)
Чтобы сервер мог отправлять письма (например, уведомления об обновлениях), нужен почтовый клиент. Один из самых простых — msmtp.
Он не получает письма, не требует сложной настройки и просто переадресует отправку через внешний SMTP-сервер, например от Mail.ru, Gmail, Yandex.
Устанавливаем msmtp и утилиту mail
В терминале вводим:
apt update && apt install msmtp msmtp-mta bsd-mailx -y
Что мы ставим:
- msmtp — сам почтовый клиент;
- msmtp-mta — делает его совместимым с программами, которые используют системную почту (mail, cron, unattended-upgrades);
- bsd-mailx — утилита mail, чтобы можно было тестировать отправку из терминала.
Настройка msmtp
Создаём файл конфигурации:
nano /etc/msmtprc
Пример для Mail.ru:
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
account default
host smtp.mail.ru
port 587
from yourlogin@mail.ru
user yourlogin@mail.ru
password ВАШ_ПАРОЛЬ
Пояснения:
- host и port — сервер и порт вашего почтового провайдера;
- from — адрес отправителя;
- user и password — данные от почты (можно использовать пароль приложения, если провайдер требует);
- logfile — журнал отправки писем, пригодится для отладки.
Важно
Убедитесь, что у почтового сервиса разрешена SMTP-отправка.
Безопасность
Не храним пароль в открытом виде.
Файл /etc/msmtprc должен быть доступен только для чтения пользователем root:
chmod 600 /etc/msmtprc
chown root:root /etc/msmtprc
Если этого не сделать, пароль от почты может прочитать любой пользователь сервера.
Проверка отправки
Попробуйте отправить письмо:
echo "Проверка почты" | mail -s "Тест" you@example.com
Если всё настроено верно — письмо дойдёт.
Если нет — проверьте журнал:
less /var/log/msmtp.log
Возможные ошибки и что делать
Ошибка TLS. Убедитесь, что tls_trust_file указан правильно и файл существует. В Ubuntu/Debian это обычно:
/etc/ssl/certs/ca-certificates.crt
Ошибка аутентификации. Проверьте user, password. Некоторые сервисы требуют специальный пароль приложения, особенно Gmail и Яндекс.
Ошибка соединения. Проверьте, открыт ли порт 587 в файрволе и не блокирует ли сервер исходящие соединения (это бывает у некоторых VPS-провайдеров).
Уведомления от unattended-upgrades
Если вы указали адрес в:
Unattended-Upgrade::Mail "you@example.com";
то после обновлений вы будете получать письма с результатами (что обновилось, были ли ошибки и т.д.).
Альтернатива: без отправки почты
Если не хотите настраивать SMTP, можно просто проверять логи вручную:
less /var/log/unattended-upgrades/unattended-upgrades.log
или включить Telegram-бота, систему мониторинга и т.д. Но для простого сервера msmtp + mail — самый лёгкий и надёжный способ.
Как убедиться, что всё работает
Мини-чеклист:
- установлен unattended-upgrades;
- включён через dpkg-reconfigure;
- настроены репозитории в 50unattended-upgrades;
- установлено расписание в 20auto-upgrades;
- обновления приходят (проверено --dry-run --debug);
- почта отправляется (msmtp настроен, mail работает).
Если всё это сделано — сервер будет обновляться сам, без ошибок и с уведомлениями.
Читайте в блоге:
- Как установить Nginx, PHP и MySQL/MariaDB (LEMP-стек) в Ubuntu 22.04
- Как назначить статический IP-адрес в Ubuntu 22.04
- Как включить и настроить брандмауэр UFW в Ubuntu 22.04