
我最近購買了兩個 UniFi nanoHD 接入點,但沒有購買 Cloud Key。如何在 macOS 電腦上執行 UniFi 網路應用程式(以前稱為 UniFi 網路控制器)?
答案1
我知道有兩種不同的方法可以做到這一點。
使用 Docker
如果您已經熟悉 Docker,這可能是個不錯的選擇,但否則可能不值得學習。 UniFi 網路應用程式似乎有兩個維護良好的 Docker 映像。
- LinuxServer.io 團隊的 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 圖像的一個原因。
本地安裝
這工作得很好,運行起來也不是很難,但是是不幸的是,工作量超出了應有的範圍。
下載您喜歡的版本
在以下位置尋找“適用於 macOS 的 UniFi 網路應用程式 [版本]”Unifi 下載頁面。如果您沒有偏好,請選擇最新版本。
安裝網路應用程式
在 Finder 中找到 UniFi.pkg。按住 Control 鍵並點選並選擇
Open with...
→ 安裝程式。如果沒有這個,macOS 會抱怨“無法打開‘UniFi.pkg’,因為 Apple 無法檢查它是否存在惡意軟體。”如果出現提示,請選擇「開啟」並繼續安裝程式。安裝Java 11
2023-08-27 注意:您可以嘗試跳過此步驟 - 可能不再需要它。我能夠安裝版本 7.4.162,但我認為我沒有安裝 Java,因此它現在可能已捆綁。或者我可能是錯的。我在發行說明中沒有看到任何相關內容。
注意:7.3.x 之前的版本需要 Java 8,因此如果您選擇安裝舊版本的網頁應用程序,請參閱這個答案的早期修訂有關安裝 Java 8 的建議以及啟動舊版網路應用程式的命令。
對於 7.3.x 及更高版本,您需要 Java 11。
使用 Homebrew 安裝很簡單:
- 跟著安裝 Homebrew 的說明如果您還沒有。
- 在終端機中,運行
brew install openjdk@11
.對我來說,這也安裝了 24 個依賴項。 - 根據上述命令的輸出建議,建立一個符號連結以允許系統 Java 包裝器找到此 JDK:
sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
調整安全設定
注意:由於 macOS 13 Ventura 中的設定檢修,這些說明發生了重大變化。您可以參考這個答案的早期修訂有關 macOS 12 及更早版本的指南,但也要注意,這些說明對於較新版本的網頁應用程式和 Java 11 可能不準確。
導航至系統設定 → 網路。選擇防火牆,然後按一下
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 稍後會提示您。 - 您可以完全關閉防火牆,而不是進行上述防火牆更改,但我不建議這樣做。防火牆提供了有用的保護層。
- 如果
嘗試啟動網路應用程式。您將來需要啟動時可以隨時使用此過程:從“應用程式”資料夾運行 UniFi 應用程序,或使用⌘+Space並蒐索“UniFi”。您應該會看到以下錯誤對話框:
「損壞」並不準確 - macOS 只是阻止其正常運作。按一下取消按鈕,然後導覽至系統設定 → 隱私權和安全性。向下捲動所有應用程式並尋找“安全性”標題。您應該會看到以下對話框:
使用“仍然打開”按鈕來批准它。你會得到一個第二顯示應用程式已損壞的對話框:
我不知道 macOS 在這裡抱怨什麼。忽略此並點擊“開啟”按鈕。 (附註:macOS 使用者體驗的這個領域確實需要改進。)
如果 macOS 詢問“您希望應用程式‘UniFi.app’接受傳入的網路連線嗎?”您必須按一下「允許」才能使網路應用程式正常運作。
兩個後續注意事項:
完成網頁應用程式後,您可以撤銷防火牆的任何變更(假設您不打算讓它一直運作)。儘管如果您所做的只是允許 UniFi 接收傳入連接,則防火牆變更基本上是無害的。
您也可以「無頭」運行網路應用程式。我沒試過,但是按照說明https://akrabat.com/run-the-unifi-controller-headless-on-mac/看起來很有前途。請注意,您需要使用與該頁面上建議的不同的執行字串。
答案2
我透過幾個簡單的步驟就讓它在 docker 中運作了!我做了一個guthub 上的 docker 配置有完整的說明,但以下是基本步驟:
決定 UniFi 應在電腦上保存持久資料的位置。
運行 docker compose 腳本。
瀏覽至 https://localhost:8443 並完成初始設定。
轉到設定並輸入您機器的 IP 位址。