為什麼是 Mac Mini?
- M-Chip 的能耗比很高,省電。
- 十分靜音。
- Unified Memory。
- 10Gb Ethernet 的網路埠。
- MacOS。
- 好看。
Mac Mini 怎麼成為伺服器?
我主要在 Mac Mini 上以橋接模式部署了幾台虛擬機,一條網路線連接到 Router。擁有 10Gb Ethernet 的網路埠,儘管有多個虛擬機的網路承載,但仍然避免物理層的傳輸瓶頸。
我在 MacOS 裡運行了 Tailscale.app 作為 Exit Node,作為外出 Macbook 規避網路審查,同時具備訪問本地網路的能力。
想要讓 Mac Mini 變成一臺伺服器,首先開啟 User & Group > Automatically log in,Lock Screen > Start Screen Saver when inactive 和 Turn display off on battery when inactive 設定為 Never。
我同時開啟了 Sharing > Content Caching,作為本地網路的緩存伺服器。
內部架構是什麼?
我選擇了 UTM 運行虛擬機,承載我的使用場景。目前只有這三個映像運行,皆為橋接模式。
- Home Assistant Operating System
- OpenWrt
- Ubuntu 24.04.3 LTS Minimal
Home Assistant Operating System 控制智能家居,然後接入 HomeKit。同時使用 Cloudflared add-on 隧道公網暴露服務。
OpenWrt 作為「規避網路審查的 Gateway」,被 Router 的 lan 介面作為預設 Gateway、DNS 由 DHCP 下發,至於 iot_lan 介面則下發 Router IP。關於硬路由 Router 以後會提到。
Ubuntu 24.04.3 LTS Minimal 運行 Docker 和邊緣服務。例如 Dashboard、qBittorrent、Miniflux。特殊的是,qBittorrent 需要繞過「規避網路審查的 Gateway」,否則會影響連通性,我使用了 IPvlan 設定了獨立的 Docker 網路 Stack,Gateway 指向 Router 而不是「繞過規避網路審查的 Gateway」。
數據怎麼走?
先說明 Router 的設定。我有 lan 和 iot_lan 兩個介面。Wireless 中提供一個特殊的 2.4 GHz Wi-Fi 專門給物聯網設備,網路接口只使用 iot_lan。
lan:192.168.10.1
- Gateway、DNS 指向「規避網路審查的 Gateway」。
- 有能力訪問 LAN 區域。
- 預設 Wi-Fi 和網線接入的設備使用這個介面。
- 網段
192.168.10.0/32。
iot_lan:192.168.101.1
- DNS 指向 Router 自己(也就是不指定 DHCP 的 DNS 選項),Gateway 指向
192.168.101.1。 - 被禁止訪問 LAN 區域。
- 從物聯網 Wi-Fi 接入的設備使用這個介面。
- 網段
192.168.101.0/32。
有什麼使用感受?
透過 UTM 實現的虛擬化架構,保證了穩定性和性能。兼顧了極簡、安靜、省電、穩定、性能。同時讓管理變得方便。
這種不僅確保了單一服務崩潰不會影響整體網路(比如某個 Docker 壞了不會影響上網、物聯網),還利用了 M-Chip 省電的特性與 10Gb Ethernet 的物理優勢。
以後當然會部署更多的服務在其上,但目前的架構已經足夠作為一個十分可靠的系統支持多年的網路需求。