使用 Docker

使用 Docker

我最近購買了兩個 UniFi nanoHD 接入點,但沒有購買 Cloud Key。如何在 macOS 電腦上執行 UniFi 網路應用程式(以前稱為 UniFi 網路控制器)?

答案1

我知道有兩種不同的方法可以做到這一點。


使用 Docker

如果您已經熟悉 Docker,這可能是個不錯的選擇,但否則可能不值得學習。 UniFi 網路應用程式似乎有兩個維護良好的 Docker 映像。

在 Docker 中運行時,必須付出額外的努力才能採用。 Docker 的預設網路類型(橋接)意味著容器無法在網路上存取。對於第 2 層採用,Jacob Alberty 影像的文檔提到使用主機網路或 macvlan 網路。我在 Linux 中使用了具有此 Docker 映像的主機網絡,並且運作良好,但在撰寫本文時 (2022-04-10) 主機網路在 macOS Docker Desktop 中不可用。我還沒有嘗試過使用 macvlan,但它可能運作得很好(對於任一映像,即使 LinuxServer.io 文件沒有提到它)。對於第 3 層採用,您似乎必須在 UniFi 網路應用程式的設定中輸入 Docker 主機的 IP(兩個 Docker 映像的文件都詳細說明了在哪裡可以找到該設定)。

Jacob Alberty 圖像似乎包含對指定 https 憑證的一些支援。我還沒有嘗試過,但如果使用瀏覽器信任的憑證對您來說很重要,那麼這可能是選擇 Jacob Alberty 圖像的一個原因。


本地安裝

這工作得很好,運行起來也不是很難,但是不幸的是,工作量超出了應有的範圍。

  1. 下載您喜歡的版本

    在以下位置尋找“適用於 macOS 的 UniFi 網路應用程式 [版本]”Unifi 下載頁面。如果您沒有偏好,請選擇最新版本。

  2. 安裝網路應用程式

    在 Finder 中找到 UniFi.pkg。按住 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。

    使用 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已關閉。不需要進行其他更改。按一下“確定”儲存。

      一些注意事項:

      • 如果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/看起來很有前途。請注意,您需要使用與該頁面上建議的不同的執行字串。

答案2

我透過幾個簡單的步驟就讓它在 docker 中運作了!我做了一個guthub 上的 docker 配置有完整的說明,但以下是基本步驟:

  1. 決定 UniFi 應在電腦上保存持久資料的位置。

  2. 運行 docker compose 腳本。

  3. 瀏覽至 https://localhost:8443 並完成初始設定。

  4. 轉到設定並輸入您機器的 IP 位址。

相關內容