Обновление AdGuard Home в контейнере RouterOS 7.24

Mikrotik

RouterOS, маршрутизация, firewall, VPN, Wi‑Fi и практические конфигурации MikroTik.
Ответить
Аватара пользователя
lammeronline Автор темы
Администратор
Сообщения: 72
Зарегистрирован: 29 авг 2026, 20:21
Возраст: 37
Пол: Мужской
Контактная информация:

Обновление AdGuard Home в контейнере RouterOS 7.24

Сообщение lammeronline »

adguard-home-update-routeros-cover.png
adguard-home-update-routeros-cover.png (222.26 КБ) 6 просмотров
Обновление AdGuard Home в контейнере RouterOS 7.24

AdGuard Home на роутере MikroTik работает как контейнер, поэтому встроенное обновление из его веб-интерфейса не подходит: обновляется образ контейнера. Образ скачивается один раз при создании контейнера и сам не меняется, новую версию нужно получить вручную. В RouterOS 7 для этого есть две команды: /container update и /container repull. Если ни одна не сработала, контейнер можно пересоздать с теми же параметрами. Настройки, фильтры и статистика AdGuard хранятся в смонтированных папках вне образа, поэтому при правильной процедуре они сохраняются.

Внимание: пока контейнер остановлен, DNS-запросы клиентов никто не обрабатывает. Обновляйте в удобное время или добавьте в DHCP запасной DNS. Новая версия AdGuard Home может переписать файл настроек, а старая версия его потом не прочитает, поэтому перед началом сохраните копию.

Что потребуется
  • RouterOS 7.x (описанное относится и к 7.24) с включённым пакетом container и разрешёнными контейнерами в device-mode.
  • Работающий контейнер AdGuard Home на внешнем диске (USB или NVMe), а не во внутренней памяти роутера.
  • Образ под архитектуру роутера (arm, arm64 или x86): официальный многоархитектурный adguard/adguardhome обычно подходит. У устройств с процессором EN7562CT поддерживаются только образы arm32v5, и выбор контейнеров ограничен.
  • Свободное место на диске и во временной папке (tmpdir): образ скачивается и распаковывается.
  • Доступ к интернету у самого роутера: ему нужен реестр образов (обычно registry-1.docker.io).
0. Проверяем, где хранятся данные
Код доступен зарегистрированным пользователям. Зарегистрируйтесь Запомните имя контейнера, тег образа (remote-image, например adguard/adguardhome:latest), интерфейс veth, списки переменных (envlist) и монтирований (mountlists), каталог root-dir, start-on-boot, logging и dns, если он задан. Главное: каталоги /opt/adguardhome/conf и /opt/adguardhome/work должны быть смонтированы на диск (dst в /container mounts, src на внешнем диске), а не лежать внутри root-dir. Всё, что в root-dir, при обновлении заменяется новым образом. Текущую версию AdGuard Home видно внизу веб-интерфейса.

1. Резервные копии
Код доступен зарегистрированным пользователям. Зарегистрируйтесь Скачайте оба файла через Winbox (Files). Затем сохраните на компьютер файл настроек AdGuardHome.yaml из каталога, подключённого как /opt/adguardhome/conf (например, usb1/adguard/conf). Папку work (статистика и журнал запросов) копировать необязательно, но полезно.

2. Проверяем, какие команды есть на вашей прошивке

Введите /container и нажмите ? (в терминале Winbox можно Tab): среди команд должны быть update и repull. По документации MikroTik:
  • update — обновляет образ контейнера: сам скачивает его из репозитория, распаковывает и заменяет исходный образ;
  • repull — заново скачивает и распаковывает образ контейнера.
Документация не описывает разницу подробнее и не говорит, с какой версии команды появились и что именно сохраняется при обновлении. Поэтому порядок действий ниже осторожный: остановить, обновить, запустить, проверить.

3. Обновляем образ

