Использование Докера

Использование Докера

Недавно я приобрел две точки доступа UniFi nanoHD, но не Cloud Key. Как запустить UniFi Network Application (ранее называвшееся UniFi Network Controller) на моем компьютере macOS?

решение1

Я знаю два разных способа сделать это.


Использование Докера

Это может быть хорошим вариантом, если вы уже знакомы с Docker, но в противном случае это может не стоить обучения. Похоже, что есть два хорошо поддерживаемых образа Docker для UniFi Network Application.

Необходимо приложить дополнительные усилия, чтобы внедрение работало при запуске в Docker. Тип сети по умолчанию для Docker (мост) означает, что контейнеры недоступны в сети. Для внедрения уровня 2 в документации к образу Джейкоба Альберти упоминается использование хост-сети или сети macvlan. Я использовал хост-сеть с этим образом Docker в Linux, и она работает хорошо, однако на момент написания этой статьи (10.04.2022) хост-сеть недоступна в macOS Docker Desktop. Я не пробовал использовать macvlan, но она может работать хорошо (с любым из образов, хотя в документации LinuxServer.io она не упоминается). Для внедрения уровня 3, похоже, необходимо ввести IP-адрес хоста Docker в настройках сетевого приложения UniFi (в документации к обоим образам Docker есть подробная информация о том, где найти эту настройку).

Образ Jacob Alberty, похоже, включает некоторую поддержку указания сертификата https. Я не пробовал, но если для вас важно использовать сертификат, которому доверяет ваш браузер, то это может быть причиной выбрать образ Jacob Alberty.


Установка в исходном виде

