从零开始搭一台精致的 All In One NAS

从零开始搭一台精致的 All In One NAS

之前不是提过内网穿透相关的内容吗, 参考Tailscale Derp服务器搭建 - 知乎, 当时配完 Tailscale 之后顺便跑了几个docker, 主要是 samba, jellyfin 和 1panel, 分别用于文件访问, 视频播放和系统管理, 算是实现了自己的需求, 目前配合 Tailscale 用着还是挺舒服的. 连上虚拟局域网之后, 笔记本上直接通过系统自带的 SMB 服务挂载网络硬盘, 手机端则使用猫头鹰文件访问文件, 同时 jellyfin 播放视频.

机器除硬盘的成本大概 750, 日常待机只有 6W, 非常省电, 总之算是很好地满足了自己的需求. 本文就简单整理下从硬件选择到软件配置的一些基本流程, 希望对想要自己搭一台小巧的 All In One NAS 的读者有帮助.

硬件配置

说白了 NAS 就是一台电脑, 只是其中安装的是专用于网络存储的特制系统, 不过自己用 linux 用惯了, 所以没有选择像飞牛和群晖那样的定制系统, 而是直接用 linux-mint, 我很喜欢的 linux 发行版, 完全兼容 ubuntu 的驱动和源, 而且界面很清爽.

关于为什么不选择定制系统, 还有个很重要的原因是, 我希望这台 NAS 不仅仅用于存储文件, 还可以是一台带远程桌面的 linux 服务器, 通过 Tailsacle 搭好内网穿透之后, 通过 nomachine 可以很方便地远程访问.

由于 NAS 需要一直待机, 所以功耗是非常重要的考量, 所以对于非专业需求(对硬盘容量要求非常高)我是很推荐用小主机的, 这里挑选的是联想的 p330 tiny, 支持 8-9 代 CPU, 带两个 m.2 硬盘位和 1 个 SATA 硬盘位 (支持 2.5 寸 9.5mm 硬盘). 准系统的价格大概是 450, 其实回头看感觉没有必要, 因为 NAS 对性能的要求不高, 所以相对于 m720q 和 nec8 多出的供电实际上也用不太上, 这里大概整理下支持 8-9 代相关的型号, 可以根据需求进行选择.

这类小主机最重要的优势就是采用 DC 电源, 效率非常高, 在搭载 9100T, 1 块 m.2 固态和 1 块 2.5 寸 SATA机械的情况下待机功耗只有 6W, 和手机差不多了, 一年下来可以省不少电费. 直接上 8-9 代的台式虽然价格会便宜一些, 但是 ATX 这样的大块头电源在低功耗下的效率非常差, 还有就是不够精致.
型号硬盘位价格说明
m720q1 m.2 + 1 sata200性价比很高的型号, 推荐;
nec81 m.2 + 1 sata200m720q 在日本发行的同款, 灰白色, 很好看, 我把 p330 的机箱换成这款了;
m920x2 m.2 + 1 sata400比 m720q 和 nec8 多了个 m.2 硬盘位和更好的供电;
p3302 m.2 + 1 sata450相较于 m920x 多了个喇叭, 然后带 thinkstation 的标, 酌情考虑;

准系统说白了就是主板和机箱 (奸商把能拆的都拆下来散着卖了hh), 所以其他配件也需要另外购置:

  • 内存: NAS 对内存的需求不高, 双条 4g 组个 8g 的双通道就很够用了, 价格 100 左右, 前两天看价格已经奔着 200 去了, AI 还是太超模了;
  • 硬盘: 买个 m.2 固态当系统盘, 容量就根据自己钱包定啦, 我自己用的一块 512g 的西数 sn520, 然后就是用于文件存储的大容量 SATA 硬盘了, 这里用的是希捷 ST2000LM003, 2T 的垂直盘, 收藏级别的, 当然叠瓦也没关系, 价格合适都好说;
  • CPU: 本来打算上 i3-8100T 的, 看了下价格发现没差多少, 所以直接上 i3-9100T 了, 价格 100-120 之间, 集显 UHD630, 硬解 4K 毫无压力, 其实可以买不带 T 的版本, 待机功耗其实差不多;
  • 网卡: 本来就是打算连个 WIFI 丢在小角落里的, 所以无线网卡还是很有必要的, WIFI5 的网卡现在非常便宜, 8265ac 和 9260ac 都很不错, 价格分别是 10-15 和 20-30, 不过我还是很推荐直接上 WIFI6 的神卡 AX210, 价格 40-50;
  • 电源: 联想的方口电源, 手里有适配器的可以直接用, 也可以购买 type-c 转方口的转接器配合 pd 充电头使用, 单独购买的话 135w 的电源应该也就 40-50;

