入门教程

NAS 搭建家庭实验室:从零开始的虚拟化与容器化实践

你是否曾经想过,家里那台 NAS 除了存电影和备份照片,还能干点更酷的事?也许你想跑一个个人博客,或者搭建一个智能家居控制中心,甚至想学学 Kubernetes 但不想花钱买云服务器。这些想法,其实一台 NAS 就能全部搞定。不过,很多人把 NAS 买回家后,就只把它当成一个网络硬盘,白白浪费了它强大的计算能力。今天,我们就来聊聊如何把 NAS 变成你的家庭实验室,从虚拟化到容器化,一步步开启折腾之旅。

准备工作:硬件与系统选择

在开始之前,先确认你的 NAS 硬件是否够用。一般来说,x86 架构的 NAS(如群晖、威联通、铁威马等)是首选,因为它们支持虚拟化(Virtualization)和 Docker。ARM 架构的 NAS 虽然也能跑一些轻量容器,但性能受限,玩不出太多花样。

如果你的 NAS 内存低于 8GB,建议先升级内存。虚拟机和多个容器同时运行非常吃内存,8GB 是起步,16GB 会更从容。另外,最好准备一块独立的 SSD 作为系统盘或容器存储盘,这样读写性能会好很多。

系统方面,群晖的 DSM 和威联通的 QTS 都自带虚拟机套件和 Container Station,开箱即用。如果你用的是 DIY NAS,可以安装 Proxmox VE 或 TrueNAS Scale,它们本身就是为虚拟化和容器设计的,功能更强大。

用虚拟机跑一个轻量 Linux 服务器

虚拟机(VM)是家庭实验室的基础。比如,你想跑一个 Ubuntu 服务器来学习 Linux 命令,或者部署一个 Windows 虚拟机来远程办公,都可以在 NAS 上实现。

以群晖为例,打开「Virtual Machine Manager」套件,点击「虚拟机」->「创建」,选择 ISO 镜像(可以在网上下载 Ubuntu Server 的 ISO),分配 CPU 核心数和内存大小,然后设置虚拟硬盘容量(建议 20GB 以上)。创建完成后,启动虚拟机,按照提示完成系统安装。

如果你对命令行不熟悉,可以装一个带图形界面的 Ubuntu Desktop,远程桌面连接上去操作。下面是安装完成后,配置静态 IP 的示例命令:

sudo nano /etc/netplan/01-netcfg.yaml

将文件内容修改为:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

保存后执行 sudo netplan apply 使配置生效。这样,你的虚拟机就有一个固定 IP 了,以后访问它就不用担心 IP 变化。

用 Docker 部署应用:以 Home Assistant 为例

虚拟机虽然灵活,但比较耗资源。对于大多数应用场景,Docker 容器是更轻量的选择。以智能家居控制中心 Home Assistant 为例,我们来看看如何在 NAS 上快速部署。

在群晖的「Container Manager」(旧版叫 Docker)套件中,点击「注册表」,搜索 homeassistant/home-assistant,下载最新版镜像。然后点击「映像」->「启动」,在设置中映射端口(默认 8123),并添加一个文件夹映射用于存放配置数据,比如 /volume1/docker/homeassistant

启动后,打开 http://你的NASIP:8123,就能看到 Home Assistant 的初始化界面了。如果你是威联通,操作类似,只是套件名是「Container Station」。

如果你想用命令行方式部署,SSH 登录 NAS 后,执行以下命令:

docker run -d \
  --name homeassistant \
  --restart=unless-stopped \
  -e TZ=Asia/Shanghai \
  -v /volume1/docker/homeassistant:/config \
  -p 8123:8123 \
  ghcr.io/home-assistant/home-assistant:stable

这样,你的 NAS 就变成一个智能家居中枢了。类似的,你可以用 Docker 部署 Nextcloud(私有云盘)、Jellyfin(媒体服务器)、Grafana(监控面板)等,都是几分钟的事。

用 Docker Compose 管理多容器应用

当你部署的容器越来越多,手动管理就变得麻烦。这时候,Docker Compose 能帮你用一份 YAML 文件定义所有服务,一键启动和停止。

比如,你想搭建一个个人博客(WordPress + MySQL),在 NAS 上新建一个文件夹 /volume1/docker/blog,在里面创建 docker-compose.yml 文件:

version: '3.8'

services:
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: mysecretpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppassword
    volumes:
      - ./db_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    restart: always
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppassword
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp_data:/var/www/html

然后在 SSH 终端中进入该目录,执行 docker-compose up -d,系统就会自动拉取镜像并启动两个容器。访问 http://你的NASIP:8080,就能开始安装 WordPress 了。

注意,群晖的 Container Manager 也支持项目(Project)功能,你可以直接粘贴上面的 YAML 内容,图形化操作,效果一样。

进阶玩法:组建内网穿透与远程访问

家庭实验室搭建好了,但你在外面怎么访问呢?NAS 自带 QuickConnect 或 myQNAPcloud 可以解决一部分需求,但如果你想访问的是虚拟机里的某个服务,就需要配置端口转发或使用内网穿透工具。

推荐使用 Tailscale,它基于 WireGuard 协议,配置简单且免费。在 NAS 上安装 Tailscale 套件(群晖和威联通都有),登录你的账号,然后在手机、笔记本上也安装 Tailscale 客户端,登录同一个账号。这样,不管你在哪里,都能通过 Tailscale 分配的虚拟 IP 直接访问 NAS 上的所有服务,就像在局域网一样。

例如,你的 NAS 在 Tailscale 中的 IP 是 100.101.102.103,那么你可以在外面直接访问 http://100.101.102.103:8123 来打开 Home Assistant,而无需暴露任何公网端口,安全又方便。

总结

把 NAS 变成家庭实验室并不复杂,关键在于迈出第一步:装一个虚拟机,跑一个容器,再试试 Docker Compose。你会发现,NAS 不仅仅是存储工具,它还是一个 24 小时不关机的迷你服务器,能承载你的各种折腾想法。从智能家居到个人博客,从学习 Linux 到搭建监控系统,只要你有兴趣,它就能帮你实现。现在,不妨打开你的 NAS 管理界面,开始你的第一个实验吧。

💬 评论区
发表评论

暂无评论,来说两句吧