Installing on Harvester - homestead-lab/homestead GitHub Wiki
Harvester is an operating system for a small cluster of servers: it installs from a USB stick, and gives you Kubernetes, Longhorn storage and KubeVirt virtual machines already wired together. Homestead supports it as an integrated HCI alternative.
For home self-hosting, k3s is preferred and is the most widely tested platform with Homestead. Choose Harvester when you want its integrated operating system or already run it; k3s also supports VMs and replicated storage with KubeVirt and Longhorn.
This guide goes from bare machines to Homestead running. Allow an hour for the first host.
| Minimum | Better | |
|---|---|---|
| Hosts | 1 | 3 - Harvester keeps running, and your volumes keep a copy, when one fails |
| CPU | 8 cores, x86-64 with virtualisation (VT-x / AMD-V) on | 16 cores |
| Memory | 32 GB | 64 GB - Harvester itself uses around 10 GB per host |
| Install disk | 250 GB SSD | 500 GB NVMe; spinning disks are too slow for Longhorn |
| Network | 1 Gb/s | 10 Gb/s between hosts, since storage copies travel over it |
Check Harvester's own requirements for the release you install; they change a little between releases.
Also have ready, on your home network:
- An address for each host - static, or a DHCP reservation on your router.
- One address for the cluster (Harvester calls it the VIP). Harvester's dashboard answers on it, whichever host is up.
-
A few addresses for Homestead and your apps, outside your router's DHCP
range. Homestead needs one; each app you publish on its own address takes
another. Keeping, say,
.240-.250free for this is plenty.
- Download the ISO from Harvester's releases - the newest release not marked pre-release.
- Write it to a USB stick. On Windows use Rufus and choose DD image mode when asked; elsewhere, balenaEtcher. A server with a BMC (iDRAC, iLO, IPMI) can mount the ISO as virtual media instead.
- Boot the machine from it and choose Create a new Harvester cluster.
- Work through the screens:
- Installation disk - the SSD Harvester lives on. Its free space also holds volumes unless you give Longhorn other disks later.
-
Hostname - short and lower-case, e.g.
harvester-node1. - Management network - the network card on your LAN, a static address for this host, your gateway and DNS server.
- VIP - the cluster address from step 1, static.
- Cluster token - any long secret. Write it down: every other host needs it to join.
-
Password - for the
rancheruser, used for SSH to this host. - NTP servers - keep the defaults unless your network blocks them.
- Confirm, and wait. The machine reboots, then shows a console screen that turns to Ready after 10-20 minutes.
- Open
https://<VIP>in a browser, accept the self-signed certificate, and set the dashboard's admin password.
Boot each further machine from the same USB stick and choose Join an existing Harvester cluster, giving the VIP and the cluster token. The first three hosts all become management hosts, so the cluster survives any one of them failing.
Once Homestead is running, Cluster → Add a host walks through this for the exact release your cluster runs - the ISO link, where to find the token, and the next free hostname - and shows the host arriving.
You need kubectl once, to install Homestead. Two ways:
-
On a host.
ssh rancher@<host-address>, thensudo -i.kubectlis already set up for root on every Harvester host. -
On your own computer. In Harvester's dashboard, Support → Download
KubeConfig, then point
kubectlat it:export KUBECONFIG=~/Downloads/local.yaml(PowerShell:$env:KUBECONFIG = "$HOME\Downloads\local.yaml"). Use this way for Helm.
Check it works:
kubectl get nodes
kubectl get storageclassThe storage class list shows harvester-longhorn (default); Homestead's data
goes there.
The easiest way: on a management host (step 4, first way), as root, run
curl -sfL https://raw.githubusercontent.com/homestead-lab/homestead/main/scripts/install.sh | sudo shIt sees that this is Harvester, checks the host reaches the cluster and
GitHub's registry, and asks two things: Homestead's address (one from your free
range) and the storage class for its data (harvester-longhorn is the usual
one). The installation summary shows the settings and the Homestead version -
the newest release, or one chosen from the list - then it installs, waits for
Homestead to start, and prints its address.
By hand instead: pick an address from your free range - 192.0.2.242 below; use your own.
From a host (step 4, first way), one line fetches the manifest, gives it your
address and Harvester's storage class, and applies it:
curl -sfL https://raw.githubusercontent.com/homestead-lab/homestead/main/deploy/deploy.yaml | sed -e 's/192\.0\.2\.242/192.0.2.242/g' -e 's/longhorn-r2/harvester-longhorn/g' -e 's/accessModes: \[ReadWriteMany\]/accessModes: [ReadWriteOnce]/' | kubectl apply -f -Change the second 192.0.2.242 to your address. Or, with Helm on your own
computer:
helm install homestead oci://ghcr.io/homestead-lab/charts/homestead -n homestead --create-namespace --set service.loadBalancerIP=192.0.2.242Either way, watch it start (the manifest installs into lab, the Helm chart
into homestead):
kubectl -n lab rollout status deployment/homestead --timeout=5mThen open http://192.0.2.242:8088 and create the first administrator.
Installing Homestead explains every choice here and
what to do next.
Why ReadWriteOnce? Harvester's default class is migratable, made so VM disks can move between hosts. A shared (ReadWriteMany) volume on it can still only be mounted by one host. That is fine for one copy of Homestead; to run two or three copies later, Settings → Homestead → Copies moves Homestead's data to a shareable class for you.
- Keep addresses for apps. Networking → Workload VIPs → + Add VIP, and add the free range from step 1. Harvester has nothing that hands out addresses to apps on its own; Homestead gives them out from this list. See Networking.
- Give Longhorn your other disks. Each node's card on Nodes lists disks nothing uses yet, with Add to Longhorn. See Storage.
- Check drive health. Homestead installs the node probe automatically with either the Helm chart or manifest. See Dashboard and nodes.
- Plan backups. Data protection sets up snapshots and backups in one go.
Harvester runs kube-vip for load-balanced addresses. Do not add MetalLB to a Harvester cluster - two load balancers answering for the same addresses fight.