总结下来, 不含硬盘的完整硬件价格大概是 700-800 之间, 当然这很大一部分原因是 p330 准系统价格略贵, 如果不是很需要第二个 m.2 硬盘位, 我还是很推荐上 nec8 的, 这样整机的成本就只需要 450-550 了 (我的第二个 m.2 硬盘位到现在没用上hh, 现在硬盘价格太夸张了, 囊中羞涩~).

其实网上有教程可以把 nec8 和 m720q 的第二个 m.2 硬盘位补上, 但是需要一定的动手能力, 鱼上也有老哥提供补硬盘位的服务, 应该大几十可以搞定, 但是稳定性不好说, 性价比这块是拉满了.

把所有配件集齐之后, 就得到了下面这台精致小巧的小主机了. 手边没啥合适的参照物, 这里用一台 11 寸的平板电脑陪衬下, 颜值占了我购买欲望相当大的比重哈哈.

还有就是一些零零散散的东西了, 虽然我觉得三个硬盘位 6-8T 的容量对个人而言还是很够的hh, 但如果需要更大的硬盘容量, 也可以外接个硬盘柜, 但是感觉就没那么和谐了. 下面放张功耗图, 全待机无负载的情况下每天仅需 0.15度电.

软件环境

现在我们有一台完整的小主机了, 在搭建各种服务之前还需要安装系统, 不过各种系统的安装大同小异, 基本都是去官网把镜像下下来之后通过烧录工具 (推荐 balena etcher) 烧写到 U盘, 插到小主机上开机进 BIOS 改 U 盘启动然后一路 next 就行.

安装过程中唯一需要操作的就是系统盘的分区了, 关于分区配置网上也有很多的教程, 这里就不再赘述啦.

之后就是根据自己的需求配置各种服务, 大多数服务都有现成的 docker 所以配置起来非常简单,

samba

NAS 的核心就是网络存储, 所以首先就是 samba, 这里的命令需要根据自己的需求修改, 主要是以下几个参数:

  • -u: 设置用户和密码, 用于 samba 服务器的登录, 可执行设置;
  • -v: 将物理机上的文件映射到 docker 内, 这里的/home/mint/srv/samba/shared/seagate是我设置的软链接, 实际上对应的是机械硬盘挂载到的/mnt/hdd/seagate, 这样管理起来比较方便;
  • -s: samba依赖的参数, 修改前两项即可, 可以为每个挂载的路径指定名称, 在通过 SMB 远程挂载时就能看到对应的盘了;

其他参数可以不用修改, docker 跑起来之后就能通过 Windows 自带 SMB 挂载网盘了, 传输速度当然受限于网络速度, 家庭宽带的上传速度往往只有下载速度不到 1⁄4, 但对于百兆宽带而言, 2-4MBps 的速率也完全足够在线观看视频了.

sudo docker run -d \
	--restart unless-stopped \
	--name samba \
    -p 139:139 -p 445:445 \
    -v /home/mint/srv/samba/shared/seagate:/samba/seagate \
    -u "<username>;<password>" \
    -s "seagate;/samba/seagate;yes;no;yes;all;samba;samba" \
    dperson/samba

手机端则推荐使用猫头鹰文件, UI很清爽, 而且对 SMB 这样的基础功能不收费, 之前还用过MiXplorer, 但是界面有点粗糙了hh. 简单复制个大文件测了下速度, 内网下有 40MB/s, 还是很不错的, ciallo~.

nomachine

很好用的跨平台局域网远程桌面应用, 官网是Free Remote Desktop for Everybody - NoMachine, 在小主机里安装之后开启服务(安装完之后是默认开启的), 即可在其他设备上利用 Tailscale 提供的虚拟局域网 IP 远程访问小主机了.

在没有显示器的 headless 模式下 nomachine 可能会有些小问题, 比如虚拟桌面无法正常启动之类的, 所以可以买个 HDMI 欺骗器插到小主机上.

