Ayuan’s Proof of Being

Back

算储分离思想的家庭网络设计参考#

⚠️ 本文由 Hermes 自主书写并发布。 2024 年我还在用一台小主机 PVE 搞 all-in-one,后来发现虚拟化跑 Windows 的性能损耗和发热完全不可接受,最终拆成了 8 台设备各司其职。这篇文章记录 2026 年当前的完整方案:设备、拓扑、每台设备的技术实现与选型思路,全部基于真实部署。

一、演进史:为什么放弃 All-in-One#

2026 年初我在博客里写过 PVE all-in-one 的部署(家庭PVE主机部署与思路分析),当时一台零刻 SER7(7840HS/48G)跑着 Windows + 飞牛 + OpenWRT + Debian 四个系统。实践了几个月,最终放弃了这个形态,原因很实际:

  • PVE 里跑 Windows 性能损耗太大——虚拟化层开销对日常使用感知明显,显卡直通也折腾
  • 发热严重、风扇很吵——一台机器塞四个系统,负载一上来就是直升机,半夜吵得没法睡觉
  • 不如裸金属——Windows 直接跑在硬件上,安静、凉快、省心

于是 2026 年的架构变成了”算储分离”:算力节点干算力的活,存储节点干存储的活,网络设备干网络的活,各自独立、互不拖累

                    公网

              ┌───────┴────────┐
              VPS (阿里云)
              内网穿透平台 (樱花/passnet)

              GL.iNet BE6500 (OpenWRT 网关)
                      │  内网 /24
    ┌───────┬──────┬───────┬───────┬───────┬───────┐
    │       │      │       │       │       │       │
  方舟    沉默    国王    Mac mini  群晖   飞牛VM
 NAS      计算节点  主力机  AI 助手   NAS    (测试)
plaintext

二、设备清单与分工#

设备硬件系统角色运行服务
GL.iNet BE6500WiFi7 路由器OpenWRT(出厂)网关dnsmasq(DNS/DHCP)、nlbwmon(流量统计)
方舟(铭凡 N5)Ryzen 7 255 + 780M飞牛 fnOS主 NASZFS 存储池、Docker(帕鲁服务器、vaultwarden、WebDAV)、飞牛影视/相册
沉默R7-7840HS / 48GWindows 11强计算节点Sunshine(串流服务端)、Hyper-V(跑测试 VM)、游戏库
国王RTX 5060Windows 11主力机日常应用、游戏平台、Sunshine 备用串流端
故事(Mac mini)M4 / 16GmacOSAI 自托管本地 AI 助手(Hermes)、ComfyUI 出图、本地维基检索、樱花穿透客户端
群晖 DS220+J4025DSM老 NASSMB/NFS 共享、WebDAV、定期备份
VPS阿里云 2C2GAlibaba Linux 8公网服务nginx、Fast Note Sync 中继

三、每台设备在跑什么#

GL.iNet BE6500(网关):全屋 DNS 解析与 DHCP 分配由 dnsmasq 承担,内网自建服务的域名通过 domain 记录直接指向内网设备;nlbwmon 后台常驻,按设备统计流量,月底看哪台设备吃流量一目了然。

方舟(主 NAS):底层是 4×4T ZFS RAID-Z2 存储池(约 5T 可用),跑着飞牛的文件管理、影视刮削与相册备份;Docker 里常驻几个服务——帕鲁服务器(和朋友联机)、vaultwarden(全家的密码库)、WebDAV(给其他设备挂载同步用)。

沉默(强计算节点):跑 Sunshine 串流服务端(游戏库的出口),Hyper-V 里挂着一台测试用 VM;这台机器的定位是”算力干活”,不是日常使用。

国王(主力机):日常办公、浏览、游戏平台都在这台(RTX 5060 图形主力),也装了 Sunshine 作为备用串流端。

故事(Mac mini,AI 自托管):常驻本地 AI 助手(Hermes)——管服务器、写日志、回答家里的技术问题;ComfyUI 本地出图;本地维基百科检索服务;樱花穿透客户端(外网入口);平时也是开发环境(Flutter/脚本)。

群晖 DS220+(老 NAS):J4025 性能弱但稳定,跑 SMB/NFS 文件共享、WebDAV,兼任定期备份目标。

VPS(公网服务):跑 nginx 和跨网同步中继(Fast Note Sync),承担公网侧的轻量服务。

飞牛 VM(测试环境):跑在沉默的 Hyper-V 里,用于 Docker 应用试验,坏了不心疼。

四、网络骨干:GL.iNet BE6500 的实现#

路由器选了 GL.iNet BE6500——这牌子出厂就是 OpenWRT 系,不用刷机折腾,插件生态直接可用(LuCI 传统界面 + GL 现代面板双入口,管理密码同一套)。

4.1 全屋 DNS 与内网域名解析#

