Prerequisites
Fork this repository
Because this project applies GitOps practices, it's the source of truth for my homelab, so you'll need to fork it to make it yours:
Hardware requirements
Initial controller plane
The initial controller plane is the Linux machine used to bootstrap the cluster, we only need it once, you can use your laptop or desktop.
Required tools on the box:
Servers
The servers are the main master/worker nodes of the deployment. Any modern x86_64 computer(s) should work, you can use old PCs, laptops or servers.
The following specifications are the minimum requirements for each node
Component | Minimum | Recommended |
---|---|---|
CPU | 2 cores | 4 cores |
RAM | 8 GB | 16 GB |
Hard drive | 128 GB | 512 GB |
Node count | 3 | 3 or more for high availability |
Additional capabilities:
- Ability to boot from the network (PXE boot)
- Wake-on-LAN capability, used to wake the machines up automatically without physically touching the power button
BIOS settings
This is something you'll have to perform for all of your servers.
For your convenience, I've included a setting-as-yaml of my BIOS settings. You'll need to adjust it to your hardware because your motherboard may have a different name for the options.
Devices:
NetworkSetup:
PXEIPv4: true
PXEIPv6: false
Advanced:
CPUSetup:
VT-d: true
Power:
AutomaticPowerOn:
WoL: Automatic # Use network boot if Wake-on-LAN
Security:
SecureBoot: false
Startup:
CSM: false
Gather information
You may need to gather the following information beforehand for the next step:
- MAC address for each machine (required )
- OS disk name (for example /dev/sda)
- Network interface name (usually, the default should be eth0)
- Arrange the static IP addresses for your machines when they spin up
Sign up for a Cloudflare account
We also use Cloudflare which is a full-featured DNS and web experience optimization solution. For this setup, all we need is a free account.
So let's sign up for a free Cloudflare account.
Domain
Buying a domain is required for public access. Follow the Cloudflare DNS zone setup guide to use Cloudflare as your primary DNS provider.
After forking the repository, update your DNS in the following files:
- global/prod/terragrunt.hcl
- bootstrap/root/values-prod.yaml
- bootstrap/argocd/values-prod.yaml
Tailscale (required for internal access in secure network)
TBD