Get Started

Turn three old laptops into a Kubernetes cluster

The same system that runs most of the cloud, on the laptops in your drawer. Join them into one k3s cluster, serve an app with a real hostname and storage copied across three machines, then pull the power on one laptop and watch your app move itself. Each battery is a built-in UPS, and the whole thing runs for about the cost of a light bulb.

210 minAdvancedTools: Free with laptops you own. Optional cables, switch and SSDs around £30 to £80. Power around £70 a year for threeStep 1 free
A three-node k3s cluster (Kubernetes v1.36) on old laptops, controlled with kubectl from your own PC
Apps served by hostname through the built-in Traefik ingress, spread across machines
Longhorn storage that keeps three copies of every volume, so an app's data survives a dead laptop
  • Uptime Kuma running on the cluster, plus remote access from anywhere over Tailscale
  • A kit: node prep script, ready-to-apply manifests, a kubectl cheatsheet and a parts and power calculator
Before you start
  • Three laptops from roughly the last ten years, 64-bit, ideally 8GB RAM and an SSD each (the main one needs at least 2 cores and 2GB). Two works; three is what makes storage survive a failure
  • A USB stick (8GB+) for the Ubuntu installer, and Ethernet to your router for each laptop (USB adapters around £15)
  • Container basics: Docker without fear. Linux and SSH comfort: Terminal survival kit
  • Back up anything you want from the laptops first: the install wipes them
01/07Plan the cluster0 done
STEP 01 of 07~15 min

Plan the cluster

Know what each laptop does, what Kubernetes gives you, and what it costs to run.

  1. What you're buildingKubernetes treats several computers as one. You tell it "run three copies of this app, give it 2GB of storage, serve it at this hostname", and it decides which laptop runs what. When a laptop dies, it notices within a minute or so and starts the work again elsewhere. k3s ↗ is a complete, certified Kubernetes in a single small binary, built for exactly this kind of hardware. It ships with Traefik (routes web traffic by hostname), ServiceLB (gives services a real IP on your network), local-path storage, CoreDNS and metrics-server.

  2. RolesOne laptop is the server (runs the control plane and the cluster database, and still runs apps too). The others are agents (they just run apps). Give the server role to the laptop with the most RAM and an SSD. k3s's minimums are 2 cores and 2GB for a server, 1 core and 512MB for an agent; Longhorn storage (step 5) recommends 4 cores and 4GB per node and SSDs.

    • k3s-1: server, e.g. a 2017 ThinkPad with 16GB and an SSD
    • k3s-2, k3s-3: agents, anything 64-bit with 8GB
  3. NetworkWired beats Wi-Fi every time for a cluster: Wi-Fi drops cause nodes to flap between ready and not ready. Put the laptops on a cheap gigabit switch next to your router. In your router, give each laptop a DHCP reservation so its IP never changes. This mission uses 192.168.1.50, .51 and .52: use yours.

  4. PowerAn old laptop idles at roughly 6 to 15 watts with the screen off. At 10W each, three laptops use about 263kWh a year, about £69 at the Ofgem price cap average of 26.32p per kWh ↗. Measure yours with a smart plug and put it in the parts and power calculator.

    CarefulOld laptop batteries can swell. If a laptop's case bulges, the trackpad lifts or the battery looks puffy, remove the battery (or retire the laptop) before running it 24/7. Run them on a hard surface with the vents clear, not stacked on top of each other.
  5. Download the kit: prep-node.sh, whoami.yaml, uptime-kuma.yaml, the kubectl cheatsheet and the parts and power calculator.

✓
CheckpointYou've picked a server laptop, reserved three IPs in your router, and cabled the laptops to the switch.
If it breaksOne of my laptops is 32-bit only + 1 more
One of my laptops is 32-bit only
k3s supports x86_64, arm64 and armhf, not 32-bit x86. Leave that one out, or use a Raspberry Pi 4 or 5 as the third node: mixed architectures work as long as the images you run have builds for both (most popular ones do).
My router can't reserve IPs
Set a static IP in Ubuntu's installer instead (step 2), outside the router's DHCP range so nothing else gets it.
Still stuck? Ask the community
Next mission · Advanced buildsText people with no phone signal: build your own LoRa mesh
→