From Shelfware to Server

December 11, 2025

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 zbook alias

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.