This repository contains all the resources I use to maintain my home lab. I use my home lab mainly to run Home Assistant, but also to experiment and ultimately to learn about IaC, GitOps, Linux, Docker, Kubernetes, etc...
The repository is mainly composed of Ansible resources.
The purpose of this repository is simply to share how I manage my home lab. If it helps anyone to achieve similar goal, then the objective is reached! 👍
Your comments and suggestions are welcome!
My home lab is composed of 2 logical components:
- The "Home Gateway": to manage "critical" services like DNS, reverse proxy and certificates renewal.
- The "Home Cluster": to manage all other services like Home Assistant.
architecture-beta
group homecluster[Home Cluster]
group homegateway[Home Gateway]
service internet(cloud)[Internet]
service modem(internet)[Modem]
service udm(internet)[Ubiquity Dream Machine Router]
service rpi4(server)[Raspberry Pi 4] in homegateway
service tpi2(server)[Turing Pi 2] in homecluster
service rpi3(server)[Raspberry Pi 3] in homecluster
junction junctionCenter
internet:R -- L:modem
modem:R -- L:udm
udm:R -- L:rpi4
rpi4:R -- L:junctionCenter
junctionCenter:R -- L:rpi3
junctionCenter:T -- L:tpi2
Therefore, there are 2 Ansible roles to manage them.
├─📝 inventory.yml # Ansible inventory file
├─📝 home-gateway.yml # Playbook for the home gateway
├─📝 home-cluster.yml # Playbook for the home cluster
├─📝 renovate.json # Renovate configuration file
└─📁 roles # Ansible roles
├─📁 home_gateway # Role for the home gateway
├─📁 home_cluster # Role for the home cluster
├─📁 configure_ssh # Role to configure SSH on control and managed nodes
├─📁 rpi_cgroupmemory # Role to enable cgroup settings
└─📁 rpi_upgrade # Role to update and upgrade packages
Raspberry Pi 4 Model B Rev 1.2 with:
- PoE+ HAT
- GeeekPi Aluminum Case with Fan
- AdGuard for DNS
- HAProxy for reverse proxy
- Certbot for certificates renewal
- Prometheus for monitoring
- Node Exporter for monitoring
- cAdvisor for monitoring
- Portainer Agent for monitoring
-
Turing Pi 2.4 board with:
- 4 Raspberry Pi Compute Module 4, 8 GB RAM, 32 GB eMMC
- 4 IBest Aluminum Heatsink
- SilverStone Milo 10 mini ITX Case
- Western Digital-WD SN530 M.2 2230 SSD 256 Go NVMe PCIe Gen3 x4
- Mini PCIE to NVME Adapter
-
Raspberry Pi 3 Model B Plus Rev 1.3 with:
- Raspberry Pi 3 Case
- Anker PowerConf S330 Speakerphone
- K3s for Kubernetes containers orchestration
- Helm for Kubernetes package management, with Helm diff Plugin
- Argo CD for continuous delivery
- NFS Subdir External Provisioner for NFS
- Duplicati for backups
- Home Assistant for home automation
- Wyoming Vosk for speech to text
- Wyoming Piper for text to speech
- Wyoming Porcupine1 for wake word detection
- Wyoming Satellite for voice assistant
- Kube Prometheus Stack for monitoring
- Portainer for monitoring