App-каталог контейнеров в RouterOS 7.22
App-каталог контейнеров в RouterOS 7.22 — установка приложений в один клик
Начиная с RouterOS 7.22, MikroTik представила встроенный App-каталог для контейнерных приложений. Вместо ручной настройки veth, bridge, переменных окружения и точек монтирования — теперь достаточно выбрать приложение из каталога и нажать «Install». Система автоматически скачает образ, настроит сеть и хранилище. В этом руководстве разберём концепцию App-каталога, процесс установки приложений через WinBox и CLI, управление, обновление и ограничения на RouterOS 7.22+.
Описание
Что такое App-каталог
App-каталог — это встроенный в RouterOS интерфейс для установки контейнерных приложений. По сути, MikroTik добавили уровень абстракции поверх container-подсистемы:
| Аспект | Ручная установка контейнера | App-каталог |
|---|---|---|
| Создание veth | Вручную | Автоматически |
| Настройка bridge | Вручную | Автоматически |
| IP-адресация | Вручную | Автоматически |
| Переменные окружения | Вручную | Шаблон + пользовательские параметры |
| Точки монтирования | Вручную | Автоматически |
| Скачивание образа | remote-image из registry | Из каталога MikroTik |
| Совместимость | Любой OCI-образ | Только проверенные MikroTik |
| Время настройки | 10–30 минут | 2–5 минут |
App-каталог не заменяет ручную установку контейнеров — он дополняет её для популярных приложений. Вы по-прежнему можете устанавливать любые OCI-образы вручную через /container/add.
Как это работает
- MikroTik публикует каталог проверенных приложений на своих серверах.
- Маршрутизатор скачивает список доступных приложений.
- Пользователь выбирает приложение и задаёт базовые параметры (пароль, порт и т.д.).
- RouterOS автоматически:
- создаёт veth-интерфейс;
- добавляет его в bridge (или создаёт новый);
- назначает IP-адрес;
- создаёт переменные окружения;
- создаёт точки монтирования;
- скачивает и запускает контейнер.
Доступные приложения
Каталог приложений обновляется MikroTik. На момент выхода функции типичные категории включают:
| Категория | Примеры приложений | Назначение |
|---|---|---|
| DNS-фильтрация | Pi-hole, AdGuard Home | Блокировка рекламы |
| Мониторинг | Prometheus node_exporter, Grafana | Мониторинг сети |
| Веб-серверы | Nginx, Caddy | Хостинг и reverse proxy |
| Файловый доступ | Nextcloud (лёгкая версия) | Облачное хранилище |
| VPN / Proxy | WireGuard UI, 3proxy | Расширенный VPN |
| Утилиты | DDNS-клиенты, cron-утилиты | Вспомогательные сервисы |
Важно: конкретный состав каталога зависит от версии RouterOS и обновлений от MikroTik. Актуальный список доступен на устройстве после обновления до 7.22+ или на сайте mikrotik.com.
Требования
| Требование | Описание |
|---|---|
| RouterOS | 7.22 и выше |
| Container mode | Активирован (/system/device-mode/update container=yes) |
| Архитектура | ARM64 или x86 (не все приложения доступны для ARM) |
| RAM | Минимум 256 МБ свободной (зависит от приложения) |
| Хранилище | USB-накопитель или достаточный объём встроенного NAND |
| Интернет | Для скачивания приложений |
| WinBox | Версия 4.x для полного GUI-опыта (CLI доступен всегда) |
Настройка
Шаг 1: Обновление RouterOS до 7.22+
Перед использованием App-каталога убедитесь, что RouterOS обновлён:
[admin@MikroTik] ># Проверка текущей версии /system/resource/print # Проверка доступных обновлений /system/package/update/check-for-updates # Обновление (если доступно) /system/package/update/install
После перезагрузки убедитесь, что версия 7.22 или выше.
Шаг 2: Включение container mode
Если container mode ещё не активирован:
[admin@MikroTik] >/system/device-mode/update container=yes # Нажмите кнопку reset на устройстве для подтверждения # Для CHR — перезагрузите систему
Проверка:
[admin@MikroTik] >/system/device-mode/print # container: yes
Шаг 3: Подготовка хранилища
[admin@MikroTik] ># Проверка дисков /disk/print # Форматирование USB (если не отформатирован) /disk/format-drive usb1 file-system=ext4 label=apps # Настройка контейнерной среды /container/config/set tmpdir=usb1/tmp ram-high=768M registry-url=https://registry-1.docker.io
Шаг 4: Установка приложения через WinBox
В WinBox 4.x:
- Откройте меню Container → App Catalog (или System → Container → Apps).
- Дождитесь загрузки списка приложений (требуется интернет).
- Выберите приложение (например, AdGuard Home).
- Нажмите Install.
- В диалоге настройки укажите параметры:
- Storage — выберите USB-накопитель;
- Network — IP-адрес для приложения (предложен автоматически);
- Password — пароль администратора (если применимо);
- Additional settings — специфичные для приложения параметры.
- Нажмите OK — система начнёт скачивание и настройку.
- После завершения приложение появится в списке контейнеров.
Шаг 5: Установка приложения через CLI
Для тех, кто предпочитает командную строку или работает удалённо через SSH:
[admin@MikroTik] ># Просмотр доступных приложений в каталоге /container/app/print # Установка приложения (пример — AdGuard Home) /container/app/install name=adguard-home storage=usb1 # Просмотр параметров приложения перед установкой /container/app/print detail where name=adguard-home
При установке через CLI система запросит необходимые параметры или использует значения по умолчанию. Основные параметры можно задать сразу:
[admin@MikroTik] ># Установка с параметрами /container/app/install name=adguard-home storage=usb1 interface-address=172.17.0.3/24 gateway=172.17.0.1
После установки приложение автоматически создаёт все необходимые сущности:
[admin@MikroTik] ># Проверяем созданные ресурсы /interface/veth/print /interface/bridge/port/print /container/envs/print /container/mounts/print /container/print
Шаг 6: Запуск приложения
Если приложение не запустилось автоматически:
[admin@MikroTik] ># Найти контейнер приложения /container/print # Запустить /container/start [/container/find where comment~"adguard"]
Для приложений из каталога обычно автоматически устанавливается start-on-boot=yes.
Шаг 7: Доступ к веб-интерфейсу приложения
После установки приложение доступно по IP-адресу, который был назначен при установке:
[admin@MikroTik] ># Узнаём IP-адрес приложения /interface/veth/print where comment~"adguard"
Откройте в браузере:
codehttp://<app-ip-address>
Для AdGuard Home — порт 3000 (мастер настройки) или 80 (после настройки). Для Pi-hole — порт 80 (/admin).
Шаг 8: Настройка сети после установки
App-каталог создаёт базовую сетевую конфигурацию. Дополнительно может потребоваться:
NAT для приложения
[admin@MikroTik] ># Если masquerade для контейнерной подсети ещё не настроен /ip/firewall/nat/print where comment~"Container" # Если правила нет: /ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24 out-interface-list=WAN comment="Container NAT"
DNS-перенаправление (для DNS-фильтров)
[admin@MikroTik] ># Если установили AdGuard Home или Pi-hole /ip/dns/set servers=172.17.0.3 allow-remote-requests=yes
Проброс портов (если нужен доступ извне)
[admin@MikroTik] ># Пример: проброс порта для веб-сервера /ip/firewall/nat/add chain=dstnat action=dst-nat to-addresses=172.17.0.10 to-ports=80 protocol=tcp dst-port=8080 in-interface-list=WAN comment="Forward to app web server"
Проверка
Проверка установленных приложений
[admin@MikroTik] ># Список установленных приложений /container/app/print # Статус контейнеров /container/print # Подробная информация /container/print detail
Проверка сетевой инфраструктуры
[admin@MikroTik] ># veth-интерфейсы приложений /interface/veth/print # Bridge-порты /interface/bridge/port/print # IP-адреса /ip/address/print where interface~"bridge-container" # NAT-правила /ip/firewall/nat/print where comment~"Container"
Проверка работоспособности приложения
[admin@MikroTik] ># Пинг приложения /ping 172.17.0.3 count=4 # HTTP-доступ (если приложение веб-сервер) /tool/fetch url="http://172.17.0.3" mode=http dst-path=app-test.html # Логи контейнера /log/print where topics~"container"
Проверка ресурсов
[admin@MikroTik] ># Общее состояние системы /system/resource/print # Свободное место на USB /disk/print # Контейнеры и их потребление /container/print detail
Сравнение: каталог vs ручная установка
Проверим, что App-каталог создал те же сущности, что создаются вручную:
[admin@MikroTik] ># Все veth-интерфейсы /interface/veth/print # Должен быть veth для каждого приложения # Все mounts /container/mounts/print # Должны быть точки монтирования для persistent-данных # Все envs /container/envs/print # Должны быть переменные окружения # Bridge-порты /interface/bridge/port/print # veth должен быть в bridge
Типичные ошибки
Ошибка 1: «App catalog not available» — каталог не загружается
Симптом: при открытии App Catalog в WinBox или выполнении /container/app/print — пустой список или ошибка.
Причина: нет доступа к серверам MikroTik, RouterOS ниже 7.22, или container mode не активирован.
Решение:
[admin@MikroTik] ># 1. Проверяем версию RouterOS /system/resource/print # Версия должна быть 7.22+ # 2. Проверяем container mode /system/device-mode/print # container: yes # 3. Проверяем интернет-доступ /ping download.mikrotik.com count=4 /ping registry-1.docker.io count=4 # 4. Проверяем DNS /ip/dns/print /tool/dns-query name=download.mikrotik.com # 5. Обновляем список приложений (если команда доступна) /container/app/refresh
Ошибка 2: «Not enough space» — недостаточно места
Симптом: установка приложения не начинается из-за нехватки места.
Причина: на выбранном хранилище недостаточно свободного места для образа контейнера.
Решение:
[admin@MikroTik] ># Проверяем свободное место /disk/print /system/resource/print # Очищаем ненужные файлы /file/print /file/remove [find where name~"backup"] # Удаляем неиспользуемые контейнеры /container/stop [find where status=running] /container/remove [find] # Используйте USB-накопитель большего объёма (рекомендуется 8 ГБ+)
Типичные размеры образов:
- AdGuard Home: ~50 МБ (ARM64);
- Pi-hole: ~200 МБ (ARM64);
- Nginx: ~40 МБ (alpine);
- Nextcloud: ~500+ МБ.
Ошибка 3: Приложение не запускается после установки
Симптом: установка завершена, но контейнер в статусе error или stopped.
Причина: несовместимость архитектуры, недостаточно RAM, или ошибка в конфигурации.
Решение:
[admin@MikroTik] ># Проверяем статус и ошибки /container/print detail # Проверяем логи /log/print where topics~"container" # Проверяем архитектуру устройства /system/resource/print # architecture-name должен соответствовать образу (arm64, x86) # Проверяем свободную RAM /system/resource/print # free-memory должно быть больше требований приложения # Пробуем запустить вручную /container/start 0 # Если ошибка архитектуры — это приложение не поддерживается на вашем устройстве
Ошибка 4: Конфликт IP-адресов
Симптом: после установки нескольких приложений одно или оба не работают.
Причина: два приложения получили одинаковый IP-адрес или подсеть конфликтует с существующей.
Решение:
[admin@MikroTik] ># Проверяем все IP-адреса /ip/address/print /interface/veth/print # Если конфликт — меняем IP на veth /interface/veth/set [find where name=veth-app2] address=172.17.0.4/24 # Проверяем, что подсеть 172.17.0.0/24 не используется для других целей # Если используется — выберите другую подсеть при установке (например, 172.18.0.0/24)
Ошибка 5: Приложение работает, но недоступно из LAN
Симптом: контейнер в статусе running, пинг с маршрутизатора проходит, но из LAN доступа нет.
Причина: отсутствует маршрут из LAN-подсети в контейнерную подсеть, или firewall блокирует.
Решение:
[admin@MikroTik] ># Проверяем маршрутизацию /ip/route/print where dst-address~"172.17" # Маршрут должен быть автоматически (connected) через bridge-containers # Проверяем firewall /ip/firewall/filter/print where action=drop # Добавляем разрешающее правило (если firewall блокирует) /ip/firewall/filter/add chain=forward action=accept src-address=192.168.88.0/24 dst-address=172.17.0.0/24 comment="Allow LAN to containers"
Ошибка 6: Обновление приложения из каталога
Симптом: как обновить приложение, установленное из каталога?
Процедура обновления приложений из App-каталога:
[admin@MikroTik] ># Вариант 1: через каталог (если поддерживается в вашей версии) /container/app/upgrade [find where name=adguard-home] # Вариант 2: ручное обновление (универсальный способ) # 1. Запоминаем параметры /container/print detail where comment~"adguard" /interface/veth/print where comment~"adguard" /container/envs/print where name~"adguard" /container/mounts/print where name~"adguard" # 2. Останавливаем и удаляем контейнер /container/stop [find where comment~"adguard"] /container/remove [find where comment~"adguard"] # 3. Переустанавливаем из каталога /container/app/install name=adguard-home storage=usb1 # Данные в persistent-директориях (mounts) сохранятся
Ограничения App-каталога
Важно понимать ограничения:
-
Только проверенные образы — в каталоге доступны только приложения, прошедшие проверку MikroTik. Произвольные Docker-образы устанавливаются вручную через
/container/add. -
Зависимость от MikroTik — если серверы MikroTik недоступны, новые приложения нельзя установить. Уже установленные продолжают работать.
-
Ограниченная кастомизация — App-каталог предлагает базовые параметры. Для тонкой настройки придётся редактировать конфигурацию вручную после установки.
-
Не все архитектуры — некоторые приложения доступны только для ARM64 или только для x86. Проверяйте совместимость перед установкой.
-
Нет автообновления — приложения не обновляются автоматически. Обновление требует ручного действия.
-
Один экземпляр — каталог обычно устанавливает один экземпляр приложения. Для нескольких экземпляров используйте ручную установку.
Рекомендации по выбору приложений
| Задача | Рекомендуемое приложение | RAM | Примечание |
|---|---|---|---|
| Блокировка рекламы | AdGuard Home | 50–100 МБ | Встроенный DoH, меньше ресурсов |
| Блокировка рекламы (альтернатива) | Pi-hole | 80–150 МБ | Больше сообщество |
| Reverse proxy | Nginx / Caddy | 20–50 МБ | Для хостинга или SSL termination |
| Мониторинг | Prometheus exporter | 20–50 МБ | Метрики устройства |
| DDNS | ddclient / cloudflare-ddns | 10–20 МБ | Обновление DNS-записей |
Для устройств с 512 МБ RAM (RB5009) рекомендуется запускать не более 2 приложений суммарным потреблением до 200 МБ.
Миграция с ручной установки на App-каталог
Если у вас уже есть контейнеры, установленные вручную, и вы хотите перейти на App-каталог:
- Сохраните persistent-данные (mounts) — они сохранятся на USB.
- Запишите текущие настройки (IP, envs, mounts).
- Остановите и удалите контейнер.
- Установите приложение из каталога.
- Если App-каталог создал новые mounts — скопируйте данные из старых директорий в новые.
[admin@MikroTik] ># Экспорт текущей конфигурации перед миграцией /container/print detail file=container-backup /container/envs/print file=envs-backup /container/mounts/print file=mounts-backup /interface/veth/print file=veth-backup
Миграция не обязательна — ручные контейнеры и App-каталог работают параллельно. Выбирайте тот подход, который удобнее для конкретного приложения.
# Проверка текущей версии /system/resource/print # Проверка доступных обновлений /system/package/update/check-for-updates # Обновление (если доступно) /system/package/update/install /system/device-mode/update container=yes # Нажмите кнопку reset на устройстве для подтверждения # Для CHR — перезагрузите систему /system/device-mode/print # container: yes # Проверка дисков /disk/print # Форматирование USB (если не отформатирован) /disk/format-drive usb1 file-system=ext4 label=apps # Настройка контейнерной среды /container/config/set tmpdir=usb1/tmp ram-high=768M registry-url=https://registry-1.docker.io # Просмотр доступных приложений в каталоге /container/app/print # Установка приложения (пример — AdGuard Home) /container/app/install name=adguard-home storage=usb1 # Просмотр параметров приложения перед установкой /container/app/print detail where name=adguard-home # Установка с параметрами /container/app/install name=adguard-home storage=usb1 interface-address=172.17.0.3/24 gateway=172.17.0.1 # Проверяем созданные ресурсы /interface/veth/print /interface/bridge/port/print /container/envs/print /container/mounts/print /container/print # Найти контейнер приложения /container/print # Запустить /container/start [/container/find where comment~"adguard"] # Узнаём IP-адрес приложения /interface/veth/print where comment~"adguard" http://<app-ip-address> # Если masquerade для контейнерной подсети ещё не настроен /ip/firewall/nat/print where comment~"Container" # Если правила нет: /ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24 out-interface-list=WAN comment="Container NAT" # Если установили AdGuard Home или Pi-hole /ip/dns/set servers=172.17.0.3 allow-remote-requests=yes # Пример: проброс порта для веб-сервера /ip/firewall/nat/add chain=dstnat action=dst-nat to-addresses=172.17.0.10 to-ports=80 protocol=tcp dst-port=8080 in-interface-list=WAN comment="Forward to app web server" # Список установленных приложений /container/app/print # Статус контейнеров /container/print # Подробная информация /container/print detail # veth-интерфейсы приложений /interface/veth/print # Bridge-порты /interface/bridge/port/print # IP-адреса /ip/address/print where interface~"bridge-container" # NAT-правила /ip/firewall/nat/print where comment~"Container" # Пинг приложения /ping 172.17.0.3 count=4 # HTTP-доступ (если приложение веб-сервер) /tool/fetch url="http://172.17.0.3" mode=http dst-path=app-test.html # Логи контейнера /log/print where topics~"container" # Общее состояние системы /system/resource/print # Свободное место на USB /disk/print # Контейнеры и их потребление /container/print detail # Все veth-интерфейсы /interface/veth/print # Должен быть veth для каждого приложения # Все mounts /container/mounts/print # Должны быть точки монтирования для persistent-данных # Все envs /container/envs/print # Должны быть переменные окружения # Bridge-порты /interface/bridge/port/print # veth должен быть в bridge # 1. Проверяем версию RouterOS /system/resource/print # Версия должна быть 7.22+ # 2. Проверяем container mode /system/device-mode/print # container: yes # 3. Проверяем интернет-доступ /ping download.mikrotik.com count=4 /ping registry-1.docker.io count=4 # 4. Проверяем DNS /ip/dns/print /tool/dns-query name=download.mikrotik.com # 5. Обновляем список приложений (если команда доступна) /container/app/refresh # Проверяем свободное место /disk/print /system/resource/print # Очищаем ненужные файлы /file/print /file/remove [find where name~"backup"] # Удаляем неиспользуемые контейнеры /container/stop [find where status=running] /container/remove [find] # Используйте USB-накопитель большего объёма (рекомендуется 8 ГБ+) # Проверяем статус и ошибки /container/print detail # Проверяем логи /log/print where topics~"container" # Проверяем архитектуру устройства /system/resource/print # architecture-name должен соответствовать образу (arm64, x86) # Проверяем свободную RAM /system/resource/print # free-memory должно быть больше требований приложения # Пробуем запустить вручную /container/start 0 # Если ошибка архитектуры — это приложение не поддерживается на вашем устройстве # Проверяем все IP-адреса /ip/address/print /interface/veth/print # Если конфликт — меняем IP на veth /interface/veth/set [find where name=veth-app2] address=172.17.0.4/24 # Проверяем, что подсеть 172.17.0.0/24 не используется для других целей # Если используется — выберите другую подсеть при установке (например, 172.18.0.0/24) # Проверяем маршрутизацию /ip/route/print where dst-address~"172.17" # Маршрут должен быть автоматически (connected) через bridge-containers # Проверяем firewall /ip/firewall/filter/print where action=drop # Добавляем разрешающее правило (если firewall блокирует) /ip/firewall/filter/add chain=forward action=accept src-address=192.168.88.0/24 dst-address=172.17.0.0/24 comment="Allow LAN to containers" # Вариант 1: через каталог (если поддерживается в вашей версии) /container/app/upgrade [find where name=adguard-home] # Вариант 2: ручное обновление (универсальный способ) # 1. Запоминаем параметры /container/print detail where comment~"adguard" /interface/veth/print where comment~"adguard" /container/envs/print where name~"adguard" /container/mounts/print where name~"adguard" # 2. Останавливаем и удаляем контейнер /container/stop [find where comment~"adguard"] /container/remove [find where comment~"adguard"] # 3. Переустанавливаем из каталога /container/app/install name=adguard-home storage=usb1 # Данные в persistent-директориях (mounts) сохранятся # Экспорт текущей конфигурации перед миграцией /container/print detail file=container-backup /container/envs/print file=envs-backup /container/mounts/print file=mounts-backup /interface/veth/print file=veth-backup