捡一台千元价位的 Homelab

Travis2023/09/30
1115 字, 阅读需要 6 分钟

最近发了工资,有一天晚上突发奇想,想组一台专属于自己的 Homelab,要求很简单:

  1. 能当 nas 用
  2. 能方便的虚拟化,以供实验
  3. 方便扩展
  4. 除了存储设备之外,价格在 1000 元内

综上要求,我在淘宝和闲鱼上挑选了两个小时,选出了如下配置。

类别名称价格
主板 + CPU精粤 x99M PLUS D3 + E5 2666V3408
散热闲鱼买的利民45
内存三星 DDR3 1600 16Gx268
亮机卡GT-610-520 1G31
网线8m + 1m29.79
网卡淘宝随便挑的单网口15.98
交换机TP-LINK TL-SG1008D 八口交换机55
SSDpm581 512G149
电源安钛克 VP450P75
机箱实验室里没人要的破旧主机0
合计880.77
avatar
后来发现在实验室里还有很多破旧配件(下次再来😂)

我本来的想法是既然捡垃圾,那么就一丐到底,平心而论,这套配置的版 U、电源、散热都有再进一步压缩的空间。 在 CPU 的选择上,选择主频低一些,但是核心数更多的 E5 2673v3 可能更能满足我的需求。下次定能吸收本次教训!

另外,为了满足虚拟化的需要,并为了规避每次都要重新配置网络的尴尬,我在这台机器上装上了 PVE,虚拟了几台 Arch 和一台 openWrt,同时我也将家中的 2011 Mac Mini 拿来也充当了一个物理机。

折腾完这些之后,为了外网访问的方便,其中一台 Arch 充当堡垒机,使用 rathole 将 ssh 的端口暴露在我的 vps 上。 现在我的一些个人小项目都可以通过 vscode 的 remote-ssh 插件连接到这台服务器上编写。好处就是可以更加轻松的多端同步,性能也远比公有云强,硬件和软件都完全在我的掌控之中。

信息

rathole 是用 Rust 编写的类似于 frp 和 ngrok 的软件。可以让 NAT 后的设备上的服务通过具有公网 IP 的服务器暴露在公网上

之后我准备再逐步扩充这台机器的可玩性,比如部署一些 CI/CD 服务,虚拟化一些虚拟机,测试 Kubernetes 调度性能,这里按下不表。

avatar
室友:能给我整一台吗,反正空着也是空着
avatar
为了安利室友也整一台垃圾玩玩,给他也虚拟了一台低资源的机器,他现在天天写点自己的小项目玩的不亦乐乎。(我也成了云服务商,一对一服务不要钱的那种😂)

k3s

k8s 是集群的操作系统,可以将好多台计算机抽象成一个统一的控制平面。 这里我在 wrt 后面配置了三台虚拟机用于跑 k8s,具体实现则使用了 k3s 进行部署和管理。k3s 默认配置了 Local Path Provisioner 的 PVC 方案和 Traefik Ingress Controller,说人话就是持久化和网络服务方面都不用自己操心了。

另外,我将集群的 80/443 端口穿到了外面的和校园网直接互通的端口上。更好的做法其实是使用像 Tailscale 或者 ZeroTier 这样的 vpn,把集群的机器加入虚拟的局域网中,安全方便。 之后再考虑考虑吧。

pve 虚拟机拓扑图
pve 虚拟机拓扑图

服务的部署上,我使用了 ArgoCD,践行 GitOps,通过 git 仓库中的声明性文件来定义服务。

而在 dns 的分发上,我做的比较邪道,由于我所有的机器的梯子用的都是我自定义的 clash 文件,所以我在 clash 的 host 选项中定义了域名和 ip 地址解析。

参考

软件

链接介绍
homelabkhuedoan 的自用 homelab 软硬件介绍
HomeLab 玩法简单分享玩法简介,其中也介绍了一些常用软件
HomeLab 搭建记录

网络

链接介绍
内网该用什么域名AD 域名
SSL Certificates on a private/local domain介绍了如何为内网申请到 ssl 证书
猴子都能看懂的内网 ssl 教程
基于 PVE 的新网络架构
© LICENSED UNDER CC BY-NC-SA 4.0