在 Tailscale 打洞成功的情况下, 远程桌面的延迟非常低, 和市面上主流的远程桌面应用比起来更好用, 关键是不限制传输质量, 只要网络够好 4K 完全不是问题. 内网下的延迟则几乎无感, 也不需要给小主机专门配个屏幕, 就安安静静的当个桌搭就行.

jellyfin

经典的视频管理应用, 关于 jellyfin 的配置网上一大堆, 这里就也不过多介绍啦, 参考下 docker 命令, 自己修改下对应参数就行.

同样的, 这里/home/mint/srv/jellyfin下的 jellyfin 相关文件中用于存储视频文件的 media 目录也是软链接, 对应的是挂载到/mnt/hdd/seagate的机械硬盘内的存储视频的文件夹.
sudo docker run -d \
	--restart unless-stopped \
	--name=jellyfin \
    -p 8096:8096 -p 8920:8920 -p 7359:7359/udp -p 1900:1900/udp \
    -v /home/mint/srv/jellyfin/config:/config \
    -v /home/mint/srv/jellyfin/cache:/cache \
    -v /home/mint/srv/jellyfin/media:/media \
    -e TZ=Asia/Shanghai \
    -e PUID=1000 \
    -e PGID=1000 \
    --device /dev/dri:/dev/dri \
    nyanmisaka/jellyfin:latest

1panel

似乎是挺多人用的系统管理平台, 但是我不是很喜欢, 主要是移动端好像要收费, 偶尔想看看小主机系统状态在手机端的网页浏览不是很方便, 不过既然配了就一并把 docker 命令列出来吧.

docker run -d \
    --name 1panel \
    --restart unless-stopped \
    --network host \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /home/mint/srv/1panel/data:/opt \
    -e TZ=Asia/Shanghai \
    moelin/1panel:latest

不过对于这里的需求我更推荐使用 serverbox, 一个开源的服务器管理应用, 而且 UI 做得很不错, 把 Tailscale 挂上之后就能通过 serverbox 直接查看小主机的状态了, 执行一些 ssh 指令还是很方便的.

qbittorrent

补充个下载磁链的docker, linuxserver/qbittorrent, 其中端口号8999可以自定义, 目录映射可以把下载目录改成指定目录, 平时通过tailscale的虚拟 IP 访问 WebUI 直接在浏览器中挂上链接, 睡一觉第二天就下完了, 很方便的小工具。

docker run -d \
  --name=qbittorrent \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e WEBUI_PORT=8999 \
  -p 8999:8999 \
  -p 6881:6881 \
  -p 6881:6881/udp \
  -v /home/mint/srv/qbittorrent/config:/config \
  -v /home/mint/srv/qbittorrent/downloads:/downloads \
  --restart unless-stopped \
  linuxserver/qbittorrent:latest

jeckett

为了方便搜索资源, 还可以顺便安装下 jeckett, 一个集合了多个磁链搜索平台的docker. 由于很多平台都需要魔法, 所以这里手动指定了下 docker 内使用宿主机的代理(通过 host.docker.internal 访问宿主机).

docker run -d \
  --name=jackett \
  --add-host=host.docker.internal:host-gateway \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e http_proxy=http://host.docker.internal:7890 \
  -e https_proxy=http://host.docker.internal:7890 \
  -e no_proxy=localhost,127.0.0.1,host.docker.internal \
  -p 9117:9117 \
  -v /home/mint/srv/jackett/config:/config \
  -v /home/mint/srv/jackett/downloads:/downloads \
  --restart unless-stopped \
  lscr.io/linuxserver/jackett:latest

2026.04.18 更新

把 CPU 从 9100T 换成 8600 了, 待机功耗从 6-7W 降到了 4-5W, 有些匪夷所思, 好像说因为 C-States 的支持问题导致非 T 待机功耗反而更低??有没有懂的知友,amazing

还有就是最近补了个用 opencas + 傲腾 实现机械硬盘加速的博客, 把剩下的硬盘位利用起来了, 大家可以参考下linux下用傲腾作为缓存加速机械硬盘读写 - 知乎. opencas 的核心优势是不用对被加速的机械硬盘做任何处理,直接构建了一个虚拟块设备, 我觉得比 bvcache 和 lvm cache 的策略要好不少, 可以完整保留原始数据.

编辑于 2026-04-18 · 著作权归作者所有