{"id":47032541,"url":"https://github.com/mchestr/home-cluster","last_synced_at":"2026-03-12T00:09:50.788Z","repository":{"id":36965707,"uuid":"495690613","full_name":"mchestr/home-cluster","owner":"mchestr","description":"Cat-approved, 100% renewable, GMO-Free HomeLab k8s cluster managed via Flux2 \u0026 Renovate","archived":false,"fork":false,"pushed_at":"2026-03-05T16:26:44.000Z","size":20372,"stargazers_count":155,"open_issues_count":17,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-05T17:53:37.791Z","etag":null,"topics":["gitops","kubernetes","kubesearch","mise","renovate","selfhosted","talos","taskfile","terraform"],"latest_commit_sha":null,"homepage":"http://docs.chestr.dev/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mchestr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-24T06:05:39.000Z","updated_at":"2026-03-05T12:23:26.000Z","dependencies_parsed_at":"2023-10-16T16:43:12.529Z","dependency_job_id":"899eb339-1131-4840-b013-446fec73e065","html_url":"https://github.com/mchestr/home-cluster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mchestr/home-cluster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchestr%2Fhome-cluster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchestr%2Fhome-cluster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchestr%2Fhome-cluster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchestr%2Fhome-cluster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mchestr","download_url":"https://codeload.github.com/mchestr/home-cluster/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchestr%2Fhome-cluster/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30408016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T22:36:59.286Z","status":"ssl_error","status_checked_at":"2026-03-11T22:36:57.544Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["gitops","kubernetes","kubesearch","mise","renovate","selfhosted","talos","taskfile","terraform"],"created_at":"2026-03-12T00:09:46.980Z","updated_at":"2026-03-12T00:09:50.780Z","avatar_url":"https://github.com/mchestr.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg width=\"144px\" height=\"144px\" src=\"https://raw.githubusercontent.com/mchestr/home-cluster/main/docs/src/assets/logo.png\"/\u003e\n\n## My Home Kubernetes Cluster \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/2604_fe0f/512.gif\" alt=\"☄\" width=\"32\" height=\"32\"\u003e\n\n... managed with Flux and Renovate \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f916/512.gif\" alt=\"🤖\" width=\"16\" height=\"16\"\u003e\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Talos](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Ftalos_version\u0026style=for-the-badge\u0026logo=talos\u0026logoColor=white\u0026color=blue)](https://talos.dev  \"Talos OS\")\u0026nbsp;\u0026nbsp;\n[![Kubernetes](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fkubernetes_version\u0026style=for-the-badge\u0026logo=kubernetes\u0026logoColor=white\u0026color=blue\u0026label=k8s)](https://kubernetes.io)\u0026nbsp;\u0026nbsp;\n[![Flux](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fflux_version\u0026style=for-the-badge\u0026logo=flux\u0026logoColor=white\u0026color=blue\u0026label=Flux)](https://fluxcd.io)\u0026nbsp;\u0026nbsp;\n\n\u003c/div\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n\n![Home Internet](https://img.shields.io/uptimerobot/status/m798880352-36f58d31f3a556ce80abd5ce?style=for-the-badge\u0026logo=ubiquiti\u0026logoColor=white\u0026label=Home%20Internet)\u0026nbsp;\u0026nbsp;\n[![Status Page](https://img.shields.io/endpoint?url=https%3A%2F%2Fhealthchecks.io%2Fbadge%2F47d5c08e-21a9-41f1-b7fd-48092e%2FpXy582uA-2.shields\u0026style=for-the-badge\u0026logo=statuspage\u0026logoColor=white\u0026label=Status%20Page)](https://status.chestr.dev)\u0026nbsp;\u0026nbsp;\n[![Alertmanager](https://img.shields.io/endpoint?url=https%3A%2F%2Fhealthchecks.io%2Fb%2F2%2Fd1cd3b92-cf69-4144-b5f2-9d044e983cff.shields\u0026style=for-the-badge\u0026logo=prometheus\u0026logoColor=white\u0026label=Alertmanager)](https://status.chestr.dev)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Age-Days](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_age_days\u0026style=flat-square\u0026label=Age)](https://github.com/kashalls/kromgo/)\u0026nbsp;\n[![Uptime-Days](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_uptime_days\u0026style=flat-square\u0026label=Uptime)](https://github.com/kashalls/kromgo/)\u0026nbsp;\n[![Node-Count](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_node_count\u0026style=flat-square\u0026label=Nodes)](https://github.com/kashalls/kromgo/)\u0026nbsp;\n[![Pod-Count](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_pod_count\u0026style=flat-square\u0026label=Pods)](https://github.com/kashalls/kromgo/)\u0026nbsp;\n[![CPU-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_cpu_usage\u0026style=flat-square\u0026label=CPU)](https://github.com/kashalls/kromgo/)\u0026nbsp;\n[![Memory-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_memory_usage\u0026style=flat-square\u0026label=Memory)](https://github.com/kashalls/kromgo/)\u0026nbsp;\n[![Power-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_power_usage\u0026style=flat-square\u0026label=Power)](https://github.com/kashalls/kromgo/)\u0026nbsp;\n[![Alerts](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.chestr.dev%2Fcluster_alert_count\u0026style=flat-square\u0026label=Alerts)](https://github.com/kashalls/kromgo)\n\n\u003c/div\u003e\n\n\u003c/div\u003e\n\n## Overview\n\nThis repository is my home Kubernetes cluster in a declarative state. [Flux](https://github.com/fluxcd/flux2) watches the [kubernetes](./kubernetes/) folder and will make the changes to the cluster based on the YAML manifests.\n\n### \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f4a1/512.gif\" alt=\"💡\" width=\"16\" height=\"16\"\u003e Core Components\n\nCore components that form the foundation of the cluster:\n\n- [backube/volsync](https://github.com/backube/volsync) and [backube/snapscheduler](https://github.com/backube/snapscheduler): Backup and recovery of persistent volume claims.\n- [cilium/cilium](https://github.com/cilium/cilium): Kubernetes CNI.\n- [envoyproxy/envoy](https://github.com/envoyproxy/gateway): Kubernetes-based application gateway using [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/).\n- [external-secrets/external-secrets](https://github.com/external-secrets/external-secrets): Managed Kubernetes secrets using [1Password Connect](https://github.com/1Password/connect).\n- [jetstack/cert-manager](https://cert-manager.io/docs/): Creates SSL certificates for services in my Kubernetes cluster.\n- [kubernetes-sigs/external-dns](https://github.com/kubernetes-sigs/external-dns): Automatically manages DNS records from my cluster in CloudFlare.\n- [rancher/system-upgrade-controller](https://github.com/rancher/system-upgrade-controller): Handles Kubernetes and Talos upgrades automatically.\n- [rook/rook](https://github.com/rook/rook): Distributed block storage for persistent storage.\n- [siderolabs/talos](https://www.talos.dev/): The Kubernetes Operating System.\n\n### \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f6a8/512.gif\" alt=\"🚨\" width=\"16\" height=\"16\"\u003e Observability\n\nFor observability and monitoring of the cluster the following software is used:\n\n- [fluent/fluent-bit](https://github.com/fluent/fluent-bit): Log processor.\n- [grafana/grafana](https://github.com/grafana/grafana): Data visualization platform.\n- [prometheus/alertmanager](https://github.com/prometheus/alertmanager): Handles processing and sending alerts.\n- [pushover](https://pushover.net): Handles receiving alerts on my devices.\n- [TwiN/gatus](https://github.com/TwiN/gatus): High level status dashboard.\n- [VictoriaMetrics/VictoriaLogs](https://docs.victoriametrics.com/victorialogs/): Database for logs.\n- [prometheus/prometheus](https://github.com/prometheus/prometheus): Time series database for metrics.\n\n### \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f916/512.gif\" alt=\"🤖\" width=\"16\" height=\"16\"\u003e Automation\n\n- [Github Actions](https://docs.github.com/en/actions) for checking code formatting and running periodic jobs\n- [Renovate](https://github.com/renovatebot/renovate) keeps the application charts and container images up-to-date\n\n### \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f32a_fe0f/512.gif\" alt=\"🌪\" width=\"16\" height=\"16\"\u003e Cloud Dependencies\n\n- [1Password](https://1password.com) for managing secrets via external-secrets.\n- [AWS SES](https://aws.amazon.com/ses/) for sending emails.\n- [Cloudflare](https://cloudflare.com) tunnels for exposing services \u0026 creating certificates \u0026 managing domains.\n- [Cloudflare R2](https://www.cloudflare.com/developer-platform/r2/) for daily backups.\n- [Pushover](https://pushover.net/) for sending alerts.\n\nTotal cloud costs yearly is approximately ~$150/year.\n\n### \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f35d/512.gif\" alt=\"🍝\" width=\"16\" height=\"16\"\u003e Directories\n\nThis Git repository contains the following directories.\n\n```sh\n📁 bootstrap       # Flux installation to bootstrap cluster\n📁 docs            # Docs\n📁 hacks           # Contains random scripts\n📁 kubernetes      # Kubernetes cluster defined as code\n├─📁 flux          # Main Flux configuration of repository\n├─📁 components    # Flux components\n└─📁 apps          # Apps deployed into my cluster grouped by namespace\n📁 talos           # Contains the configuration for Talos operating system\n📁 terraform       # Contains Cloudflare terraform\n```\n\n\n## \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/2699_fe0f/512.gif\" alt=\"⚙\" width=\"16\" height=\"16\"\u003e Hardware\n\n\u003cdetails\u003e\n  \u003csummary\u003eCheckout my rack\u003c/summary\u003e\n\n  \u003cimg src=\"https://raw.githubusercontent.com/mchestr/home-cluster/main/docs/src/assets/myrack.jpg\" align=\"center\" alt=\"rack\" height=\"900px\"/\u003e\n\u003c/details\u003e\n\n\n| Device                                                | Count | OS Disk Size  | Data Disk Size       | Ram     | Operating System | Purpose           |\n|-------------------------------------------------------|-------|---------------|----------------------|---------|------------------|-------------------|\n| UDM-Pro-Max                                           | 1     | -             | -                    | -       | UniFi             | Router            |\n| USW-Pro-Aggregation                                   | 1     | -             | -                    | -       | UniFi             | Switch            |\n| USW-Pro-Max-24-PoE                                    | 1     | -             | -                    | -       | UniFi             | Switch            |\n| UAP-AC-Lite                                           | 1     | -             | -                    | -       | UniFi             | WiFi AP           |\n| ER-10X                                                | 1     | -             | -                    | -       | EdgeOS           | Switch            |\n| PiKVM V4 Mini                                         | 1     | -             | -                    | -       | PiKVM            | KVM               |\n| TESmart HDMI KVM Switch 8 Ports                       | 1     | -             | -                    | -       | -                | KVM Switch        |\n| CyberPower CP1500PFCRM2U                              | 1     | -             | -                    |         | -                | UPS               |\n| USP-PDU-Pro                                           | 1     | -             | -                    | -       | UniFi             | PDU               |\n| Synology DS920+                                       | 1     | -             | 2x8TB \u0026 2x16TB       | 20GB    | DSM              | NAS               |\n| MS-01 i9-13900H                                       | 3     | 1TB           | 2TB                  | 96GB    | Talos            | Control Plane     |\n\n---\n\n## \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/1f64f/512.gif\" alt=\"🙏\" width=\"16\" height=\"16\"\u003e Graditude and Thanks\n\nThanks to all the people who donate their time to the [Kubernetes @Home](https://github.com/k8s-at-home/) community.\n\nThis repository was built off the [onedr0p/template-cluster-k3s](https://github.com/onedr0p/flux-cluster-template) repository.\n\n## \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/2728/512.gif\" alt=\"✨\" width=\"16\" height=\"16\"\u003e Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=mchestr/home-cluster\u0026type=Date)](https://star-history.com/#mchestr/home-cluster\u0026Date)\n\n## \u003cimg src=\"https://fonts.gstatic.com/s/e/notoemoji/latest/270f_fe0f/512.gif\" alt=\"✏\" width=\"16\" height=\"16\"\u003e License\n\nSee [LICENSE](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmchestr%2Fhome-cluster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmchestr%2Fhome-cluster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmchestr%2Fhome-cluster/lists"}