Homelab
Prefer your own hardware? After the Foundations, build a small data centre at home and practise the same skills on-prem instead of in the cloud.
Coming soon
The series
Work through these in order. Each step builds on the last.
1Your lab
-
Plan your hardware
An old PC or a second-hand mini PC is enough to start. Aim for plenty of RAM and an SSD, and keep power use in mind.
-
Install Proxmox
Turn your machine into a hypervisor, then create your first virtual machines from the web interface.
-
Home network setup
Static IPs, DNS names and a simple layout, so your VMs are easy to find and reach.
2Automate
-
Create VMs with Terraform
Define your Proxmox VMs as code, so you can rebuild your lab in minutes.
Terraform Proxmox provider (bpg/proxmox) Go deeper: Terraform path →
-
Configure them with Ansible
Install packages, users and services on every VM with one playbook instead of by hand.
-
Run your own CI runner
Connect a self-hosted GitHub Actions runner in your lab, so your workflows can build and deploy to machines on your home network.
Add a self-hosted GitHub Actions runner GitHub Actions quickstart
3Containers
-
Run a Kubernetes cluster
Run a lightweight Kubernetes cluster with k3s and deploy a real three-tier app to it.
Project 04: Deploy a three-tier app on Kubernetes k3s Kubernetes Basics tutorial Go deeper: Kubernetes path →
-
Deploy automatically from CI
Ship your app to the cluster on every merge to main, using GitHub Actions and your self-hosted runner.
Project 05: Ship a web app to Kubernetes with GitHub Actions Helm docs Using secrets in GitHub Actions
4Operate
-
Observability with Prometheus and Grafana
Collect metrics from every machine, build dashboards and get alerts when something needs attention.
Projects
- Project 04
Deploy a three-tier app on Kubernetes
Run a frontend, an API and a database on Kubernetes, connect them with Services, and expose the app through an Ingress.
- Project 05
Ship a web app to Kubernetes with GitHub Actions
Take a small web app from a GitHub repo to your homelab's Kubernetes cluster, deployed automatically on every merge by a self-hosted runner.
Resources
Free
- Linux Journey
Short, friendly lessons on the Linux command line, made for beginners.
- The Linux Command Line (book)
A free, complete book on the terminal. Dip into chapters as you need them.
- Learn Git Branching
Interactive, visual Git practice in the browser. The best way to understand branches.
- Pro Git (book)
The free official Git book. Read chapters 2 and 3 first.
- Terraform Proxmox provider (bpg/proxmox)
The community Terraform provider for creating Proxmox VMs from code.
- Ansible: Getting started
The official introduction: inventories, playbooks and your first automation.
- GitHub Actions quickstart
Official guide to your first workflow: run jobs automatically on every push.
- Add a self-hosted GitHub Actions runner
Run GitHub Actions jobs on a machine in your own homelab.
- Proxmox VE documentation
The official admin guide. Start with installation and creating your first VM.
- Docker: Get started
Official introduction to images and containers.
- k3s
Lightweight Kubernetes that runs happily on a small VM.
- Kubernetes Basics tutorial
The official interactive walkthrough of the core objects.
- Helm docs
Official Helm documentation. Start with the Quickstart Guide.
- Prometheus: Overview
What Prometheus is, how it collects metrics, and where it fits.
- Grafana documentation
Official docs for building dashboards and alerts on top of Prometheus.
- Using secrets in GitHub Actions
Store keys and tokens safely so your workflows can deploy without exposing them.