(重新)构建终极家庭实验室NUC集群 - 第一部分
概述
我之前写过很多关于构建脆弱环境来实验攻击路径、学习工具和技术工作原理以及如何修复的内容。我也讨论过过去构建的不同攻击和工具;然而,我长期在单机上运行实验室。最近,我投入时间使用Proxmox创建了一个NUC集群;这个多部分博客系列将探讨连接主机、安装Proxmox以及设置各种选项和工具的不同阶段。
硬件配置
在深入配置之前,有必要重点介绍这里使用的硬件。我为此构建选择了Hades Canyon Intel NUC,纯粹因为我喜欢其外形规格和能够指定这些以实现性能与便携性的良好平衡。
每个NUC的规格如下:
- 4核i7 8705G - 8个超线程核心 - 适合虚拟化和性能
- 64GB RAM - 升级足够便宜并可最大化RAM
- 4TB SSD(2x2TB) - 通常每个SSD约110-125英镑
- 内置4GB Radeon RX Vega M GL(在此构建中未使用)
Proxmox安装
准备工作
- 准备可启动USB密钥,下载Proxmox ISO和使用诸如’rufus’的工具
- 建议在启动USB安装程序时连接以太网电缆
- 暂时跳过Thunderbolt连接
安装步骤
- 从创建的USB启动并设置Proxmox
- 同意条款和条件
- 设置密码和管理IP的IP范围
- 选择国家、键盘和常规设置
- 选择enp86s0作为管理接口
- 为每个节点设置名称(我使用pveX,其中X=节点编号)
- 为管理网络设置固定IPv4地址
- 设置外部DNS服务器和网关
- 按照默认设置分区,除非你想要更高级的配置
Proxmox配置
更新存储库
通过SSH终端,我们需要调整sources.list文件以使用无订阅存储库更新apt:
1
2
3
4
5
6
7
8
9
|
deb http://ftp.debian.org/debian bookworm main contrib
deb http://ftp.debian.org/debian bookworm-updates main contrib
# Proxmox VE pve-no-subscription存储库由proxmox.com提供
# 不推荐用于生产环境
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
# 安全更新
deb http://security.debian.org/debian-security bookworm-security main contrib
|
调整LVM卷大小
1
2
3
|
lvremove /dev/pve/data
lvresize -l +100%FREE /dev/pve/root
resize2fs /dev/mapper/pve-root
|
集群配置(可选)
如果你有多个主机,可以按照详细指南配置Thunderbolt网络跨集群。一旦构建完成,你将拥有一个具有共享资源的高可用性集群。
Docker VM主机设置
Ubuntu服务器安装
- 下载Ubuntu ISO到Proxmox主机
- 安装Ubuntu,确保选择安装OpenSSH和Docker包
Docker安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 添加Docker的官方GPG密钥:
sudo apt-get update
sudo apt-get install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 将存储库添加到Apt源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
|
Docker应用部署
Portainer
1
2
3
4
5
6
7
|
docker run -d --name=portainer \
-p 8000:8000 \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume1/docker/portainer:/data \
--restart=always \
portainer/portainer-ce
|
Watchtower
1
2
3
4
|
docker run -d --name=watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
containrrr/watchtower --cleanup
|
Homarr
1
2
3
4
5
6
7
8
9
|
docker run -d --name=homarr \
-p 80:4755 \
-v /volume1/docker/homarr:/app/data/configs \
-v /volume1/docker/homarr/icons:/app/public/icons \
-v /volume1/docker/homarr/data:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Europe/London \
--restart always \
ghcr.io/ajnart/homarr:latest
|
节点功能分配
- PVE01 = Docker主机,包含各种镜像,包括Gitea、AdGuard、Portainer、Jenkins等工具
- PVE02 = http://Ludus.cloud
- PVE03 = 带有Plex的媒体堆栈
下一步
在本系列的第一部分结束时,请继续关注第二部分,我们将深入设置Ludus、安装SCCM和AD实验室,并探索如何在集群中的各个节点之间分配工作负载。在第三部分中,我们将专注于使用Plex、Overseerr和其他好东西构建家庭媒体堆栈。