从零构建 All-in-One 家庭服务器:硬件、系统与服务边界
编写时间:2026-06-04
一开始其实没想把它做成多完整的 homelab。只是照片、视频、文档、小工具和博客这些东西越堆越多,总觉得应该有一台自己的机器长期在线,能放在家里慢慢折腾。
所以第一步不是画架构图,而是先把需求摊开:能安静运行,能放文件和媒体,能跑 Docker,能部署博客,最好人在外面时也能救回来。硬件就先按“够用、便宜、能验证”的思路来,系统、网络、数据盘跑通以后,再继续往上加服务。
后面的问题是一层一层冒出来的。服务要从外网访问,就要处理域名、证书、软路由、DDNS、端口转发;管理页面不想裸露,就放到 Cloudflare Application / Zero Trust 后面;WireGuard 主要是为了折腾伪局域网,让服务器当中转节点;远程重启最后还是智能插座配合 BIOS 通电自启最实用。这里先记底座:硬件怎么选、系统怎么起、数据盘怎么挂、Docker 和 NPM 的边界怎么留。
搭建路线
当时给自己列的索引大概就是下面这个顺序。每做完一层,下一层的问题就会露出来:
| 阶段 | 当时解决的问题 | 对应文章 |
|---|---|---|
| 需求与硬件 | 先确认到底要一台什么机器 | 本篇 |
| 系统初始化 | 让服务器能稳定启动、联网、挂载数据盘 | 本篇 |
| 域名和备案 | 让服务能被公网访问,并处理境内入口问题 | 家庭网络架构 |
| 软路由 | 让家里网络由可控网关接管 | 家庭网络架构 |
| DDNS 与端口转发 | 把动态公网 IP 变成可访问的域名入口 | 家庭网络架构 |
| WireGuard | 让服务器作为中转节点,组一个伪局域网 | WireGuard 组网 |
| 自托管服务 | 部署博客、媒体库、文件服务和管理面板 | 自托管服务矩阵 |
| 智能插座 / 通电自启 | 人不在家时也能远程重启服务器 | 远程管理与自动化维护 |
| 双机博客 | 兼顾家庭服务器和固定 IP 备案入口 | 双机博客架构 |
需求定义
装机前先把需求拆清楚,否则很容易从“买块硬盘”一路膨胀成“家里小机房”。
| 需求 | 具体内容 | 设计影响 |
|---|---|---|
| 存储 | 文档、照片、视频、下载内容 | 需要独立数据盘、固定挂载点和备份意识 |
| 媒体 | 1080P 在线播放、番剧自动整理 | CPU 核显、网络带宽和目录结构都很重要 |
| 博客与服务 | 个人主页、后台、文件管理、容器面板 | Docker Compose + 反向代理更合适 |
| 远程管理 | 异地 SSH、Web 管理、远程重启 | 管理入口放 Zero Trust,重启依赖智能插座和通电自启 |
| 网络实验 | DDNS、Cloudflare Tunnel、WireGuard | DDNS 解决公网入口,WireGuard 用来做伪局域网 |
| 学习实验 | Docker、K8S、Home Assistant | 内存和系统盘不能卡得太死 |
我的判断是:存储和媒体服务不需要特别强的 CPU,真正影响长期体验的是安静、低功耗、网络路径、磁盘布局和维护成本。先用一套便宜硬件跑通,再按使用习惯升级,会比一开始就堆满配置更稳。
第一版硬件
第一版更像一个可运行的 MVP:低成本、能长期通电、能跑容器、有基本核显能力,并尽量保持安静。
下面的价格是 2023-2024 年搭建和升级时的参考价,只反映当时的二手/活动行情。现在内存、SSD 等价格波动很大,不适合直接拿来当采购预算。
| 部件 | 型号 / 方案 | 价格 | 选择原因 |
|---|---|---|---|
| 机箱 | 傻瓜超人 K66 Air | 128 元 | 便宜、小体积,适合先验证方案 |
| CPU | AMD 速龙 200GE / 3000G | 240 元 | 2C4T、3.5GHz 左右,带基础核显 |
| 散热 | AMD 幽灵散热器 | 17 元 | 成本低,压这类 CPU 足够 |
| 主板 | 华硕 A320M-K | 225 元 | 入门 AM4 平台,便宜稳定 |
| 内存 | 三星 DDR4 2133 8GB x 2 | 178 元 | 16GB 足够跑 Docker,也能做一些 K8S 学习 |
| 电源 | 台达 DPS 250W FLEX | 259 元 | 功率远大于实际需求,但稳定且留有升级余量 |
| 存储 | 铠侠 RC20 2TB SSD | 760 元 | 机械盘更便宜,但 SSD 更安静 |
这套配置的核心不是性能,而是“把系统跑起来”。CPU 能承担轻量容器、基础媒体服务和少量后台任务;16GB 内存给 Docker 留余量;2TB SSD 牺牲了一点容量性价比,换来安静和响应速度。
进阶硬件方案
跑通之后,瓶颈会从“能不能运行”变成“维护是否舒服、硬盘扩展是否方便、噪音是否可接受”。因此进阶方案转向更 NAS 化的小机箱和更现代的平台。
这一组同样是当时的价格记录,主要看取舍思路,不看绝对价格。
| 部件 | 型号 / 方案 | 价格 | 选择原因 |
|---|---|---|---|
| 机箱 | 乔思伯 N2 ITX 优易改进版 | 674 元 | 硬盘位、风道、体积都更适合 NAS |
| CPU | Intel i3-12300T | 520 元 | 4C8T、低功耗,UHD 730 对媒体转码更友好 |
| 主板 | 七彩虹 B660i D4 + AX210 | 560 元 | ITX、小体积,带无线模块且仍有保修 |
| 电源 | TT 钢影 SFX 450W | 510 元 | 全模组、金牌、噪音和稳定性更好 |
| 散热 | IS-47-XT | 110 元 | 适合小机箱高度限制 |
| 远程电源 | 支持米家的开机卡 | 30 元 | 和智能家居联动,便于远程重启兜底 |
旧平台还能二手回收一部分成本,例如电源、CPU、主板都可以单独出掉。这样升级不是一次性推倒重来,而是把第一版的验证成本控制在可接受范围内。
系统选择
系统侧选择偏服务器发行版,核心是稳定、包管理清晰、Docker 生态正常。AlmaLinux 这类发行版适合长期运行;CasaOS、Home Assistant 可以作为服务跑在容器里,不一定要让它们接管整个系统。
初始化时先完成仓库、基础工具、网络和 Docker:
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release -y
sudo dnf update -y
sudo dnf install htop btop vim git curl wget -y网络交给 NetworkManager 管理,静态地址尽量放在路由器 DHCP 绑定里做。宿主机保持 DHCP 自动获取,断电重启后更容易恢复联网:
nmcli device
nmcli con mod "[connection-name]" ipv4.method auto
nmcli con mod "[connection-name]" connection.autoconnect yes
nmcli con down "[connection-name]"
nmcli con up "[connection-name]"这里的原则是:系统本身越简单越好。宿主机负责稳定启动、稳定联网和稳定挂载数据盘;业务复杂度交给 Docker。
数据盘与 LVM
数据盘使用 LVM 的价值在于后续扩容方便。单盘阶段先把数据目录整理成固定挂载点,后续加盘时再扩展卷组。
常见流程:
sudo parted /dev/[disk]
sudo pvcreate /dev/[disk-partition]
sudo vgcreate vgdata /dev/[disk-partition]
sudo lvcreate -n data -L [size] vgdata
sudo mkfs.xfs /dev/vgdata/data
sudo mkdir -p /mnt/vault/etc/fstab 用逻辑卷挂载:
/dev/mapper/vgdata-data /mnt/vault xfs defaults 0 0目录约定比随手放文件重要:
/home/[user]/compose/
├── nginx-proxy-manager/
├── mx-space/
├── shiro/
├── jellyfin/
├── qbittorrent/
└── alist/
/mnt/vault/
├── media/
├── downloads/
├── backup/
└── alist/compose 放服务编排,vault 放数据。容器可以重建,数据不能丢。
Docker 与反向代理边界
系统和数据盘稳定以后,我才开始安装 Docker。这里的思路是:宿主机只保留最基础的运行环境,具体服务尽量都放进 Compose。这样以后换机器、重装系统或者迁移服务时,主要恢复 compose 目录和数据目录即可。
在 AlmaLinux 上先装 Docker,并设置开机自启:
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
sudo systemctl enable --now docker安装完成后可以先跑一个测试容器:
sudo docker run hello-world自托管服务一多,反向代理和容器网络会变成主线。当时我不太熟悉 Nginx 的完整配置,所以先选了 Nginx Proxy Manager。它有管理面板,添加域名、证书、WebSocket 支持都比较直观,大部分普通 Web 服务够用。
现在回头看,我会更倾向直接写 Nginx 配置:自由度更高,也更容易处理复杂 location、缓存、header 和一些边界行为。NPM 更适合快速起步和常规反代,复杂场景还是原生 Nginx 更舒服。这里要注意:NPM 本身内置 Nginx,如果它要占用 80/443,宿主机原生 Nginx 就不要同时占着端口。
推荐先创建一个共享网络,让 Nginx Proxy Manager 能通过容器名访问后端服务:
docker network create nginx每个需要被反代的服务接入这个外部网络:
networks:
nginx:
external: true这里很容易踩坑:NPM 在容器里时,反代里填 localhost 指向的是 NPM 容器自己,不是宿主机,也不是另一个业务容器。最舒服的做法是把后端容器加入同一个 Docker 网络,然后使用容器名作为 upstream。
可靠性边界
All-in-One 的关键不是“永不出错”,而是出错后能远程恢复。
| 风险 | 对策 |
|---|---|
| 宿主机断电 | BIOS 开启 AC Power Recovery |
| 系统卡死 | 智能插座远程断电再上电 |
| 网络断开 | 软路由自动拨号,服务器 DHCP 自连 |
| 服务崩溃 | Docker restart policy |
| 管理入口失效 | Cloudflare Zero Trust / SSH 备份入口 |
阶段结论
这套 All-in-One 的重点是把边界划清:硬件负责长期稳定,宿主机负责联网和存储,Docker 负责服务编排,NPM 或 Nginx 负责入口,Cloudflare Zero Trust 负责管理访问,WireGuard 负责伪局域网实验。
第一版硬件用低成本平台验证需求,进阶方案再把机箱、平台、电源和远程重启兜底补齐。只要这几层不混在一起,后面继续加博客、媒体库、文件服务、自动下载和智能家居入口都不会太痛苦。