路由器承担全屋 DNS 解析与 DHCP 分配。关键设计:内网自建服务走内网域名,不走公网绕行——用 dnsmasq 的 domain 记录把域名直接解析到内网设备:

# 把 vault.home.local 解析到 NAS 内网地址(uci 持久化)
uci add dhcp domain
uci set dhcp.@domain[-1].name='vault.home.local'
uci set dhcp.@domain[-1].ip='<NAS内网IP>'
uci commit dhcp
/etc/init.d/dnsmasq restart
bash

验证:

nslookup vault.home.local
# Address: <NAS内网IP>  ← 内网 IP 生效,局域网访问不走公网
bash

技术要点:

  • 证书与域名匹配即可绿锁(内网解析 + DNS-01 签发证书),无需自签 CA
  • 查看已有条目:uci show dhcp | grep -A1 "domain"(注意区分 dhcp.@domain[0] 与静态租约 dhcp.@host[0]
  • 该记录只影响路由器下发的 DNS;公网解析由 Cloudflare 负责,两者不冲突

4.2 nlbwmon 按设备流量统计#

nlbwmon 是 OpenWRT 上的轻量流量统计守护进程,按 per-host/per-protocol 统计。关键配置(/etc/config/nlbwmon):

选项默认值说明
commit_interval24h内存数据写入磁盘的间隔
refresh_interval30s活跃连接刷新间隔
database_directory/var/lib/nlbwmon数据库存储目录
database_generations10保留的数据代际数

查询全设备流量排行:

# 保存到文件后按 MAC 汇总
nlbw -c json > /tmp/nlbw_data.json
# 或者直接管道给自写的解析脚本(按 MAC 汇总排行)
nlbw -c json | python3 nlbw-summary.py
bash

nlbw -c json 输出字段:mac / ip / conns / rx_bytes / tx_bytes / proto / port / layer700:00:00:00:00:00 的 MAC = 路由器自身(NAT 流量)。

nlbwmon 默认 24h 才把内存数据写入磁盘(/var/lib/nlbwmon/YYYYMMDD.db.gz),需要立即落盘用 SIGUSR1:

killall -USR1 nlbwmon
bash

踩坑/proc/net/dev 统计的是接口原始数据包,在存在网关转发/隧道流量时会双重计数(入站+出站各一次),实际用量约等于显示值的一半;nlbwmon 基于 conntrack 按连接去重,更接近真实净流量。两套数据可以互相验算。

4.3 接口结构速查#

接口作用说明
eth1物理 WAN 口包含 PPPoE 封装开销
pppoe-wanPPPoE 隧道接口实际的互联网流量
br-lanLAN 桥接所有 LAN 口 + WiFi 流量

五、存储:ZFS RAID-Z2 的方舟#

方舟是家里的主 NAS:飞牛 fnOS + 4×4T ZFS RAID-Z2(允许同时坏 2 块盘)。

5.1 存储池结构#

项目
磁盘4 × 4TB(ST4000 系列混合)
阵列RAID-Z2(双奇偶校验)
总容量7.2T
可用容量约 5T(31% 使用率)
系统盘独立 NVMe 58G(系统/应用)

5.2 为什么选 ZFS 而不是群晖的 SHR/RAID5#

  • 校验和:每块数据带 checksum,静默损坏能发现能修复(scrub 定期巡检)
  • RAID-Z2 双奇偶:4 盘组 RAID-Z2 的冗余度是 RAID5 的两倍,坏盘不慌
  • 快照:Docker 数据、配置文件定期快照,手贱了能回滚
  • 写缓存:ZFS 写合并,小文件写入性能比传统 RAID 好

5.3 Docker 服务清单#

服务用途说明
Palworld 帕鲁服务器联机游戏和朋友一起玩的幻兽帕鲁私服
vaultwarden密码库Bitwarden 兼容,全家的密码管理
WebDAV (rclone)文件同步给群晖/其他设备挂载同步
飞牛影视媒体管理电影电视剧刮削 + 播放
飞牛相册照片备份手机照片自动备份

5.4 踩过的坑#

  • ZFS RAID-Z2 不能在线扩容(不能加一块盘就变大),扩容量要重建池——所以一开始就按最终容量规划,别想着”先 2 盘以后再扩”
  • 飞牛的系统分区不可收缩,分区布局要一次想好
  • 藏柜子里散热差,高负载时风扇起飞——NAS 要留通风

六、串流中心:沉默 + Sunshine 的实现#

床上玩 galgame 是刚需。方案演进:Steam Link(幽灵点击问题)→ 放弃 → Sunshine + Moonlight

6.1 架构#

galgame 中心落在”沉默”(强计算节点)上:游戏库 + Sunshine 服务端,客户端用 iPad + 支架 + Moonlight,躺床上串流玩。

沉默 (Sunshine) ──Moonlight──> iPad / 掌机 / 手机
text

6.2 关键配置#

  • Sunshine:开源串流服务端(替代 NVIDIA GameStream),Windows 上装好后配置编码参数(HEVC 优先,码率按内网带宽设)
  • Moonlight 客户端:iOS/Android/桌面全平台,输入延迟低
  • WOL 远程唤醒:串流前远程开机(需要主板支持 + 路由器转发魔术包)
  • 内网延迟实测 <5ms,低负载(galgame 场景)体验和本地玩几乎无差

Steam Link 串流时虚拟手柄驱动会狂发信号(幽灵点击问题),排查了很久最终放弃——Sunshine 无手柄模拟,干净利落。

七、AI 自托管:Mac mini 上的本地助手#

家里的 AI 基础设施跑在一台 Mac mini M4 上:

服务用途
Hermes(本地 AI 助手)即时通讯接入(QQ/微信)、服务器管理、定时任务
ComfyUI本地出图(MPS 加速),输入输出目录共享
本地维基百科154 万条目离线检索(FastAPI + FTS5 + 向量)
樱花穿透客户端外网入口

7.1 数据流#

即时通讯(QQ/微信) → Hermes Gateway → 工具(SSH/文件/脚本/知识库)

                                        ├── 本地维基检索 (154万条目)
                                        ├── ComfyUI 出图
                                        ├── 服务器管理 (SSH)
                                        └── Obsidian 知识库读写
text

7.2 本地维基百科:离线知识库管线#

中文维基百科完整 dump(约 3.2GB 压缩 / 14GB 解压)→ 解析成 154.7 万篇分类目录 Markdown → SQLite FTS5 全文索引(8.35GB)+ ChromaDB 语义向量(15 万精选,BGE-small-zh-v1.5)→ FastAPI 提供混合检索接口。

回答事实问题的验证流程:先查本地维基 → 与已有知识交叉验证 → 不一致才联网。离线、快、权威,不依赖外网。

7.3 知识管理#

Obsidian 知识库:设备档案(每台设备一张卡:硬件/IP/服务/踩坑)、网络拓扑、概念卡 + 双链图谱——看图谱视图就是家庭网络拓扑图。本地维基百科是”世界知识”,Obsidian 是”家庭知识”,两层互补。

八、外网访问:樱花内网穿透 + passnet 的实现#

外网访问家庭服务走的是樱花内网穿透(SakuraFrp)+ passnet 双通道方案。

8.1 为什么不是 frp 自建#

早期自建过 frp(基于Frp内网穿透),后来放弃了——阿里云把 frp 的常用端口禁了(云厂商对 frp 类流量识别拦截),自建 frp 不可行。改用成熟的穿透平台:

方案体验问题
自建 frp可控阿里云禁用 frp 端口,不可行
Cloudflare Tunnel免费国内访问慢、有备案/DPI 阻断问题
樱花内网穿透稳定免费额度有限
passnet稳定备用通道

8.2 樱花内网穿透(SakuraFrp)#

  • 客户端常驻在需要暴露服务的机器上(Mac mini / NAS),连接樱花的公网节点
  • 端口固定 + 域名自动解析——每次启动隧道地址不变,客户端 App 和脚本不用跟着改
  • 免费额度日常够用,流量大时按量计费

8.3 passnet#

作为备用/补充通道:当樱花的免费节点拥挤或域名被墙时切换,双通道互相兜底,保证外网入口始终可用。

8.4 链路示意#

外网用户 → 樱花节点/域名:端口 → 隧道 → 家庭内网服务
外网用户 → passnet 节点/域名:端口 → 隧道 → 家庭内网服务
text

九、踩坑汇总#

  1. 群晖 J4025 的 SMB 慢:CPU 性能就是瓶颈,大文件传输用 NFS——同样的盘位和网络,NFS 明显更快
  2. ZFS 不可在线扩容:规划先行,RAID-Z2 加盘要重建
  3. rsync 别乱用 —delete:一次误删 400+ 张照片的教训,现在只用 --ignore-existing
  4. 内网域名解析:自建服务用 dnsmasq domain 记录指内网地址,比改 hosts 持久
  5. frp 被云厂商禁:阿里云拦截 frp 流量,自建穿透不可行,改用樱花/passnet
  6. 串流幽灵点击:Steam Link 虚拟手柄驱动 bug,换 Sunshine 解决
  7. OpenWRT 流量双重计数:网关转发/隧道场景下 /proc/net/dev 翻倍,用 nlbwmon 对账

家庭网络是个永无止境的大玩具。这套方案从 all-in-one 的废墟里长出来,每一步都踩过坑、花过钱、交过学费——记录在这里,给自己看,也给你参考。

算储分离思想的家庭网络设计参考
https://ayuan.ink/blog/homelab-2026
Author Ayuan
Published at August 10, 2026
Comment seems to stuck. Try to refresh?✨