mikrotik-wiki.ru
Главная
Загрузка...

App-каталог контейнеров в RouterOS 7.22

RouterOS 7.22Контейнеры9 мин30 мар. 2026 г.
TelegramVK

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.

Как это работает

  1. MikroTik публикует каталог проверенных приложений на своих серверах.
  2. Маршрутизатор скачивает список доступных приложений.
  3. Пользователь выбирает приложение и задаёт базовые параметры (пароль, порт и т.д.).
  4. RouterOS автоматически:
    • создаёт veth-интерфейс;
    • добавляет его в bridge (или создаёт новый);
    • назначает IP-адрес;
    • создаёт переменные окружения;
    • создаёт точки монтирования;
    • скачивает и запускает контейнер.

Доступные приложения

Каталог приложений обновляется MikroTik. На момент выхода функции типичные категории включают:

КатегорияПримеры приложенийНазначение
DNS-фильтрацияPi-hole, AdGuard HomeБлокировка рекламы
МониторингPrometheus node_exporter, GrafanaМониторинг сети
Веб-серверыNginx, CaddyХостинг и reverse proxy
Файловый доступNextcloud (лёгкая версия)Облачное хранилище
VPN / ProxyWireGuard UI, 3proxyРасширенный VPN
УтилитыDDNS-клиенты, cron-утилитыВспомогательные сервисы

Важно: конкретный состав каталога зависит от версии RouterOS и обновлений от MikroTik. Актуальный список доступен на устройстве после обновления до 7.22+ или на сайте mikrotik.com.

Требования

ТребованиеОписание
RouterOS7.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:

  1. Откройте меню Container → App Catalog (или System → Container → Apps).
  2. Дождитесь загрузки списка приложений (требуется интернет).
  3. Выберите приложение (например, AdGuard Home).
  4. Нажмите Install.
  5. В диалоге настройки укажите параметры:
    • Storage — выберите USB-накопитель;
    • Network — IP-адрес для приложения (предложен автоматически);
    • Password — пароль администратора (если применимо);
    • Additional settings — специфичные для приложения параметры.
  6. Нажмите OK — система начнёт скачивание и настройку.
  7. После завершения приложение появится в списке контейнеров.

Шаг 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"

Откройте в браузере:

code
http://<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-каталога

Важно понимать ограничения:

  1. Только проверенные образы — в каталоге доступны только приложения, прошедшие проверку MikroTik. Произвольные Docker-образы устанавливаются вручную через /container/add.

  2. Зависимость от MikroTik — если серверы MikroTik недоступны, новые приложения нельзя установить. Уже установленные продолжают работать.

  3. Ограниченная кастомизация — App-каталог предлагает базовые параметры. Для тонкой настройки придётся редактировать конфигурацию вручную после установки.

  4. Не все архитектуры — некоторые приложения доступны только для ARM64 или только для x86. Проверяйте совместимость перед установкой.

  5. Нет автообновления — приложения не обновляются автоматически. Обновление требует ручного действия.

  6. Один экземпляр — каталог обычно устанавливает один экземпляр приложения. Для нескольких экземпляров используйте ручную установку.

Рекомендации по выбору приложений

ЗадачаРекомендуемое приложениеRAMПримечание
Блокировка рекламыAdGuard Home50–100 МБВстроенный DoH, меньше ресурсов
Блокировка рекламы (альтернатива)Pi-hole80–150 МББольше сообщество
Reverse proxyNginx / Caddy20–50 МБДля хостинга или SSL termination
МониторингPrometheus exporter20–50 МБМетрики устройства
DDNSddclient / cloudflare-ddns10–20 МБОбновление DNS-записей

Для устройств с 512 МБ RAM (RB5009) рекомендуется запускать не более 2 приложений суммарным потреблением до 200 МБ.

Миграция с ручной установки на App-каталог

Если у вас уже есть контейнеры, установленные вручную, и вы хотите перейти на App-каталог:

  1. Сохраните persistent-данные (mounts) — они сохранятся на USB.
  2. Запишите текущие настройки (IP, envs, mounts).
  3. Остановите и удалите контейнер.
  4. Установите приложение из каталога.
  5. Если 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-каталог работают параллельно. Выбирайте тот подход, который удобнее для конкретного приложения.

[admin@MikroTik] >
# Проверка текущей версии
/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
Контейнеры / App-каталог контейнеров в RouterOS 7.22