homelab init
Finally got round to initializing my homelab!
It is a 4-node cluster, consisting of 1 control plane and 3 workers.
Chosen Hardware
All 4 nodes are HP EliteDesk 800 G2 Mini PC’s.
Picked them up really cheap from eBay.
Chosen Software
I opted for ubuntu-server-24.04 LTS running k3s.
The initial OS choice was easy as I have a few years experience with ubuntu server at my current employer.
I have installed a few minimal playground k3s clusters before on ubuntu-server VM’s, so again I thought I would stick to what I know and use k3s.
Installation
I used k3s-ansible to bootstrap the cluster.
There are many community playbooks for installing a k3s cluster, but I generally prefer getting as close to the maintainers of the parent tool (i.e k3s-io) as I can.
It is likely k3s-io will reliably maintain their own playbook, rather than relying on a community maintained playbook.
I opted for the repository installation rather than through ansible-galaxy as to not add a dependency tied to my host ansible-controller.
Should the need arise, I can keep my inventory-sample.yaml in source control and simply re-bootstrap using the same method.
If I find myself having to re-bootstrap often, I may bring in
k3s-ansibleas agit submodule.
As this is just the initial bootstrap, these are the only things that changed in my inventory-sample.yaml:
hosts- set to the IP addresses of my nodesansible_user- changed fromdebianto the primary user on my nodesk3s_version- I set this to the latest release at the time of installation v1.33.1+k3s1ansible_become_pass- To handle passwordless SSH access from myansible-ontrollerto the nodes, I usedssh-copy-idand thisansible_become_passtoken- Not usingVagrantso commented this var outcluster_context- set the name of the context tohomelab
Next Steps
I have big plans for this cluster, including devpods, deploying common self-hosted apps such as linkding and commafeed, and to create an environment that allows me to deploy my own .NET apps and expose them securely to the internet.
More details on these milestones can be found in the repo README.md.
I will be posting here at every milestone, and granular progress can be followed in the repo - homelab.