{"id":22438529,"url":"https://github.com/ncasaux/home-lab","last_synced_at":"2025-08-23T02:07:54.643Z","repository":{"id":266564692,"uuid":"892796803","full_name":"ncasaux/home-lab","owner":"ncasaux","description":"Ansible roles to manage my home-lab.","archived":false,"fork":false,"pushed_at":"2025-01-24T14:05:38.000Z","size":66,"stargazers_count":2,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T15:19:55.118Z","etag":null,"topics":["adguard","ansible","argo-cd","docker","duplicati","grafana","haproxy","helm","home-assistant","k3s","kubernetes","prometheus","raspberry-pi","turing-pi2"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ncasaux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-22T19:51:07.000Z","updated_at":"2024-12-23T20:51:21.000Z","dependencies_parsed_at":"2024-12-23T21:26:06.708Z","dependency_job_id":"1d343474-cbb8-4d7b-a210-cf9d766d0ab6","html_url":"https://github.com/ncasaux/home-lab","commit_stats":null,"previous_names":["ncasaux/home-lab"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncasaux%2Fhome-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncasaux%2Fhome-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncasaux%2Fhome-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncasaux%2Fhome-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ncasaux","download_url":"https://codeload.github.com/ncasaux/home-lab/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236670634,"owners_count":19186491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adguard","ansible","argo-cd","docker","duplicati","grafana","haproxy","helm","home-assistant","k3s","kubernetes","prometheus","raspberry-pi","turing-pi2"],"created_at":"2024-12-06T01:10:27.269Z","updated_at":"2025-08-23T02:07:54.630Z","avatar_url":"https://github.com/ncasaux.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧪 Nicolas's Home Lab\nThis repository contains all the resources I use to maintain my home lab. \nI use my home lab mainly to run Home Assistant, but also to experiment and ultimately to learn about IaC, GitOps, Linux, Docker, Kubernetes, etc...\n\nThe repository is mainly composed of Ansible resources.\n\n## Purpose\nThe 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! 👍\n\nYour comments and suggestions are welcome!\n\n## Architecture\nMy home lab is composed of 4 _logical_ components:\n1. The \"Home Gateway\": to manage \"critical\" services like DNS, reverse proxy and certificates renewal.\n2. The \"Home Cluster\": to manage all other services like Home Assistant.\n3. The \"Home NAS\": to have a local network storage.\n4. The \"Home Runner\": to run GitHub Actions locally.\n\n```mermaid\narchitecture-beta\n  group homecluster[Home Cluster]\n  group homegateway[Home Gateway]\n  group homenas[Home NAS]\n  group homerunner[Home Runner]\n\n  service internet(cloud)[Internet] \n  service modem(internet)[Modem]\n  service udm(internet)[Ubiquity Dream Machine Router]\n  service rpi4(server)[Raspberry Pi 4] in homegateway\n  service tpi2(server)[Turing Pi 2]\n  service rpicm4(server)[4 x Raspberry Pi CM4] in homecluster\n  service rpi3(server)[Raspberry Pi 3] in homerunner\n  service rpi5(server)[Raspberry Pi 5] in homenas\n\n  junction junctionCenter\n\n  internet:R -- L:modem\n  modem:R -- L:udm\n  udm:R -- L:rpi4\n  rpi4:R -- L:junctionCenter\n  junctionCenter:R -- L:rpi3\n  junctionCenter:T -- B:tpi2\n  junctionCenter:B -- T:rpi5\n  rpicm4:B -- T:tpi2\n```\n\nTherefore, there are 4 Ansible roles to manage them.\n\n## Repository layout\n```\n├─📝 inventory.yml        # Ansible inventory file\n├─📝 home-gateway.yml     # Playbook for the home gateway\n├─📝 home-cluster.yml     # Playbook for the home cluster\n├─📝 home-nas.yml         # Playbook for the home NAS\n├─📝 home-runner.yml      # Playbook for the home runner\n├─📝 renovate.json        # Renovate configuration file\n└─📁 roles                # Ansible roles\n  ├─📁 home_gateway       # Role for the home gateway\n  ├─📁 home_cluster       # Role for the home cluster\n  ├─📁 home_nas           # Role for the home NAS\n  ├─📁 home_runner        # Role for the home runner\n  ├─📁 configure_ssh      # Role to configure SSH on control and managed nodes\n  ├─📁 rpi_cgroupmemory   # Role to enable cgroup settings\n  └─📁 rpi_upgrade        # Role to update and upgrade packages\n```\n\n## Home Gateway\n### Hardware\nRaspberry Pi 4 Model B Rev 1.2 with:\n  - [Raspberry PoE+ HAT](https://www.raspberrypi.com/products/poe-plus-hat/)\n  - GeeekPi Aluminum Case for Raspberry Pi 4 with Fan\n\n### Software\n- [AdGuard](https://adguard.com/) for DNS\n- [HAProxy](https://www.haproxy.org/) for reverse proxy\n- [Certbot](https://certbot.eff.org/) for certificates renewal\n- [Prometheus](https://prometheus.io/) for monitoring\n- [Node Exporter](https://github.com/prometheus/node_exporter) for monitoring\n- [cAdvisor](https://github.com/google/cadvisor) for monitoring\n- [Portainer Agent](https://github.com/portainer/agent) for monitoring\n\n## Home Cluster\n### Hardware\n[Turing Pi 2.4](https://turingpi.com/) board with:\n  - 4 Raspberry Pi Compute Module 4, 8 GB RAM, 32 GB eMMC\n  - 4 IBest Aluminum Heatsink\n  - [SilverStone Milo 10 mini ITX Case](https://www.silverstonetek.com/en/product/info/computer-chassis/Milo10/)\n  - Mini PCIE to NVME Adapter\n  - Western Digital-WD SN530 M.2 2230 SSD 256 Go NVMe PCIe Gen3 x4\n\n### Software\n- [K3s](https://k3s.io/) for Kubernetes containers orchestration\n- [Helm](https://helm.sh/) for Kubernetes package management, with [Helm diff Plugin](https://github.com/databus23/helm-diff)\n- [Argo CD](https://argo-cd.readthedocs.io/en/stable/) for continuous delivery\n- [NFS Subdir External Provisioner](https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner) for NFS\n- [Duplicati](https://duplicati.com/) for backups\n- [Home Assistant](https://www.home-assistant.io/) for home automation\n- [Music Assistant](https://www.music-assistant.io/) for music library management\n- [Wyoming Vosk](https://github.com/rhasspy/wyoming-vosk) for speech to text\n- [Wyoming Piper](https://github.com/rhasspy/wyoming-piper) for text to speech\n- [Kube Prometheus Stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) for monitoring\n- [Portainer](https://www.portainer.io/) for monitoring\n\n## Home NAS\n### Hardware\nRaspberry Pi 5 Model B Rev 1.0 8Gb with:\n  - [Waveshare PCIe To M.2 Adapter With PoE Function](https://www.waveshare.com/poe-m.2-hat-plus.htm)\n  - GeeekPi Aluminum Case for Raspberry Pi 5 with Fan\n  - KingSpec 1To M.2 2242 NVMe M.2 PCIe SSD Gen3 x4\n\n### Software\n- [Open Media Vault](https://www.openmediavault.org) for NAS solution\n- [Prometheus](https://prometheus.io/) for monitoring\n- [Node Exporter](https://github.com/prometheus/node_exporter) for monitoring\n\n## Home Runner\n### Hardware\nRaspberry Pi 3 Model B Plus Rev 1.3 with:\n  - [Raspberry Pi 3 Case](https://www.raspberrypi.com/products/raspberry-pi-3-case/)\n\n### Software\n  - [Github Actions Self-hosted runner](https://docs.github.com/en/actions/concepts/runners/self-hosted-runners)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncasaux%2Fhome-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fncasaux%2Fhome-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncasaux%2Fhome-lab/lists"}