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).
Код доступен зарегистрированным пользователям. Зарегистрируйтесь Запомните имя контейнера, тег образа (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. Проверка
- Статус в /container print — running.
- Журнал: /log print where topics~"container" (нужен logging=yes).
- Веб-интерфейс AdGuard Home открывается, версия внизу страницы новая, фильтры и клиенты на месте. Посмотреть внутри контейнера можно и через /container shell adguard (команда входит в оболочку запущенного контейнера).
- С компьютера: nslookup example.com IP-адрес-AdGuard возвращает ответ, блокируемый домен блокируется.
- После перезагрузки роутера контейнер поднимается сам (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 меняется без предупреждения: повторная распаковка принесёт другую версию, когда вы этого не ждёте. Надёжнее закрепить конкретную версию и обновлять её осознанно после чтения списка изменений. Наш анализатор RouterOS export (раздел «Инструменты» на сайте) предупреждает о контейнерах на latest и заодно проверяет остальную конфигурацию роутера.
Changelog
- 20.09.2026 — добавлены команда repull, проверка монтирований и доступных команд, замена закреплённого тега, ограничение по архитектуре, kill и shell.
- 20.09.2026 — первая версия: обновление через /container update, пересоздание контейнера, проверка и откат.