2026年6月3日

gears

Homelab 更新:M4 Mac mini

近五年前我在一台 ThinkStation P340 上搭建了家庭服务器,虽然工作站的稳定性和塔式机箱的扩展性充足,但 x86 的高功耗和 i3 鶸性能终究不适合 7x24 运行。中间也尝试短暂迁移到 arm64 的 Windows Dev Kit,虽然功耗美丽了,代价是更为鶸的性能和 Windows arm64 仍然不成气候的生态和兼容性。终于去年 M4 Mac mini 换了模具又史诗性加倍到 16GB RAM1,首发入手作为新的 homelab 中枢运行至今。

硬件

Mac mini 新模具实在是太美丽了。一个精致的小金属坨坨,与 Mac Studio 一脉相承的设计语言,比一台 Apple TV 大不了多少。我的丐版是 4P + 6E 的 base M4,10 核 GPU,16GB RAM + 256GB SSD。运算性能对于家庭服务器来说实在是太澎湃了,不过存储空间相较之下有些捉襟见肘。I/O 方面我还挺满意的:前面两个 10Gb USB-C,后面三个 40Gb 雷电 4 加网口和 HDMI。其中一个雷电接口我上了之前吃灰的一块 1TB SSD 作为存储的扩展,还有一个雷电接了 USB hub 连了一些外设,例如打印机、扫描仪、蓝光刻录机等。这台小东西插上网线就被我扔到机柜 NAS 旁边 headless 运行了。

OS

这次操作系统选用——没得选,macOS。虽然失去了 OS X Server 的丰富功能2,macOS 还是内建了不少实用的选项可以在 Settings -> General -> Sharing 打开,比如基础的文件服务器和媒体服务器功能。虽然我都没有使用,因为我还有台群晖 1522+ 作为存储中心。Screen Sharing 和 Remote Login 是服务器基础的远程管理(远程桌面和 ssh),其中 Screen Sharing 在局域网下使用体验极为丝滑,4K Retina 画面流畅得如同操作本机,也可以直接来回拖动文件。Content Caching 对于家里有大量果果设备的家庭比较有用,会把诸如系统更新、App Store 和 iCloud 的内容做一份本地缓存,这样在 release day 不至于一万个设备一起下载。我在外置 SSD 上分出了 200GB 来做缓存,目前长期维持在 180GB 左右的使用,需要注意的是似乎外置磁盘必须是 APFS 格式。Printer Sharing 本来我觉得很鸡肋的,毕竟打印机带 AirPrint;但打开以后发现连扫描仪也可以通过自带 Image Capture 共享了,直接补上 AirPrint 一块大短板。另外作为台式机,Energy 选项下也有实用的电源选项,比如防止睡眠、网络唤醒和断电恢复后自动开机,很适合 7x24 部署好就不动的场景。

macOS 虽然在服务器领域没什么存在感,但和我之前使用 Windows Server Core 类似,拥有开箱即用的基础功能和直观配置。还是以挂载举例,既不需要像 Linux 上那样安装 cifs-utils 再修改 /etc/fstabsudo mount -a 一套小连招,也不需要像 Windows 那样映射网络驱动器还要小心权限管理的坑,直接在 Finder 里连接,再在 Login Items 里选择一下就实现了开机自动挂载。管理服务 / daemon 也没有 Windows Service 的难以配置和 systemctl 的复杂层级,launchctl 和 macOS 无缝集成,可以根据各种触发手段来启动 daemon,修改配置直接 Plist XML 也是直观易懂。

而对我来说,使用 macOS 最大的优点是我对它充分熟悉,借助 vibe coding 我需要的工具或服务可以随时搓一个出来,完全根据需求来定制。不管是 SwiftUI app 还是 Swift 写的 daemon,都可以轻松从开发环境部署到服务器上。最近 Codex 又更新了移动端访问,更是可以只在手机上动动嘴皮子,Mac mini 上的 Codex 就把工具写好了。这种低成本的定制化极大拓展了这台服务器的使用场景。

服务

裸机

