{"id":13584068,"url":"https://github.com/tyriis/home-ops","last_synced_at":"2026-03-16T16:08:24.622Z","repository":{"id":36989165,"uuid":"452012446","full_name":"tyriis/home-ops","owner":"tyriis","description":"IaC for my HomeLab kubernetes cluster resources with Flux","archived":false,"fork":false,"pushed_at":"2024-10-29T23:29:11.000Z","size":8757,"stargazers_count":38,"open_issues_count":19,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-29T23:44:02.677Z","etag":null,"topics":["cloudflare","devops","flux","gitops","k8s","k8s-at-home","kubernetes","talos","terraform","traefik"],"latest_commit_sha":null,"homepage":"https://github.com/tyriis/home-ops/blob/main/README.md","language":"Nix","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/tyriis.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":"2022-01-25T19:23:23.000Z","updated_at":"2024-10-29T23:29:14.000Z","dependencies_parsed_at":"2023-12-09T02:25:35.510Z","dependency_job_id":"ca0f59f3-bd32-4827-9f00-6d8ca38d1926","html_url":"https://github.com/tyriis/home-ops","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tyriis%2Fhome-ops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tyriis%2Fhome-ops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tyriis%2Fhome-ops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tyriis%2Fhome-ops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tyriis","download_url":"https://codeload.github.com/tyriis/home-ops/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229711403,"owners_count":18112127,"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":["cloudflare","devops","flux","gitops","k8s","k8s-at-home","kubernetes","talos","terraform","traefik"],"created_at":"2024-08-01T15:03:59.422Z","updated_at":"2026-03-16T16:08:24.617Z","avatar_url":"https://github.com/tyriis.png","language":"Nix","readme":"\u003c!-- markdownlint-disable MD041 --\u003e\n\u003c!-- markdownlint-disable MD033 --\u003e\n\u003c!-- markdownlint-disable MD051 --\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\u003cdiv align=\"center\"\u003e\n\n\u003c!-- [![taskfile][taskfile-shield]][taskfile-url]\n[![pre-commit][pre-commit-shield]][pre-commit-url] --\u003e\n\n[![talos][talos-shield]][talos-url]\n[![kubernetes][kubernetes-shield]][kubernetes-url]\n[![Flux][flux-shield]][flux-url]\n\u003cbr /\u003e\n\n[![renovate][renovate-shield]][renovate-dashboard-url]\n[![Status-Page][gatus-shield]][gatus-url]\n[![commits][commits-shield]][commits-url]\n\n\u003c!-- [![cloudflare][cloudflare-shield]][cloudflare-url] --\u003e\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n  \u003cimg src=\"https://storage.googleapis.com/techtales-public-images/groot-home-ops.png\" alt=\"Logo\" width=\"250\" height=\"250\" style=\"display:block;\"\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n[![Age-Days](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.techtales.io%2Fcluster_age_days\u0026style=flat-square\u0026label=Age)](https://github.com/kashalls/kromgo)\u0026nbsp;\u0026nbsp;\n[![Uptime-Days](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.techtales.io%2Fcluster_uptime_days\u0026style=flat-square\u0026label=Uptime)](https://github.com/kashalls/kromgo)\u0026nbsp;\u0026nbsp;\n[![Node-Count](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.techtales.io%2Fcluster_node_count\u0026style=flat-square\u0026label=Nodes)](https://github.com/kashalls/kromgo)\u0026nbsp;\u0026nbsp;\n[![Pod-Count](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.techtales.io%2Fcluster_pod_count\u0026style=flat-square\u0026label=Pods)](https://github.com/kashalls/kromgo)\u0026nbsp;\u0026nbsp;\n[![CPU-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.techtales.io%2Fcluster_cpu_usage\u0026style=flat-square\u0026label=CPU)](https://github.com/kashalls/kromgo)\u0026nbsp;\u0026nbsp;\n[![Memory-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.techtales.io%2Fcluster_memory_usage\u0026style=flat-square\u0026label=Memory)](https://github.com/kashalls/kromgo)\u0026nbsp;\u0026nbsp;\n[![Alerts](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.techtales.io%2Fcluster_alert_count\u0026style=flat-square\u0026label=Alerts)](https://github.com/kashalls/kromgo)\n\n\u003c/div\u003e\n\n# GitOps my home infra\n\n- 💼 managed with [Flux2][flux-url]\n- 🤖 updated by [RenovateBot][renovate-url]\n- 🔐 secured by [Let's Encrypt][letsencrypt-url] and [Cloudflare Tunnel][cloudflared-url]\n\n\u003cdetails\u003e\n  \u003csummary style=\"font-size:1.2em;\"\u003eTable of Contents\u003c/summary\u003e\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n- [Statistics](#statistics)\n- [About The Project](#about-the-project)\n  - [🧰 Tools and Technologies](#-tools-and-technologies)\n  - [📖 Overview](#-overview)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n- [Usage](#usage)\n  - [Configure SOPS (optional)](#configure-sops-optional)\n  - [Configure kubectl](#configure-kubectl)\n- [Roadmap](#roadmap)\n- [🕵 Troubleshooting](#-troubleshooting)\n  - [Stuck HelmRelease](#stuck-helmrelease)\n- [Quality](#quality)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## Statistics\n\n![Alt](https://repobeats.axiom.co/api/embed/bcccc4d3f022bf36870bd9bcc2397eecaea695c7.svg \"Repobeats analytics image\")\n\n## About The Project\n\n👋 Hello and welcome to my Home Lab GitOps Cluster Configuration!\n\nIn this project, I am thrilled to share with you the automated configuration of my home infrastructure. As an ardent believer in continuous learning, I embrace every opportunity to challenge myself and expand my knowledge horizon.\nThrough this venture, I aim to not only streamline and automate my daily tasks but also encourage collaboration and knowledge sharing within the community.\n\nThis is a private project heavily inspired by the great [k8s-at-home][k8s-at-home-url] community.\n\nLet's take a glimpse into the evolution of this project:\n\n- The Foundation: [flux.home-cluster][flux-home-cluster-url] starting with a first iteration and learn Flux and GitOps principles with some old hardware.\n- The Minimal Redundancy Edition: [flux.pi-k3s.home][flux-pi-k3s-home-url] starting a new project with a Raspberry Pi based GitOps Flux Cluster, with three control planes.\n- The Merge: [flux.k3s.home][flux-k3s-home-url] after a successfull testing phase I merged both projects into one cluster.\n\nBy making my findings and work accessible to all, I strongly believe in the principle that knowledge should be free, empowering individuals to avoid repetitive endeavors and instead focus on new and exciting challenges.\n\nJoin me on this exciting journey as we delve into the realm of Kubernetes and GitOps, uncovering new insights and finding innovative ways to enhance our setups. Let's embrace the spirit of collaboration and empower each other to achieve more.\n\nHappy automating, learning, and exploring!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### 🧰 Tools and Technologies\n\nHere is the list of tools and technologies I am using in this project.\n\n| Tool                              | Role                                                            |\n| --------------------------------- | --------------------------------------------------------------- |\n| [talos][talos-url]                | Linux designed for Kubernetes – secure, immutable, and minimal. |\n| [Flux2][flux-url]                 | Kubernetes GitOps engine                                        |\n| [Cloudflare][cloudflare-homepage] | DNS and tunnels to allow external traffic                       |\n| [RenovateBot][renovate-url]       | Automated dependency updates.                                   |\n| [GitHub][github-url]              | Code Hosting and job runnner                                    |\n| [Backstage][backstage-url]        | Documentation with backstage developer portal                   |\n\n### 📖 Overview\n\n#### Hardware\n\n| Device                 | CPU       | OS    | OS Disk   | Data Disk              | RAM  | Purpose    |\n| ---------------------- | --------- | ----- | --------- | ---------------------- | ---- | ---------- |\n| MS-01                  | i9-13900H | Talos | 1 TB NVMe | 500GB NVMe (rook-ceph) | 96GB | Kubernetes |\n| MS-01                  | i9-13900H | Talos | 1 TB NVMe | 500GB NVMe (rook-ceph) | 96GB | Kubernetes |\n| MS-01                  | i9-13900H | Talos | 1 TB NVMe | 500GB NVMe (rook-ceph) | 96GB | Kubernetes |\n| ASUS NUC 14 Essentials | N250      | Talos | 1 TB NVMe | 2x 500GB SSD           | 16GB | NAS        |\n| AOSTAR WTR Pro         | N100      | Talos | 1 TB NVMe | 2x 8 TB HDD            | 32GB | NAS        |\n| UniFi UDM SE           | -         | -     | 128GB SSD | -                      | -    | Router     |\n| UniFi USW Aggregation  | -         | -     | -         | -                      | -    | Switch     |\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\n### Prerequisites\n\n- mozilla sops\n- age\n- talhelper\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage\n\n### Configure SOPS (optional)\n\nProvide key in path defined in `.envrc`.\n\n### Configure kubectl\n\nJust run\n\n```shell\ntask talos:config\ntask talos:kubeconfig\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ROADMAP --\u003e\n\n## Roadmap\n\n- [ ] Complete README.md\n- [ ] Add Changelog\n- [ ] Add GitHub Pages\n\nSee the [open issues][github-issues] for a full list of proposed features (and known issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- TROUBLESHOOTING --\u003e\n\n## 🕵 Troubleshooting\n\n### Stuck HelmRelease\n\n[discussion](https://github.com/fluxcd/flux2/issues/1878)\n\nexample:\n\n```bash\n➜ flux suspend hr -n networking traefik\n► suspending helmreleases traefik in networking namespace\n✔ helmreleases suspended\n```\n\n```bash\n➜ flux resume hr -n networking traefik\n► resuming helmreleases traefik in networking namespace\n✔ helmreleases resumed\n◎ waiting for HelmRelease reconciliation\n✔ HelmRelease reconciliation completed\n✔ applied revision 10.9.1\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Quality\n\n[![megalinter][megalinter-badge]][megalinter-url]\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n\u003c!-- Links --\u003e\n\n[backstage-url]: https://backstage.spotify.com/\n[cloudflare-homepage]: https://www.cloudflare.com/\n[cloudflared-url]: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/\n[flux-home-cluster-url]: https://github.com/tyriis/flux.home-cluster\n[flux-k3s-home-url]: https://github.com/tyriis/flux.k3s.home\n[flux-pi-k3s-home-url]: https://github.com/tyriis/flux.pi-k3s.home\n[flux-url]: https://fluxcd.io/\n[github-url]: https://github.com\n[github-issues]: https://github.com/tyriis/home-ops/issues\n[k8s-at-home-url]: https://k8s-at-home.com/\n[letsencrypt-url]: https://letsencrypt.org/\n[renovate-dashboard-url]: https://app.renovatebot.com/dashboard#github/tyriis/home-ops\n[megalinter-badge]: https://github.com/tyriis/home-ops/workflows/MegaLinter/badge.svg?branch=main\n[megalinter-url]: https://github.com/tyriis/home-ops/actions/workflows/mega-linter.yaml?query=branch%3Amain\n[gatus-url]: https://status.techtales.io\n\n\u003c!-- Badges --\u003e\n\n[renovate-shield]: https://img.shields.io/badge/renovate-enabled-brightgreen?style=for-the-badge\u0026logo=renovate\n[renovate-url]: https://www.whitesourcesoftware.com/free-developer-tools/renovate/\n[commits-shield]: https://img.shields.io/github/last-commit/tyriis/home-ops?style=for-the-badge\u0026logo=github\n[commits-url]: https://github.com/tyriis/home-ops/commits/main\n[talos-shield]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fkromgo.techtales.io%2Fquery%3Fformat%3Dendpoint%26metric%3Dtalos_version\u0026query=%24.message\u0026style=for-the-badge\u0026logo=talos\u0026label=talos\u0026color=%23ff7300\u0026cacheSeconds=600\n[talos-url]: https://www.talos.dev/\n[kubernetes-shield]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fkromgo.techtales.io%2Fquery%3Fformat%3Dendpoint%26metric%3Dkubernetes_version\u0026query=%24.message\u0026style=for-the-badge\u0026logo=kubernetes\u0026label=kubernetes\u0026color=%23326CE5\u0026cacheSeconds=600\n[kubernetes-url]: https://kubernetes.io/releases/\n[flux-shield]: https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.techtales.io%2Fflux_version\u0026style=for-the-badge\u0026logo=flux\u0026logoColor=326CE5\u0026color=326CE5\u0026label=flux\u0026cacheSeconds=600\n[gatus-shield]: https://img.shields.io/uptimerobot/status/m800769967-13f5c929f419ccdd73096f8a?color=brightgreeen\u0026label=Status\u0026style=for-the-badge\u0026logo=data:image/svg%2bxml;base64,CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHBhdGggZD0iTTE5Mi4xIDM3M2MtNjQuNS0zNS4zLTg4LjItMTE2LjMtNTIuOC0xODAuOCAxMi4zLTIyLjQgMzAuOC00MC45IDUzLjMtNTMuMSA2LjktMy44IDE0LjItNi45IDIxLjctOS40IDU0LjEtMTcuMSA5MS02Ny4xIDkxLjYtMTIzLjhDMzAyLjUuMiAyOTEuMS4yIDI1Ni4yLjJjLTUxLjggMC01Mi41IDEtNTAuMyAxOC40IDYuMSA0Ni4zLTUzLjcgNzEuMy04Mi40IDM0LjItMTEuMS0xNC40LTEyLTE0LjQtNDkuNSAyMy43LTM1LjUgMzUuOS0zNi4xIDM1LjgtMjEuNSA0Ny4xQzY5IDEzNi4zIDc1IDE1OC42IDY3IDE3Ny45Yy04LjMgMTkuMy0yOC42IDMwLjYtNDkuNCAyNy42QzAgMjAzLjQgMCAyMDQgMCAyNThjLjUgNDkuMSAwIDUwLjIgMTguOCA0OC4xIDI1LjItMyA0OC4xIDE1IDUxLjEgNDAuMiAxLjcgMTQuNS0zLjYgMjktMTQuMiAzOS0xNy4xIDE2LjEtMTYuMiAxNC45IDE2LjIgNDguNCAzMSAzMi4xIDM2LjEgMzguNCA0Ni41IDI5LjlsNzUuNS03NS41YzMuOC0zLjQgNC4xLTkuMy43LTEzLjEtLjctLjktMS42LTEuNS0yLjUtMiIgc3R5bGU9ImZpbGw6IzNjYWQ0YiIvPjxwYXRoIGQ9Ik00ODcuMyAyMDYuM2MtMjUuNS0uMi00Ni4xLTIxLjEtNDUuOC00Ni43LjEtMTMuMiA1LjktMjUuNyAxNS44LTM0LjQgMTYuMy0xNC4zIDE2LjEtMTMuNS0yMC4zLTQ5LjktMjQuNi0yNC42LTMyLjYtMzIuOC0zOS4yLTMwLjhMMzE4IDEyNC40Yy0zLjcgMy43LTMuNyA5LjYgMCAxMy4zLjYuNiAxLjMgMS4yIDIuMSAxLjYgNjQuNSAzNS40IDg4LjEgMTE2LjMgNTIuNyAxODAuOC0xMi4zIDIyLjQtMzAuOCA0MC44LTUzLjMgNTMtOS4zIDQuOS0xOSA4LjctMjkuMiAxMS40LTQ4LjcgMTMtODQgNTQuOS04NCAxMDUuNHY3LjJjLjkgMTQuNSA2LjggMTMuOCA0NiAxNC40IDUzLjIuOCA1MS45IDIgNTMuNS0yNi42IDEuNS0yNS41IDIzLjQtNDUgNDguOS00My41IDExLjguNyAyMi45IDUuOSAzMSAxNC41IDE3LjEgMTggMTMuNiAxNy43IDQ5LjgtMTcuOSAzNy40LTM2LjkgMzkuMS0zNS43IDIxLTUyLjEtMTguOS0xNy4yLTIwLjMtNDYuNC0zLjEtNjUuMyA5LjYtMTAuNSAyMy41LTE2LjEgMzcuNy0xNSAyMSAxLjUgMjAgLjMgMjAuNy00Ni4xLjgtNTIuNCAxLjYtNTMtMjQuNS01My4yIiBzdHlsZT0iZmlsbDojMDE3NDAwIi8+PHBhdGggZD0iTTIzNC41IDMzNi43aDQ1LjZjMi40IDAgNC40LTEuOSA0LjQtNC4zdi00NC43YzAtMi40IDEuOS00LjMgNC4zLTQuM2g0NC44YzIuNCAwIDQuNC0yIDQuNC00LjR2LTQ2YzAtMi40LTItNC4zLTQuNC00LjNoLTQ0LjRjLTIuNCAwLTQuNC0xLjktNC40LTQuM3YtNDQuOGMwLTIuNC0xLjktNC40LTQuMy00LjRoLTQ1LjdjLTIuNCAwLTQuNCAxLjktNC40IDQuM3Y0NC44YzAgMi40LTEuOSA0LjQtNC4zIDQuNEgxODFjLTIuNCAwLTQuNCAxLjktNC40IDQuM3Y0NmMwIDIuNCAyIDQuNCA0LjQgNC40aDQ0LjdjMi40IDAgNC40IDEuOSA0LjQgNC4zdjQ0LjljLjEgMi40IDIuMSA0LjIgNC40IDQuMSIgc3R5bGU9ImZpbGw6IzFlOTAyNSIvPjwvc3ZnPg==\n","funding_links":[],"categories":["Nix"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftyriis%2Fhome-ops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftyriis%2Fhome-ops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftyriis%2Fhome-ops/lists"}