My first homelab instinct was predictable: I need to buy a Raspberry Pi.
Then I remembered the HP ZBook Studio G8 sitting unused nearby. It has an Intel processor, plenty of memory and considerably more power than I need for an initial Kubernetes control plane. Buying another computer before using the one I already owned seemed backwards.
So the ZBook got a new job.
Starting clean with Ubuntu Server
I downloaded the Ubuntu Server image, wrote it to a bootable USB drive and installed it directly onto the ZBook's internal storage. I used neither virtual machines nor a desktop environment.
During the installation, I created my regular user account and gave the machine the hostname:
lab-node-01
That name is intentionally functional. This machine will become the first node in the lab rather than remaining "that old laptop under the desk."
I enabled the OpenSSH server and connected the ZBook to the network over Ethernet. Kubernetes can run over Wi-Fi, but a wired connection removes an unnecessary source of latency and instability from the lab.
A shorter SSH command
I didn't want to remember an IP address or type a full username and hostname every time I connected.
From my everyday computer, I copied my existing SSH public key to the server:
ssh-copy-id joshz@192.168.x.x
I then created an entry in my local SSH configuration:
Host zbook
HostName 192.168.x.x
User joshz
IdentityFile ~/.ssh/id_ed25519
That reduced the entire connection process to:
ssh zbook
I'll be connecting to this server often. An alias saves me looking up the address each time I want to do a quick check.
At this point, the first layer of the lab was complete:
- A physical HP ZBook Studio G8 running Ubuntu Server
- A wired network connection
- A stable hostname
- Key-based SSH access through the
zbookalias
I stopped here before installing Kubernetes. Ubuntu was running on the physical machine, and I could administer it over SSH without reaching for the laptop itself.
Next was K3s. One character in the install command would take more investigation than I expected.