# 构建 Homelab

个人而言,Homelab 的构建可能是从大学时代开始,甚至更早。硬件从单机到现今拥有两个机柜,软件也从简单的 Hyper-V 到现今的 HashiCorp 全家桶 + K8S,可以说 Homelab 的设施见证了我 CV 小白开始一路至今。

最近一次基础设施架构的更新是在 4、5 年之前,一路更新至今,架构逐渐混乱,所以最近决定重新整理整套系统,供大家参考

需要说明的是:本系列写作目的更多是为了备忘,并不会赘述细节和排错指南。而且从头开始就会用上 Terraform、K8S 等设施,性质上更接近私有云而非 "Homelab",所以十分不适合初学者甚至并不适合大部分 Homelab 玩家,反倒是对中小公司的基础设施体系建设更具参考价值。

# 项目

  • 💥 Bigbang (opens new window) IaaC 项目,包含了我从零开始到构建所有必要设施的全部代码。
  • 🌟 Planetarian (opens new window) 个人的 Shell 工具集,依赖上述基础设施,提供了十分有用的命令工具。同时 planetarian 也是本系列基础设施架构体系的名字,之后的很多东西你都会看到我用这个名字命名。

# 基本目标

本系列的基本目标是尽可能自动化、安全、可重建地架设所有设施,合理降低成本,并尽可能方便使用。

主力工具是 Terraform。冷启动部分需要的一些数据,我使用了 1Password 和 Keybase 来管理。

大部分设施都会暴露在公网上,方便各种形式的访问,本系列也会严肃处理各处的安全问题。

# 基础设施

域名: 域名请选择可备案域名(列表见:中国互联网域名体系 (opens new window)),尽量在你使用的云服务商处购买,方便备案操作。

网络: 本地网络方面,请务必使用具备动态公网IP的网络服务,没有动态公网IP的话,会在成本和可靠性的抉择上浪费大量的心力。

网络设备: 路由器选了 Mikrotik 的硬件设备,因为功能完备、可玩性高,如果有超多路接入,则建议使用高主频的 x86 Mikrotik 软路由。

云: 云上的部分我选了阿里云,其实对于尽可能自动化的目标而言,AWS 是最好的选择,但 AWS CN 的备案接入体系过于脑瘫、而且价格昂贵。

虚拟化: 本地设备的虚拟化,出于对 Terraform 集成的考量选了 ESXI + VCenter。

# 基本服务

# 1. 云上

这部分服务部署在公有云上来保障随时可用,避免家庭带宽和电力不稳、或者自建设施的硬件损坏造成严重问题。

同时这部分作为稳定服务、避免部署其他服务或执行运维操作时发生循环依赖。

Vault: 存储各类密钥、证书、密码、AccessKey 等信息,方便自动化构建等。

KeyCloak:作为 SSO,方便统一入口登录大量服务。

# 2. 本地基础设施

ESXI、VCenter

# 3. VM:代理

Proxy:众所周知

# 4. MinIO

MinIO:为后面的服务提供对象存储支持,如果你的 MinIO 是虚拟机部署的,可以考虑放在下面的 Develop K3S 上

# 5. Develop K3S

软件基础设施部署在独立的机器上

K3S:在 Linux 虚拟机上部署 K8S 服务,为接下来的自动化部署提供基础设施

Gitlab:代码仓库,Docker 镜像仓库,Terraform State 仓库

Verdaccio:NPM 包仓库(该项目设计混乱,没强需求建议跳过)

Verdaccio:NPM 镜像

distribution/distribution:Docker 镜像 Mirror

outsideris/citizen:Terraform Module 和 Registry 私有仓库(Gitlab 自带的 Terraform Module 构建逻辑跟 TF State、Docker、Package 不一致,容易引发混乱)

apt-cacher-ng:APT 缓存,加速内网设备 APT 相关操作速度