As featured on YouTube and in my private DevOps community.
Frequent updates with in-depth explanations are posted here:
You can also ask me questions directly when you join this community. I'm happy to mentor you on your homelab journey!
This repo contains all of the configuration and documentation of my homelab.
The purpose of my homelab is to learn and to have fun. Being a Cloud Native Engineer by trade, I work with Kubernetes every day, and my homelab is the place where I can try out and learn new things. On the other hand, by self-hosting some applications, it makes me feel responsible for the entire process of deploying and maintaining an application from A to Z. It forces me to think about backup strategies, security, scalability and the ease of deployment and maintenance.
I use Talos Linux to set up my machines. I prefer Talos because it is lightweight and minimal, and provides production grade security right out of the box. After running plain Talos for over a year, I switched to using Sidero Omni to manage my Talos clusters. Omni allows me to freely add nodes and destroy them, scaling my clusters as desired.
I am currently testing out a new architecture of single-node clusters where the workloads are scheduled on the control plane. A wise man taught me the phrase "no in-place upgrades", and I desire to move in that direction. Instead of one big cluster, I'm now running several. Omni makes this extremely easy.
Number | Name | Description |
---|---|---|
1 | Jotunheim | Contains all end-user applications. Stateless, fully provisioned from code. Can be torn down and spun up within minutes on different hardware. |
2 | Data | Contains all my databases & state. Multi-node. Can be fully restored from Blob storage. |
3 | Moria | Private cluster provisioned from private repository. |
I use a combination of HP ELITEDESK mini pc's, old laptops and sometimes a few virtual machines. The mini PC's are great because they are small and cheap to buy when you get them refurbished from a reseller.
HP ELITEDESK 800 G2 MINI i5-6400T/16GB/240GB SSD
HP ELITEDESK 800 G2 MINI i3-6100T/8GB/240GB SSD
HP ELITEDESK 800 G2 MINI i3-6100T/8GB/240GB SSD
HP ELITEDESK 800 G2 MINI i3-6100T/8GB/240GB SSD
Lenovo ThinkPad T430 i5 8GB RAM
End User Applications
Logo | Name | Description |
---|---|---|
Commafeed | Bloat free RSS feed reader | |
Homepage | My customized portal to my homelab & internet | |
n8n | Secure, AI-native workflow automation | |
Wallabag | Save articles & posts from the web for storage & reading later |
I store data about myself in self-hosted Postgres databases.
A combination of n8n workflows & APIs I coded myself are used.
Logo | Name | Description |
---|---|---|
Body Metrics | Storing Oura & other data to Postgres | |
Health API | An API to sync Apple Health data to my personal database | |
Home IoT | Logs MQTT messages from sensors to databases |
Everything needed to run my cluster & deploy my applications
Logo | Name | Description |
---|---|---|
Cert Manager | X.509 certificate management for Kubernetes. | |
Cilium | My CNI of choice, used on all clusters. eBPF-based Networking, Observability, Security | |
Cloudflare Zero Trust | Used for private tunnels to expose public services (without requiring a public IP). | |
CloudNativePG | Database operator for running PostgreSQL clusters | |
External DNS | Synchronizes exposed Kubernetes Services and Ingresses with DNS providers. | |
External Secrets Operator | Used to sync my secrets from Azure Key Vaults to my cluster | |
Flux CD | My GitOps solution of choice. Better than Argo. | |
Grafana | The open observability platform. | |
Prometheus | An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach. | |
Renovate | Automated dependency updates. | |
Synology CSI Driver | Used to provision Persistent Volumes directly on my Synology |
Do you feel inspired by this project, but don't know where to start?
I created the only Kubernetes homelab course on the internet and helped hundreds of people start their homelab journey.
To get access to the course, go here:
Watch this video:
I use a Unifi Express Router, configured with 7 different VLANs which are all locked down by strict traffic rules.
I use Cilium as my CNI. I use LoadBalancer IPAM to assign IP addresses to my LoadBalancer services and use Cilium as an ingress controller. This way, I don't need to install and maintain a seperate ingress controller like Traefik, which I used in the past.
I use a Synology DS224+ as a NAS. I use the Synology CSI driver to provision Persistent Volumes from my clusters directly on the NAS. I also have an NFS share for data that needs to be shared between clusters.
Azure Key Vaults are used to store my secrets. I sync them to my cluster using the External Secrets Operator.