{"id":16114957,"url":"https://github.com/simbleau/home-ops","last_synced_at":"2025-06-14T03:07:09.273Z","repository":{"id":41988155,"uuid":"481089490","full_name":"simbleau/home-ops","owner":"simbleau","description":"A mono repository for my home infrastructure and K3S kubernetes cluster. Managed with Ansible, Flux, Renovate, and GitHub Actions, with adherence to Infrastructure as Code (IaC) and GitOps practices.","archived":false,"fork":false,"pushed_at":"2023-09-09T20:22:17.000Z","size":263,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T14:49:24.121Z","etag":null,"topics":["helm","helm-charts","k8s-at-home","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simbleau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE-APACHE","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},"funding":{"github":["simbleau"],"custom":["buymeacoffee.com/simbleau"]}},"created_at":"2022-04-13T05:54:05.000Z","updated_at":"2024-01-12T18:29:22.000Z","dependencies_parsed_at":"2024-10-27T17:40:12.258Z","dependency_job_id":null,"html_url":"https://github.com/simbleau/home-ops","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/simbleau/home-ops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simbleau%2Fhome-ops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simbleau%2Fhome-ops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simbleau%2Fhome-ops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simbleau%2Fhome-ops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simbleau","download_url":"https://codeload.github.com/simbleau/home-ops/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simbleau%2Fhome-ops/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259752078,"owners_count":22905972,"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":["helm","helm-charts","k8s-at-home","kubernetes"],"created_at":"2024-10-09T20:16:46.445Z","updated_at":"2025-06-14T03:07:09.252Z","avatar_url":"https://github.com/simbleau.png","language":"Shell","readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://simpleicons.org/icons/homeassistant.svg\" width=\"144px\" height=\"144px\"/\u003e\n\n# Home Ops\n\u003c/div\u003e\n\n---\n\n## 📖 Overview\nThis is a mono repository for my home infrastructure and Kubernetes cluster. I try to adhere to Infrastructure as Code (IaC) and GitOps practices using tools like [__Ansible__](https://www.ansible.com/), [__Terraform__](https://www.terraform.io/), [__Kubernetes__](https://kubernetes.io/), [__Flux__](https://fluxcd.io/), [__Renovate__](https://renovatebot.com/) and [__GitHub Actions__](https://github.com/features/actions). Secrets are protected with modern [__Age__](https://github.com/FiloSottile/age) encryption.\n\n### 💰 _Every tool used is open source or used freely._\n\n---\n\n## 📁 Directories\n\n- [__`cluster`__](./cluster/): directory contains my Kubernetes configuration and artifacts, managed by Flux.\n- [__`provision`__](./provision/): directory contains my Ansible playbooks and roles for provisioning my home infrastructure.\n\n---\n\n## ⛵ Kubernetes\nI run a fully conformant Kubernetes cluster at home with K3S, provisioned overtop bare-metal Ubuntu 22.04 using Ansible. This is a semi hyperconverged cluster (HCI), with workloads and block storage sharing the same available resources from a centralized RAID 5 storage.\n\n---\n\n## 🏁 Provisioning\nCurrently, I automate the provisioning of the following systems at home:\n- [__My Ubuntu workstation__](./provision/workstation/)\n- [__My MacOS workstation__](./provision/workstation/)\n- [__My K3S Kubernetes cluster__](./provision/k3s/)\n\n📙 _[__Click here__](./provision/README.md) to see my Ansible playbooks and roles for provisioning my home infrastructure._\n\n---\n\n## 🌐 Dynamic DNS\nOver WAN, I have forwarded ports `80` and `443` from my router. I use [Cloudflare](https://www.cloudflare.com/) as a proxy to hide my home WAN IP. I use [cddns](https://github.com/simbleau/cddns) as my Dynamic DNS.\n\n---\n\n## 🤖 GitOps\n- [__Flux__](https://fluxcd.io/) watches my [`cluster`](./cluster/) folder and makes the changes to my cluster automatically, based on the YAML manifests.\n- [__Renovate__](https://renovatebot.com/) watches the repository for dependency updates, and automatically generates PRs for them. Automerging is allowed.\n- [__GitHub Actions__](https://github.com/features/actions) validates and tests push and merge requests for conflicts.\n\n---\n\n## 🔧 Hardware\n| Device                      | Amt | OS Disk  | Data Disk    | RAM   | OS           | Purpose           |\n| --------------------------- | --- | -------- | ------------ | ----- | ------------ | ----------------- |\n| ARRIS Surfboard SB6183      | 1   | N/A      | N/A          | 256MB | N/A          | Modem             |\n| Linksys AC1900              | 1   | N/A      | N/A          | 500MB | OpenWrt      | Router, DHCP      |\n| HP ProDesk 600 G3 Mini      | 1   | 120GB SD | N/A          | 4GB   | Ubuntu 22.04 | Kubernetes Master |\n| Raspberry Pi 4B 2GB         | 4   | 32GB  SD | N/A          | 2GB   | Ubuntu 22.04 | Kubernetes Worker |\n| Raspberry Pi 3 Model B+     | 1   | 32GB  SD | N/A          | 1GB   | Ubuntu 22.04 | Kubernetes Worker |\n| AC Infinity CLOUDPLATE T1-N | 1   | N/A      | N/A          | N/A   | N/A          | Air Cooling       |\n| Kingston SATA 3 2.5\" SSD    | 4   | N/A      | 240 GB       | N/A   | N/A          | SATA 3 SSD        |\n| QNAP TR-004 4 Bay DAS       | 1   | N/A      | 720 GB RAID5 | N/A   | N/A          | RAID 5 DAS        |\n| ADJ Products PC-100A PDU    | 1   | N/A      | N/A          | N/A   | N/A          | PDU               |\n\n---\n\n## 🔏 License\nThis project is dual-licensed under both [Apache 2.0](LICENSE-APACHE) and [MIT](LICENSE-MIT) licenses.\n","funding_links":["https://github.com/sponsors/simbleau","buymeacoffee.com/simbleau"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimbleau%2Fhome-ops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimbleau%2Fhome-ops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimbleau%2Fhome-ops/lists"}