Thanks to visit codestin.com
Credit goes to github.com

Skip to content

ncasaux/home-lab

Repository files navigation

🧪 Nicolas's Home Lab

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.

Purpose

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!

Architecture

My home lab is composed of 4 logical components:

  1. The "Home Gateway": to manage "critical" services like DNS, reverse proxy and certificates renewal.
  2. The "Home Cluster": to manage all other services like Home Assistant.
  3. The "Home NAS": to have a local network storage.
  4. The "Home Runner": to run GitHub Actions locally.
architecture-beta
  group homecluster[Home Cluster]
  group homegateway[Home Gateway]
  group homenas[Home NAS]
  group homerunner[Home Runner]

  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]
  service rpicm4(server)[4 x Raspberry Pi CM4] in homecluster
  service rpi3(server)[Raspberry Pi 3] in homerunner
  service rpi5(server)[Raspberry Pi 5] in homenas

  junction junctionCenter

  internet:R -- L:modem
  modem:R -- L:udm
  udm:R -- L:rpi4
  rpi4:R -- L:junctionCenter
  junctionCenter:R -- L:rpi3
  junctionCenter:T -- B:tpi2
  junctionCenter:B -- T:rpi5
  rpicm4:B -- T:tpi2
Loading

Therefore, there are 4 Ansible roles to manage them.

Repository layout

├─📝 inventory.yml        # Ansible inventory file
├─📝 home-gateway.yml     # Playbook for the home gateway
├─📝 home-cluster.yml     # Playbook for the home cluster
├─📝 home-nas.yml         # Playbook for the home NAS
├─📝 home-runner.yml      # Playbook for the home runner
├─📝 renovate.json        # Renovate configuration file
└─📁 roles                # Ansible roles
  ├─📁 home_gateway       # Role for the home gateway
  ├─📁 home_cluster       # Role for the home cluster
  ├─📁 home_nas           # Role for the home NAS
  ├─📁 home_runner        # Role for the home runner
  ├─📁 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

Home Gateway

Hardware

Raspberry Pi 4 Model B Rev 1.2 with:

Software

Home Cluster

Hardware

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
  • Mini PCIE to NVME Adapter
  • Western Digital-WD SN530 M.2 2230 SSD 256 Go NVMe PCIe Gen3 x4

Software

Home NAS

Hardware

Raspberry Pi 5 Model B Rev 1.0 8Gb with:

Software

Home Runner

Hardware

Raspberry Pi 3 Model B Plus Rev 1.3 with:

Software