理想情况下,我是很想容器化或虚拟化来隔离开服务和系统,既创造安全的沙盒环境,又可以没有负担地折腾。但 macOS 上这两种方案均有一些硬伤:虚拟化得益于 Virtualization.framework 在 Apple Silicon 上性能强大几乎没有损耗,但客户端支持少。最流行的 UTM 对 headless 模式支持较差,也不如 PVE 或 Hyper-V 那样有丰富的直通选项。而容器化在 macOS 上还是需要开一个轻量的 Linux 虚拟机来共享 kernel,因此 network=host 基本都是废的,很多重度依赖网络的应用,比如需要 Bonjour 的 Homebridge、作为 DNS 服务器的 AdGuard Home、异地组网的 Tailscale,都无法通过容器来部署。好在这些服务对性能要求很低,也是一个求稳而不折腾,因此裸机部署的成本并不高。

另一种需要裸机的服务则是依赖 Mac 硬件性能,比如 Jellyfin 利用 Apple Silicon 里的 Media Engine 来转码,LM Studio 借助 MLX 在 Neural Engine 和 GPU 实现本地大模型推理。这种低功耗高性能计算的场景也是使用 Mac 作为家庭服务器的一大优势。我之前的转码机折腾许久 GPU 直通、加了 500W 电源和 RDNA2 GPU 才勉强实现,而 Mac mini 轻松用个位数瓦数的功耗实现了更流畅的 4K 实时转码,遑论这个价位下非统一内存带不动的本地 LLM 了。

运行所有服务加本地推理时的内存占用
运行所有服务加本地推理时的内存占用

容器

容器化本来想选用 apple/container,性能好又轻量,然而并没有对类似 compose 的支持。Docker macOS 版以前 master 做毕设时用过,只留下一个拉完了的偏颇印象。这几年更流行的是 OrbStack,兼容 docker CLI 又有远胜过 Docker 的性能,在文件系统和网络栈上也比 Docker 有更好的优化,包括内置的 DNS 来方便访问容器服务。我从 Ubuntu Server 基于 Docker 的容器服务器的迁移过程非常顺利:把所有挂载的数据和 compose.yml 原样拷贝过来一个个重建,我的整套服务就又无缝地运行起来了。OrbStack 的管理也是非常直观,可以直接进入容器的终端和文件系统,甚至把每个容器、卷、镜像都通过 ~/OrbStack 挂载到 Finder 里。想更新一个 stack 也仍然可以用:

docker compose pull
docker compose up -d

总结起来就是毫无学习成本,且享受到更好的性能和更直观的 UI,可以给到夯。

AI

还是提一下 AI,毕竟这是今年让 Mac mini 这台机器最出圈的地方。拜它所赐,我的 256GB Mac mini 已经绝版了,性价比更为突出。我在它上面部署了 Gemma 4 E4B,受丐版能运行的参数量限制,虽然世界知识、推理能力比较一般,但一些简单的翻译和总结还是可以完成的不错的。最近在尝试把它和我的 paperless 文档库、NAS 存储、HomeKit 结合起来,实现一个真正能接管家庭私密数据的数字助理。

浩浩荡荡的龙虾热让 Mac mini 一度断货,虽然我认为只是低功耗 low profile 便于 always on 和作者 Peter Steinberger 熟悉 macOS 因而支持完善的缘故。不过,一个开放安全的 agent 框架、拥有严格沙盒权限管理模型的 OS、和一定的本地 LLM 推理算力,确实可能产生 AI 边缘计算的中枢形态设备。近日老黄的 RTX Spark 也是对这种形态的探索开端。一个持续运行的、没有 token 限制的 AI 边缘计算中枢,能够持续维持多模态的 context 记忆,低延迟高可靠地做出决策,同时所有的数据不会离开这台设备;这也许可以真正接管现实世界的工作流。

最后

这就是我时隔近五年后家庭服务器的更新。Mac mini 拥有不输 Windows Server 的稳定性,低到可以忽略的能耗,碾压式优越的性能,在接管了我部署的传统存储计算服务的同时拓展了一些新的有趣使用场景。这台 Mac mini 不仅是我家庭网络和 IoT 自动化的基础设施,更是没有 token 限制的文书写手、保证隐私的数字助理、永远在线的 pair programming 伙伴。真正的价值可能不在于多少算力、多大显存、能跑多少参数的模型,而是把边缘计算有机结合融入现实的潜力。

Footnotes

  1. 谁能想到 2026 年 Mac 起步内存容量又回到了 8GB 呢

  2. Apple 已不再生产 macOS 服务器