闲置 MacBook Air 变身 NAS + 高清机顶盒¶
一台丐版 M1 MacBook Air(闲置机)通过拓展坞 + 外接硬盘阵列 + OrbStack 容器化,同时承担「家庭 NAS」「照片备份中心」「智能家居中枢」「4K 影音机顶盒」多重角色。核心思路:macOS 原生能力(SMB 共享、屏幕共享、caffeinate)打底,容器化服务上层,手机 App 补交互短板。
视频:闲置 Macbook Air 变身 NAS+高清机顶盒,终结配置教程(梅有机,2026-02-03,约 10 分钟)
目录¶
一、整体架构¶
整条链路的分层数据流:
┌─────────────────────────────┐
│ 闲置 M1 MacBook Air │
│ (担任家庭数字中枢) │
└──────────────┬──────────────┘
│ USB-C / 雷雳
┌─────────────────────────┼─────────────────────────┐
│ │ │
┌────────▼────────┐ ┌─────────▼────────┐ ┌────────▼────────┐
│ 多功能拓展坞 │ │ 多盘位硬盘坞 │ │ HDMI → 电视 │
│ · 千兆网口 │ │ · 2×3.5" SATA │ │ · 4K 画面输出 │
│ · HDMI 输出 │ │ · 1× NVMe M.2 │ │ │
│ · PD 供电 │ │ (最高 56TB) │ │ │
└────────┬────────┘ └─────────┬────────┘ └─────────────────┘
│ 固定静态 IP │ 挂载
│ │
┌────────▼─────────────────────────▼────────┐
│ macOS 系统层 │
│ · caffeinate 防休眠守护进程 │
│ · SMB 文件共享 / 屏幕共享(远程桌面) │
│ · 磁盘工具 RAID + 格式化 │
└────────────────────┬───────────────────────┘
│
┌────────────────────▼───────────────────────┐
│ OrbStack 容器引擎 │
│ ┌─────────┐ ┌────────┐ ┌────────┐ │
│ │ DPanel │ │ Home │ │ Immich │ │
│ │ :8807 │ │ Assist.│ │ :2283 │ │
│ │ 管理面板 │ │ :8123 │ │ 相簿 │ │
│ └─────────┘ └────────┘ └────────┘ │
└────────────────────────────────────────────┘
│
┌────────────────────▼───────────────────────┐
│ macOS 原生应用层 │
│ · Jellyfin :8096 (影视库) │
│ · qBittorrent (Web UI 远程下载) │
│ · Infuse (电视端播放) │
└────────────────────────────────────────────┘
客户端: 手机 Remote for Mac / Infuse / Immich App / SMB 挂载
三层分工原则:系统层管稳定(不休眠、固定 IP、共享协议),容器层管服务(可迁移、易维护),原生层管性能(硬解、串流)。
二、硬件选型与储存拓扑¶
2.1 配件需求 [01:00]¶
| 配件 | 必备能力 | 原因 |
|---|---|---|
| 多功能拓展坞 | HDMI 输出 + 千兆实体网口 + USB-PD 供电 | 4K 画面输出、局域网稳定带宽(Wi-Fi 不稳定)、持续供电不断电 |
| 多盘位硬盘坞 | 2×3.5" SATA + 1× NVMe M.2 | 机械盘放媒体/照片冷数据,NVMe 放数据库等热数据 |
视频实测配置(smzdm 文字版记载):
| 部件 | 型号 | 角色 |
|---|---|---|
| 硬盘坞 | 奥睿科(ORICO)双盘位坞 | 2×3.5" SATA + 1×2280 NVMe,全铝合金散热 |
| 机械硬盘 | 希捷酷狼 4TB ×2 | NAS 场景 7×24 设计 |
| NVMe SSD | 三星 980 Pro 2TB | 热数据/缓存 |
2.2 储存格式选择 [02:27]¶
| 硬盘类型 | 推荐格式 | 理由 |
|---|---|---|
| 机械硬盘(HDD) | Mac OS 扩充格式(日誌式)/ HFS+ Journaled | 机械盘随机写慢,日志式保证断电一致性;APFS 的 CoW 写入放大对 HDD 不友好 |
| 固态硬盘(SSD/NVMe) | APFS | 原生为 SSD 设计,快照/克隆/空间共享效率高 |
macOS 磁盘工具里可对双机械盘建软件 RAID(镜像 RAID 1 保障数据安全)。
磁盘工具 → 显示所有设备 → 选中顶层设备 → 分区/抹掉
├─ HDD-1 + HDD-2 → RAID 组(RAID 1 镜像)→ 格式: Mac OS 扩充格式(日誌式)
└─ NVMe → APFS 卷宗
2.3 与替代方案对比¶
| 维度 | 多盘位硬盘坞(本方案) | 单盘位 SSD 硬盘盒 | 成品 NAS(群晖/威联通) |
|---|---|---|---|
| 单位容量成本 | 低(机械盘为主,文字版称降约 63%) | 高 | 中 |
| 7×24 适配 | 好(NAS 盘 + 铝合金散热) | 一般(消费级 SSD) | 最佳 |
| 功耗 | 低(笔记本 + 坞) | 最低 | 中 |
| 系统维护 | 需自行配置 macOS | 同左 | 厂商套件省心 |
| 数据冗余 | 软件 RAID | 无 | 硬件/软件 RAID |
三、macOS 服务器底层环境¶
3.1 防休眠配置 [02:46]¶
MacBook 做服务器的头号大敌:合盖/闲置后进入深度睡眠,容器全部断线。双重防护:
第一重:系统设置
系统设置 → 锁定屏幕/能源 →
✅ 开启「使用电源适配器时,防止显示器关闭时自动睡眠」
(Prevent automatic sleeping on power adapter when the display is off)
第二重:caffeinate 守护进程(开机自启)
# 临时防睡眠(测试用):caffeinate -s 保持磁盘不休眠
caffeinate -s &
# 长期方案:创建 LaunchAgent 开机自启
cat > ~/Library/LaunchAgents/com.user.caffeinate.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.caffeinate</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/caffeinate</string>
<string>-s</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.user.caffeinate.plist
caffeinate -s 参数语义:仅在接通电源时声明系统睡眠禁止(-s = prevent system sleep while on AC power),合盖仍可休眠显示但系统服务不断。
[!warning] 合盖行为 M1 MacBook Air 合盖默认会睡眠(Clamshell mode 需外接电源 + 外接显示器才保持运行)。本方案接了拓展坞 HDMI 输出到电视,满足外接显示器条件。若不接 HDMI,建议保持开盖使用或外接任意显示器。
文字版声称实测连续运行 72 小时未意外休眠(AI 摘要数据,未独立验证)。
3.2 固定内网 IP [03:41]¶
两种方式任选其一:
| 方式 | 操作 | 适用 |
|---|---|---|
| 路由器绑定(推荐) | 路由器后台 → DHCP 静态租约,把 MacBook 的 MAC 地址绑定到固定 IP(如 192.168.100.111) | 不动主机配置,换机器只需改绑定 |
| 手动静态 IP | 系统设置 → 网络 → 以太网(USB 网卡)→ 详细信息 → TCP/IP → 手动配置 | 无路由器权限时 |
固定 IP 是后续一切的基础:SMB 挂载地址、容器端口访问、Remote for Mac 连接目标都依赖它。
3.3 文件共享与远程桌面 [04:20]¶
系统设置 → 通用 → 共享
✅ 文件共享(File Sharing, SMB)
→ 共享文件夹:添加外接硬盘挂载点
→ 用户权限:仅授权专用账户
✅ 远程管理 / 屏幕共享(Screen Sharing / Remote Management)
→ 允许指定用户图形化远程控制
配置后局域网内其他设备:
- macOS/Windows:
smb://192.168.100.111直接挂载外接硬盘为网络磁盘 - 另一台 Mac:访达侧栏 → 共享的 → 屏幕共享,免接显示器图形化维护
四、容器化服务与智慧生态¶
4.1 为什么选 OrbStack [05:02]¶
| 维度 | OrbStack | Docker Desktop | Colima |
|---|---|---|---|
| 资源占用 | 极低(轻量虚拟化) | 重(Electron + VM) | 低 |
| macOS 集成 | 深(文件共享原生快) | 一般 | 一般 |
| ARM 原生 | ✅ Apple Silicon 原生(非 Rosetta 模拟) | ✅ | ✅ |
| 容器/机器管理 | 容器 + Linux 虚拟机一体 | 仅容器 | 仅容器 |
| 免费可用 | ✅ 个人免费 | 需订阅(大企业) | ✅ 开源 |
配合 DPanel(国产中文容器管理面板,默认端口 8807)降低命令行门槛:
# DPanel 安装(Docker 方式)
docker run -d \
-p 8807:8088 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v dpanel:/dpanel \
dpanel/dpanel:latest
# 浏览器访问 http://192.168.100.111:8807
4.2 端口规划总表¶
| 服务 | 端口 | 用途 | 部署方式 |
|---|---|---|---|
| DPanel | 8807 | 容器管理面板 | Docker |
| Home Assistant | 8123 | 智能家居中枢 | Docker |
| Immich | 2283 | 照片备份/相簿 | Docker Compose |
| Jellyfin | 8096 | 影视媒体库 | macOS 原生 |
| qBittorrent | 8080(默认 Web UI) | 远程下载 | macOS 原生 |
原则:数据库类/更新频繁的服务放容器(易迁移重建),依赖硬件编解码的放原生(性能直通)。
4.3 Home Assistant [06:47]¶
docker run -d \
--name homeassistant \
--privileged \
--restart=unless-stopped \
-e TZ=Asia/Shanghai \
-v /Volumes/HDD-RAID/homeassistant:/config \
--network=host \
homeassistant/home-assistant:stable
# 浏览器访问 http://192.168.100.111:8123
要点:
- 时区必须 TZ=Asia/Shanghai,否则自动化时间全部错位
- 配置目录挂载到机械硬盘分区,容器重建配置不丢
- 通过 HACS(Home Assistant Community Store)集成 Apple TV、Nanoleaf、米家网关等插件,把非 HomeKit 设备统一桥接进 Apple 生态
- 远程访问可用 Cloudflare Tunnel,无需公网 IP
4.4 Immich 相簿 [07:17]¶
开源的照片/视频自托管方案(Google Photos 替代)。macOS + OrbStack 部署(综合东东博客实测流程):
# 1. 创建目录并下载官方配置
mkdir -p ~/immich-app && cd ~/immich-app
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
# 2. 编辑 .env,把照片存储指向外接大容量硬盘
# UPLOAD_LOCATION=/Volumes/HDD-RAID/photo_backup
# DB_DATA_LOCATION=./postgres (数据库放本地 SSD,性能更好)
# 3. 启动
docker compose up -d
# 浏览器访问 http://192.168.100.111:2283,注册首个用户(即管理员)
手机端装 Immich App,开启自动备份即取代 iCloud/Google Photos 付费方案。
日常运维:
# 更新(Immich 平均一周一小版本,更新前先比对官方最新 docker-compose.yml 差异)
docker compose pull && docker compose up -d
# 数据库备份
docker exec -t immich_postgres pg_dumpall -c -U postgres | gzip > immich-dump.sql.gz
# 批量导入存量照片(CLI,需 Node.js ≥ v20)
npm i -g @immich/cli
immich login http://192.168.100.111:2283 <API_KEY>
immich upload --recursive --album --skip-hash /path/to/photos
版本演进要点(按需启用):v1.106+ 支持中文界面;v1.113+ 支持文件夹视图浏览;v1.120+ 内置数据库备份功能(管理后台直接开启)。
[!warning] OrbStack + SMB 挂载坑(重要) 不要把 SMB 网络共享挂载点直接作为容器 volume 路径——OrbStack 早期版本(issue #822,2023-11)会整个挂死需重启。正确做法:本方案中外接硬盘是直连 USB 挂载到
/Volumes/...,属于本地磁盘,无此问题;UPLOAD_LOCATION指向本地挂载点即可。若真要从网络共享读照片进 Immich,先拷到本地盘再导入(External Library)。
五、影音中心与客厅机顶盒交互¶
5.1 媒体库服务端 [08:34]¶
Jellyfin/Plex 服务端直接装 macOS 原生版(非 Docker),M1 硬解码直通:
| 维度 | Jellyfin | Plex | Emby |
|---|---|---|---|
| 开源 | ✅ 完全开源 | ❌ 闭源(核心免费) | ❌ 部分闭源 |
| 硬解转码 | ✅ 免费 | 需 Plex Pass(付费) | 需订阅 |
| 客户端 | Infuse 等 | 全平台官方 | 全平台 |
| 刮削器 | 可换豆瓣源(中文匹配好) | 默认 TMDB | 可换 |
| 默认端口 | 8096 | 32400 | 8096 |
视频选 Jellyfin + 豆瓣刮削源(中文元数据匹配更准),配合 qBittorrent 的 Web UI 远程建下载任务,下载目录直指媒体库 watched 文件夹,入库全自动。
手机 qBittorrent App / 浏览器
│ 添加种子/磁力
▼
qBittorrent (Web UI :8080) ──下载──▶ /Volumes/HDD-RAID/Media/Movies
│ 监控新文件
▼
Jellyfin (:8096) ──刮削──▶ 豆瓣元数据 + 封面
│
┌─────────────────────────────────┤
▼ ▼
电视端 Infuse/App 手机 Infuse 串流
(M1 HDMI 4K 输出) (局域网直接拉流)
5.2 手机遥控:Remote for Mac [09:40]¶
MacBook 接电视后缺交互手段,用手机 App「Remote for Mac」补齐(四页式交互):
| 页面 | 功能 | 对应场景 |
|---|---|---|
| 首屏 | 媒体控制(播放/暂停/音量) | 看片中途控制 |
| 次屏 | 触控板(模拟鼠标手势) | 通用导航 |
| 三屏 | 键盘输入 | 搜索/输密码 |
| 四屏 | App 快捷栏 | 一键切换爱优腾/B站/Infuse |
核心价值:爱奇艺/Bilibili 等网页或客户端全屏后,手机左右滑动秒切 App,MacBook 变成「免电视会员的高性能电视盒」——电视端 App 的会员墙被绕过(用 Web 端/桌面端账号体系),且 M1 解码能力远超普通电视盒子。
文字版声称 Infuse 播 4K H.265 时 M1 功耗约 11W、表面温度 42.3℃(AI 摘要数据,量级合理但未独立验证)。
六、决策树与避坑清单¶
6.1 什么情况适合这套方案¶
手里有闲置 MacBook / Mac mini?
│
├─ 只是想要 NAS(文件共享)
│ → 最简路径:SMB 共享 + 固定 IP + 防休眠,完事
│
├─ 想要 NAS + 照片备份
│ → 上面 + OrbStack + Immich(Docker Compose)
│
├─ 想要 NAS + 照片 + 智能家居
│ → 上面 + Home Assistant 容器(HACS 桥接 HomeKit)
│
└─ 全家桶(NAS + 照片 + 智能家居 + 影音机顶盒)← 本视频
→ 上面 + Jellyfin 原生 + qBittorrent + Remote for Mac + HDMI 接电视
6.2 避坑清单¶
- ✅ 先做防休眠 + 固定 IP,再部署任何服务(顺序反了会反复断连排查到崩溃)
- ✅ 机械盘 HFS+ 日志式、SSD 用 APFS(别对 HDD 用 APFS,写入放大伤盘)
- ✅ 数据库类容器数据放 SSD(postgres/pgdata),照片视频放 HDD
- ❌ 不要把 SMB 网络挂载点直接当容器 volume(OrbStack 挂死坑)
- ❌ 不要用 Wi-Fi 跑 NAS 流量(拓展坞实体网口是为稳定带宽)
- ✅ Immich 升级前 diff 官方 docker-compose.yml,配置漂移是升级翻车主因
- ✅ MacBook 合盖想运行:需外接电源 + 外接显示器(本方案 HDMI 接电视正好满足)
- ✅ 远程访问(出门在外)用 Cloudflare Tunnel / Tailscale,不要裸暴露端口到公网
参考资料¶
- 视频:闲置 Macbook Air 变身 NAS+高清机顶盒,终结配置教程(梅有机)
- smzdm 文字版:闲置Macbook Air变身 NAS+高清机顶盒(AI 生成摘要,含硬件型号与端口细节)
- macOS 部署体验 immich 相册 — 东东's Blog(OrbStack + Immich 完整部署/备份/CLI 流程)
- OrbStack issue #822: Network shares as volumes 挂死问题
- Immich 官方文档
相关笔记¶
- [[Home Assistant]]
- [[OrbStack]]
- [[Jellyfin]]
- [[Immich]]
文档生成时间:2026-09-01 基于视频 XN0AeV355BA(2026-02-03)+ 三份外部资料交叉整理