Способ А — update:
Код доступен зарегистрированным пользователям. Зарегистрируйтесь Способ Б — repull (если update недоступен или не сменил версию):
Код доступен зарегистрированным пользователям. Зарегистрируйтесь Вместо имени можно указать номер из /container print. Пока идёт скачивание и распаковка, статус контейнера — extracting; дождитесь stopped и только потом выполняйте start. С тегом latest подтянется свежая версия.

Если контейнер собран на закреплённом теге (например adguard/adguardhome:v0.107.xx), обновление по нему версию не изменит. Сначала замените тег на нужный, потом обновляйте:
Код доступен зарегистрированным пользователям. Зарегистрируйтесь Если set не принимает remote-image у уже созданного контейнера, используйте способ 4. Реальный номер версии возьмите на Docker Hub или в релизах AdGuardHome на GitHub.

4. Пересоздаём контейнер, если команды не помогли

Настройки AdGuard лежат в смонтированных папках, поэтому удаление контейнера их не затрагивает. Списки /container envs, /container mounts и интерфейс veth остаются на своих местах. Параметры ниже — пример, подставьте свои из шага 0:
Код доступен зарегистрированным пользователям. Зарегистрируйтесь Если понадобился отдельный DNS для контейнера, добавьте dns= с вашим адресом. Если add жалуется, что root-dir уже существует или занят, удалите старую папку с распакованным образом в Files или укажите новую. Пока статус extracting, контейнер запускать нельзя.

5. Проверка
  1. Статус в /container printrunning.
  2. Журнал: /log print where topics~"container" (нужен logging=yes).
  3. Веб-интерфейс AdGuard Home открывается, версия внизу страницы новая, фильтры и клиенты на месте. Посмотреть внутри контейнера можно и через /container shell adguard (команда входит в оболочку запущенного контейнера).
  4. С компьютера: nslookup example.com IP-адрес-AdGuard возвращает ответ, блокируемый домен блокируется.
  5. После перезагрузки роутера контейнер поднимается сам (start-on-boot=yes).
Откат, если что-то не так
  • Остановите контейнер и верните сохранённый AdGuardHome.yaml в папку conf.
  • Пересоздайте контейнер (способ 4) с образом предыдущей версии, указав её тег, например adguard/adguardhome:v0.107.xx.
  • В крайнем случае восстановите конфигурацию роутера из резервной копии.
Частые проблемы
  • Статус error или образ не скачивается: у роутера должны работать собственные DNS (/ip dns servers), не зависящие от остановленного AdGuard, иначе он не найдёт реестр образов. Проверьте registry-url и tmpdir в /container config и доступ роутера в интернет.
  • «Нет места»: укажите tmpdir на внешнем диске и освободите место. Для скачивания и распаковки нужно несколько сотен мегабайт.
  • Клиенты остались без DNS после остановки: добавьте в DHCP-сервер второй DNS на время работ.
  • Контейнер не останавливается: RouterOS ждёт около 10 секунд, затем шлёт сигнал (stop-signal); если завис, используйте /container kill.
  • Контейнер не стартует после обновления: посмотрите журнал; чаще всего мешает несовместимая версия файла AdGuardHome.yaml, тогда верните копию и пересоздайте контейнер на предыдущем теге.
Совет: не полагайтесь на тег latest

Образ с тегом latest меняется без предупреждения: повторная распаковка принесёт другую версию, когда вы этого не ждёте. Надёжнее закрепить конкретную версию и обновлять её осознанно после чтения списка изменений. Наш анализатор RouterOS export (раздел «Инструменты» на сайте) предупреждает о контейнерах на latest и заодно проверяет остальную конфигурацию роутера.

Changelog
  • 20.09.2026 — добавлены команда repull, проверка монтирований и доступных команд, замена закреплённого тега, ограничение по архитектуре, kill и shell.
  • 20.09.2026 — первая версия: обновление через /container update, пересоздание контейнера, проверка и откат.
Последний раз редактировалось lammeronline 20 сен 2026, 23:26, всего редактировалось 2 раза.
Причина: Убрана ссылка на инструмент
Ответить