Это работает отлично и не так уж и сложно в запуске, но этоявляетсяк сожалению, работы больше, чем следовало бы.

  1. Загрузите предпочтительную версию

    Найдите «UniFi Network Application [версия] для macOS» настраница загрузки Unifi. Если у вас нет предпочтений, используйте последнюю версию.

  2. Установить сетевое приложение

    Найдите UniFi.pkg в Finder. Control+клик и выберите Open with...→ Установщик. Без этого macOS жалуется, что «UniFi.pkg» не может быть открыт, так как Apple не может проверить его на наличие вредоносного ПО». Затем выберите «Открыть», если будет предложено, и продолжите установку.

  3. Установить Java 11

    Примечание от 2023-08-27: Вы можете попробовать пропустить этот шаг — возможно, он больше не нужен. Мне удалось установить версию 7.4.162, и я думаю, что у меня не установлена ​​Java, так что она может быть сейчас в комплекте. Или я могу ошибаться. Я ничего об этом не вижу в примечаниях к выпуску.

    Примечание: для версий до 7.3.x требовалась Java 8, поэтому, если вы решили установить более старую версию сетевого приложения, см.более ранняя версия этого ответадля получения рекомендаций по установке Java 8, а также команды для запуска более старых версий сетевого приложения.

    Для версий 7.3.x и новее вам понадобится Java 11. (По состоянию на 13 января 2023 г. в примечаниях к выпуску указано: «Java 12 и более поздние версии пока не поддерживаются». Предположительно, Java 13–19 также не поддерживаются.)

    Установка с помощью Homebrew проста:

    1. СледоватьИнструкции по установке Homebrewесли у вас его еще нет.
    2. В терминале запустите brew install openjdk@11. У меня это тоже установило 24 зависимости.
    3. Как следует из вывода приведенной выше команды, создайте символическую ссылку, чтобы системные оболочки Java могли найти этот JDK:sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
  4. Настройте параметры безопасности

    Примечание: эти инструкции значительно изменились из-за перестройки настроек в macOS 13 Ventura. Вы можете сослатьсяболее ранняя версия этого ответадля получения инструкций по macOS 12 и более ранним версиям, но также обратите внимание, что эти инструкции могут быть неточными для более новых версий сетевого приложения и Java 11.

    1. Перейдите в Системные настройки → Сеть. Выберите Брандмауэр, затем нажмите кнопку Options.... Убедитесь, Block all incoming connectionsчто он выключен. Никаких других изменений не требуется. Нажмите OK, чтобы сохранить.

      Несколько заметок:

      • Если Automatically allow downloaded signed software to receive incoming connectionsвключено, то этого достаточно для предоставления доступа сетевому приложению.
      • Если Automatically allow downloaded signed software to receive incoming connectionsэтот параметр отключен, то при запуске сетевого приложения вам будет предложено разрешить входящие соединения.
      • Проактивное добавление Applications/UniFiв список приложений с разрешенными входящими соединениями, похоже, не работает. Я не знаю, почему. Но это не важно — macOS предупредит вас об этом позже, если это необходимо.
      • Вместо вышеуказанных изменений брандмауэра вы можете полностью отключить свой брандмауэр, но я не рекомендую этого делать. Брандмауэры обеспечивают полезный уровень защиты.
    2. Попробуйте запустить сетевое приложение. Вы будете использовать этот процесс в любое время, когда вам понадобится запустить его в будущем: либо запустите приложение UniFi из папки «Приложения», либо используйте + Spaceи найдите «UniFi». Вы должны получить это диалоговое окно с ошибкой:

      Скриншот диалогового окна macOS, в котором говорится: «Файл «UniFi.app» поврежден и не может быть открыт. Его следует переместить в корзину. Этот файл был загружен в неизвестную дату». В окне есть кнопки «Переместить в корзину» и «Отмена».
    3. «Поврежден» — это неточно, macOS просто мешает ему работать правильно. Нажмите кнопку «Отмена», затем перейдите в «Настройки системы» → «Конфиденциальность и безопасность». Прокрутите вниз все приложения и найдите заголовок «Безопасность». Вы должны увидеть следующее диалоговое окно:

      Скриншот окна настроек конфиденциальности и безопасности macOS с примечанием «Использование приложения «UniFi.app» заблокировано, поскольку его разработчик неизвестен», а также кнопкой «Открыть в любом случае».
    4. Используйте кнопку «Открыть в любом случае», чтобы одобрить его. Вы получитевторойдиалоговое окно, сообщающее, что приложение повреждено:

    Скриншот диалогового окна macOS, в котором говорится: «Файл «UniFi.app» поврежден и не может быть открыт. Его следует переместить в корзину. Этот файл был загружен в неизвестную дату». В окне есть кнопки «Открыть», «Переместить в корзину» и «Отмена».
    1. Я понятия не имею, на что жалуется macOS. Проигнорируйте это и нажмите кнопку «Открыть». (Примечание: эта область пользовательского опыта macOS действительно нуждается в доработке.)

      Если macOS спрашивает: «Хотите ли вы, чтобы приложение «UniFi.app» принимало входящие сетевые подключения?», необходимо нажать «Разрешить», чтобы сетевое приложение работало правильно.

Два дополнительных замечания:

  1. Вы можете отменить любые изменения в вашем брандмауэре, когда закончите работу с сетевым приложением (при условии, что вы не планируете оставлять его работающим все время). Хотя изменения в брандмауэре в основном безвредны, если все, что вы сделали, это разрешили UniFi принимать входящие соединения.

  2. Вы также можете запустить сетевое приложение "без головы". Я не пробовал, но инструкции наhttps://akrabat.com/run-the-unifi-controller-headless-on-mac/выглядят многообещающе. Обратите внимание, что вам нужно будет использовать строку exec, отличную от предложенных на этой странице.

решение2

Я заставил это работать в докере за несколько простых шагов! Я сделалКонфигурация докера на guthubс подробными инструкциями, но вот основные шаги:

  1. Решите, где UniFi будет сохранять постоянные данные на вашем компьютере.

  2. Запустите скрипт Docker Compose.

  3. Перейдите по адресу https://localhost:8443 и выполните первоначальную настройку.

  4. Перейдите в настройки и введите IP-адрес вашего устройства.

Связанный контент