从零构建 All-in-One 家庭服务器:硬件、系统与服务边界

5 天前(已编辑)
/ , , , , ,
20
摘要
总览式整理。根据前面几篇搭建记录,回看一台家庭 All-in-One 服务器的底座:硬件选型、系统初始化、LVM 数据盘、Docker 服务目录、NPM/Nginx 反代边界,以及智能插座 + 通电自启的远程恢复思路。硬件价格为 2023-2024 年参考。

从零构建 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、WireGuardDDNS 解决公网入口,WireGuard 用来做伪局域网
学习实验Docker、K8S、Home Assistant内存和系统盘不能卡得太死

我的判断是:存储和媒体服务不需要特别强的 CPU,真正影响长期体验的是安静、低功耗、网络路径、磁盘布局和维护成本。先用一套便宜硬件跑通,再按使用习惯升级,会比一开始就堆满配置更稳。

第一版硬件

第一版更像一个可运行的 MVP:低成本、能长期通电、能跑容器、有基本核显能力,并尽量保持安静。

下面的价格是 2023-2024 年搭建和升级时的参考价,只反映当时的二手/活动行情。现在内存、SSD 等价格波动很大,不适合直接拿来当采购预算。

部件型号 / 方案价格选择原因
机箱傻瓜超人 K66 Air128 元便宜、小体积,适合先验证方案
CPUAMD 速龙 200GE / 3000G240 元2C4T、3.5GHz 左右,带基础核显
散热AMD 幽灵散热器17 元成本低,压这类 CPU 足够
主板华硕 A320M-K225 元入门 AM4 平台,便宜稳定
内存三星 DDR4 2133 8GB x 2178 元16GB 足够跑 Docker,也能做一些 K8S 学习
电源台达 DPS 250W FLEX259 元功率远大于实际需求,但稳定且留有升级余量
存储铠侠 RC20 2TB SSD760 元机械盘更便宜,但 SSD 更安静

这套配置的核心不是性能,而是“把系统跑起来”。CPU 能承担轻量容器、基础媒体服务和少量后台任务;16GB 内存给 Docker 留余量;2TB SSD 牺牲了一点容量性价比,换来安静和响应速度。

进阶硬件方案

跑通之后,瓶颈会从“能不能运行”变成“维护是否舒服、硬盘扩展是否方便、噪音是否可接受”。因此进阶方案转向更 NAS 化的小机箱和更现代的平台。

这一组同样是当时的价格记录,主要看取舍思路,不看绝对价格。

部件型号 / 方案价格选择原因
机箱乔思伯 N2 ITX 优易改进版674 元硬盘位、风道、体积都更适合 NAS
CPUIntel i3-12300T520 元4C8T、低功耗,UHD 730 对媒体转码更友好
主板七彩虹 B660i D4 + AX210560 元ITX、小体积,带无线模块且仍有保修
电源TT 钢影 SFX 450W510 元全模组、金牌、噪音和稳定性更好
散热IS-47-XT110 元适合小机箱高度限制
远程电源支持米家的开机卡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 负责伪局域网实验。

第一版硬件用低成本平台验证需求,进阶方案再把机箱、平台、电源和远程重启兜底补齐。只要这几层不混在一起,后面继续加博客、媒体库、文件服务、自动下载和智能家居入口都不会太痛苦。

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...