{"id":13495911,"url":"https://github.com/khuedoan/homelab","last_synced_at":"2025-05-12T13:31:35.914Z","repository":{"id":37707936,"uuid":"273913340","full_name":"khuedoan/homelab","owner":"khuedoan","description":"Fully automated homelab from empty disk to running services with a single command.","archived":false,"fork":false,"pushed_at":"2025-03-29T03:55:04.000Z","size":1452,"stargazers_count":8548,"open_issues_count":14,"forks_count":800,"subscribers_count":84,"default_branch":"master","last_synced_at":"2025-04-23T17:08:38.657Z","etag":null,"topics":["ansible","argocd","devops","docker","fedora","gitops","helm","home-operations","homelab","k3s","k8s-at-home","kubernetes","netboot","pxe","self-hosting","terraform"],"latest_commit_sha":null,"homepage":"https://homelab.khuedoan.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khuedoan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null},"funding":{"github":["khuedoan"],"ko_fi":"khuedoan","liberapay":"khuedoan","custom":["https://paypal.me/khuedoan"]}},"created_at":"2020-06-21T13:48:40.000Z","updated_at":"2025-04-22T02:45:20.000Z","dependencies_parsed_at":"2023-02-14T16:16:09.467Z","dependency_job_id":"dc5fa86d-75e5-45a8-a191-4dc0020711a4","html_url":"https://github.com/khuedoan/homelab","commit_stats":{"total_commits":1643,"total_committers":19,"mean_commits":86.47368421052632,"dds":0.36457699330493,"last_synced_commit":"d98c1a164f3508d84202fdd0fdbcd345dafa6abd"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khuedoan%2Fhomelab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khuedoan%2Fhomelab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khuedoan%2Fhomelab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khuedoan%2Fhomelab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khuedoan","download_url":"https://codeload.github.com/khuedoan/homelab/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253747750,"owners_count":21957799,"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":["ansible","argocd","devops","docker","fedora","gitops","helm","home-operations","homelab","k3s","k8s-at-home","kubernetes","netboot","pxe","self-hosting","terraform"],"created_at":"2024-07-31T19:01:39.595Z","updated_at":"2025-05-12T13:31:35.851Z","avatar_url":"https://github.com/khuedoan.png","language":"Python","funding_links":["https://github.com/sponsors/khuedoan","https://ko-fi.com/khuedoan","https://liberapay.com/khuedoan","https://paypal.me/khuedoan"],"categories":["Python","Go","ansible","terraform","self-hosting"],"sub_categories":["dev"],"readme":"# Khue's Homelab\n\n**[Features](#features) • [Get Started](#get-started) • [Documentation](https://homelab.khuedoan.com)**\n\n[![tag](https://img.shields.io/github/v/tag/khuedoan/homelab?style=flat-square\u0026logo=semver\u0026logoColor=white)](https://github.com/khuedoan/homelab/tags)\n[![document](https://img.shields.io/website?label=document\u0026logo=gitbook\u0026logoColor=white\u0026style=flat-square\u0026url=https%3A%2F%2Fhomelab.khuedoan.com)](https://homelab.khuedoan.com)\n[![license](https://img.shields.io/github/license/khuedoan/homelab?style=flat-square\u0026logo=gnu\u0026logoColor=white)](https://www.gnu.org/licenses/gpl-3.0.html)\n[![stars](https://img.shields.io/github/stars/khuedoan/homelab?logo=github\u0026logoColor=white\u0026color=gold\u0026style=flat-square)](https://github.com/khuedoan/homelab)\n\nThis project utilizes [Infrastructure as Code](https://en.wikipedia.org/wiki/Infrastructure_as_code) and [GitOps](https://www.weave.works/technologies/gitops) to automate provisioning, operating, and updating self-hosted services in my homelab.\nIt can be used as a highly customizable framework to build your own homelab.\n\n\u003e **What is a homelab?**\n\u003e\n\u003e Homelab is a laboratory at home where you can self-host, experiment with new technologies, practice for certifications, and so on.\n\u003e For more information, please see the [r/homelab introduction](https://www.reddit.com/r/homelab/wiki/introduction) and the\n\u003e [Home Operations Discord community](https://discord.gg/home-operations) (formerly known as [k8s-at-home](https://k8s-at-home.com)).\n\nIf you encounter an issue, please create [a bug report](https://github.com/khuedoan/homelab/issues/new?template=bug_report.md)\n(avoid asking for support about issues specific to this project in other communication channels).\n\n## Overview\n\nProject status: **ALPHA**\n\nThis project is still in the experimental stage, and I don't use anything critical on it.\nExpect breaking changes that may require a complete redeployment.\nA proper upgrade path is planned for the stable release.\nMore information can be found in [the roadmap](#roadmap) below.\n\n### Hardware\n\n![Hardware](https://user-images.githubusercontent.com/27996771/98970963-25137200-2543-11eb-8f2d-f9a2d45756ef.JPG)\n\n- 4 × NEC SFF `PC-MK26ECZDR` (Japanese version of the ThinkCentre M700):\n    - CPU: `Intel Core i5-6600T @ 2.70GHz`\n    - RAM: `16GB`\n    - SSD: `128GB`\n- TP-Link `TL-SG108` switch:\n    - Ports: `8`\n    - Speed: `1000Mbps`\n\n### Features\n\n- [x] Common applications: Gitea, Jellyfin, Paperless...\n- [x] Automated bare metal provisioning with PXE boot\n- [x] Automated Kubernetes installation and management\n- [x] Installing and managing applications using GitOps\n- [x] Automatic rolling upgrade for OS and Kubernetes\n- [x] Automatically update apps (with approval)\n- [x] Modular architecture, easy to add or remove features/components\n- [x] Automated certificate management\n- [x] Automatically update DNS records for exposed services\n- [x] VPN (Tailscale or Wireguard)\n- [x] Expose services to the internet securely with [Cloudflare Tunnel](https://www.cloudflare.com/products/tunnel/)\n- [x] CI/CD platform\n- [x] Private container registry\n- [x] Distributed storage\n- [x] Support multiple environments (dev, prod)\n- [x] Monitoring and alerting\n- [x] Automated backup and restore\n- [x] Single sign-on\n- [x] Infrastructure testing\n\nSome demo videos and screenshots are shown here.\nThey can't capture all the project's features, but they are sufficient to get a concept of it.\n\n| Demo                                                                                                            |\n| :--:                                                                                                            |\n| [![][deploy-demo]](https://asciinema.org/a/xkBRkwC6e9RAzVuMDXH3nGHp7)                                           |\n| Deploy with a single command (after updating the configuration files)                                           |\n| [![][pxe-demo]](https://www.youtube.com/watch?v=y-d7btNNAT8)                                                    |\n| PXE boot                                                                                                        |\n| [![][hubble-demo]][hubble-demo]                                                                                 |\n| Observe network traffic with Hubble, built on top of [Cilium](https://cilium.io) and eBPF                       |\n| [![][homepage-demo]][homepage-demo]                                                                             |\n| Homepage powered by... [Homepage](https://gethomepage.dev)                                                      |\n| [![][grafana-demo]][grafana-demo]                                                                               |\n| Monitoring dashboard powered by [Grafana](https://grafana.com)                                                  |\n| [![][gitea-demo]][gitea-demo]                                                                                   |\n| Git server powered by [Gitea](https://gitea.io/en-us)                                                           |\n| [![][matrix-demo]][matrix-demo]                                                                                 |\n| [Matrix](https://matrix.org/) chat server                                                                       |\n| [![][woodpecker-demo]][woodpecker-demo]                                                                         |\n| Continuous integration with [Woodpecker CI](https://woodpecker-ci.org)                                          |\n| [![][argocd-demo]][argocd-demo]                                                                                 |\n| Continuous deployment with [ArgoCD](https://argoproj.github.io/cd)                                              |\n| [![][alert-demo]][alert-demo]                                                                                   |\n| [ntfy](https://ntfy.sh) displaying received alerts                                                              |\n| [![][ai-demo]][ai-demo]                                                                                         |\n| Self-hosted AI powered by [Ollama](https://ollama.com) (experimental, not very fast because I don't have a GPU) |\n\n[deploy-demo]: https://asciinema.org/a/xkBRkwC6e9RAzVuMDXH3nGHp7.svg\n[pxe-demo]: https://user-images.githubusercontent.com/27996771/157303477-df2e7410-8f02-4648-a86c-71e6b7e89e35.png\n[hubble-demo]: https://github.com/khuedoan/homelab/assets/27996771/9c6677d0-3564-47c0-852b-24b6a554b4a3\n[homepage-demo]: https://github.com/khuedoan/homelab/assets/27996771/d0eaf620-be08-48d8-8420-40bcaa86093b\n[grafana-demo]: https://github.com/khuedoan/homelab/assets/27996771/ad937b26-e9bc-4761-83ae-1c7f512ea97f\n[gitea-demo]: https://github.com/khuedoan/homelab/assets/27996771/c245534f-88d9-4565-bde8-b39f60ccee9e\n[matrix-demo]: https://user-images.githubusercontent.com/27996771/149448510-7163310c-2049-4ccd-901d-f11f605bfc32.png\n[woodpecker-demo]: https://github.com/khuedoan/homelab/assets/27996771/5d887688-d20a-44c8-8f77-0c625527dfe4\n[argocd-demo]: https://github.com/khuedoan/homelab/assets/27996771/527e2529-4fe1-4664-ab8a-b9eb3c492d20\n[alert-demo]: https://github.com/khuedoan/homelab/assets/27996771/c922f755-e911-4ca0-9d4a-6e552d387f18\n[ai-demo]: https://github.com/khuedoan/homelab/assets/27996771/d77ba511-00b7-47c3-9032-55679a099e70\n\n### Tech stack\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003cth\u003eLogo\u003c/th\u003e\n        \u003cth\u003eName\u003c/th\u003e\n        \u003cth\u003eDescription\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://simpleicons.org/icons/ansible.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://www.ansible.com\"\u003eAnsible\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eAutomate bare metal provisioning and configuration\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/30269780\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://argoproj.github.io/cd\"\u003eArgoCD\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eGitOps tool built to deploy applications to Kubernetes\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://github.com/jetstack/cert-manager/raw/master/logo/logo.png\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://cert-manager.io\"\u003ecert-manager\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eCloud native certificate management\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/21054566?s=200\u0026v=4\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://cilium.io\"\u003eCilium\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eeBPF-based Networking, Observability and Security (CNI, LB, Network Policy, etc.)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/314135?s=200\u0026v=4\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://www.cloudflare.com\"\u003eCloudflare\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eDNS and Tunnel\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://www.docker.com/wp-content/uploads/2022/03/Moby-logo.png\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://www.docker.com\"\u003eDocker\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eEphemeral PXE server\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://github.com/kubernetes-sigs/external-dns/raw/master/docs/img/external-dns.png\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://github.com/kubernetes-sigs/external-dns\"\u003eExternalDNS\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eSynchronizes exposed Kubernetes Services and Ingresses with DNS providers\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fedora_logo.svg/267px-Fedora_logo.svg.png\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://getfedora.org/en/server\"\u003eFedora Server\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eBase OS for Kubernetes nodes\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://upload.wikimedia.org/wikipedia/commons/b/bb/Gitea_Logo.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://gitea.com\"\u003eGitea\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eSelf-hosted Git service\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://grafana.com/static/img/menu/grafana2.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://grafana.com\"\u003eGrafana\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eObservability platform\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://helm.sh/img/helm.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://helm.sh\"\u003eHelm\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eThe package manager for Kubernetes\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/49319725\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://k3s.io\"\u003eK3s\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eLightweight distribution of Kubernetes\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://kanidm.com/images/logo.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://kanidm.com\"\u003eKanidm\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eModern and simple identity management platform\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/13629408\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://kubernetes.io\"\u003eKubernetes\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eContainer-orchestration system, the backbone of this project\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://github.com/grafana/loki/blob/main/docs/sources/logo.png?raw=true\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://grafana.com/oss/loki\"\u003eLoki\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eLog aggregation system\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/1412239?s=200\u0026v=4\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://www.nginx.com\"\u003eNGINX\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eKubernetes Ingress Controller\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nix-snowflake-colours.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://nixos.org\"\u003eNix\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eConvenient development shell\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://ntfy.sh/_next/static/media/logo.077f6a13.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://ntfy.sh\"\u003entfy\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eNotification service to send notifications to your phone or desktop\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/3380462\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://prometheus.io\"\u003ePrometheus\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eSystems monitoring and alerting toolkit\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://docs.renovatebot.com/assets/images/logo.png\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://www.whitesourcesoftware.com/free-developer-tools/renovate\"\u003eRenovate\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eAutomatically update dependencies\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://raw.githubusercontent.com/rook/artwork/master/logo/blue.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://rook.io\"\u003eRook Ceph\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eCloud-Native Storage for Kubernetes\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/48932923?s=200\u0026v=4\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://tailscale.com\"\u003eTailscale\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eVPN without port forwarding\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/13991055?s=200\u0026v=4\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://www.wireguard.com\"\u003eWireguard\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eFast, modern, secure VPN tunnel\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://avatars.githubusercontent.com/u/84780935?s=200\u0026v=4\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://woodpecker-ci.org\"\u003eWoodpecker CI\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003eSimple yet powerful CI/CD engine with great extensibility\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg width=\"32\" src=\"https://zotregistry.dev/v2.0.2/assets/images/logo.svg\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003ca href=\"https://zotregistry.dev\"\u003eZot Registry\u003c/a\u003e\u003c/td\u003e\n        \u003ctd\u003ePrivate container registry\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n## Get Started\n\n- [Try it out locally](https://homelab.khuedoan.com/installation/sandbox) without any hardware (just 4 commands!)\n- [Deploy on real hardware](https://homelab.khuedoan.com/installation/production/prerequisites) for production workload\n\n## Roadmap\n\nSee [roadmap](https://homelab.khuedoan.com/reference/roadmap) and [open issues](https://github.com/khuedoan/homelab/issues) for a list of proposed features and known issues.\n\n## Contributing\n\nAny contributions you make are greatly appreciated.\n\nPlease see [contributing guide](https://homelab.khuedoan.com/reference/contributing) for more information.\n\n## License\n\nCopyright \u0026copy; 2020 - 2024 Khue Doan\n\nDistributed under the GPLv3 License.\nSee [license page](https://homelab.khuedoan.com/reference/license) or `LICENSE.md` file for more information.\n\n## Acknowledgements\n\nReferences:\n\n- [Ephemeral PXE server inspired by Minimal First Machine in the DC](https://speakerdeck.com/amcguign/minimal-first-machine-in-the-dc)\n- [ArgoCD usage and monitoring configuration in locmai/humble](https://github.com/locmai/humble)\n- [README template](https://github.com/othneildrew/Best-README-Template)\n- [Run the same Cloudflare Tunnel across many `cloudflared` processes](https://developers.cloudflare.com/cloudflare-one/tutorials/many-cfd-one-tunnel)\n- [MAC address environment variable in GRUB config](https://askubuntu.com/questions/1272400/how-do-i-automate-network-installation-of-many-ubuntu-18-04-systems-with-efi-and)\n- [Official k3s systemd service file](https://github.com/k3s-io/k3s/blob/master/k3s.service)\n- [Official Cloudflare Tunnel examples](https://github.com/cloudflare/argo-tunnel-examples)\n- [Initialize GitOps repository on Gitea and integrate with Tekton by RedHat](https://github.com/redhat-scholars/tekton-tutorial/tree/master/triggers)\n- [SSO configuration from xUnholy/k8s-gitops](https://github.com/xUnholy/k8s-gitops)\n- [Pre-commit config from k8s-at-home/flux-cluster-template](https://github.com/k8s-at-home/flux-cluster-template)\n- [Diátaxis technical documentation framework](https://diataxis.fr)\n- [Official Terratest examples](https://github.com/gruntwork-io/terratest/tree/master/test)\n- [Self-host an automated Jellyfin media streaming stack](https://zerodya.net/self-host-jellyfin-media-streaming-stack)\n- [App Template Helm chart by bjw-s](https://bjw-s.github.io/helm-charts/docs/app-template)\n- [Various application configurations in onedr0p/home-ops](https://github.com/onedr0p/home-ops)\n\nHere is a list of the contributors who have helped to improve this project.\nBig shout-out to them!\n\n- ![](https://github.com/locmai.png?size=24) [@locmai](https://github.com/locmai)\n- ![](https://github.com/MatthewJohn.png?size=24) [@MatthewJohn](https://github.com/MatthewJohn)\n- ![](https://github.com/karpfediem.png?size=24) [@karpfediem](https://github.com/karpfediem)\n- ![](https://github.com/linhng98.png?size=24) [@linhng98](https://github.com/linhng98)\n- ![](https://github.com/elliotblackburn.png?size=24) [@elliotblackburn](https://github.com/elliotblackburn)\n- ![](https://github.com/dotdiego.png?size=24) [@dotdiego](https://github.com/dotdiego)\n- ![](https://github.com/Crimrose.png?size=24) [@Crimrose](https://github.com/Crimrose)\n- ![](https://github.com/eventi.png?size=24) [@eventi](https://github.com/eventi)\n- ![](https://github.com/Bourne-ID.png?size=24) [@Bourne-ID](https://github.com/Bourne-ID)\n- ![](https://github.com/akwan.png?size=24) [@akwan](https://github.com/akwan)\n- ![](https://github.com/trangmaiq.png?size=24) [@trangmaiq](https://github.com/trangmaiq)\n- ![](https://github.com/tangowithfoxtrot.png?size=24) [@tangowithfoxtrot](https://github.com/tangowithfoxtrot)\n- ![](https://github.com/raedkit.png?size=24) [@raedkit](https://github.com/raedkit)\n- ![](https://github.com/ClashTheBunny.png?size=24) [@ClashTheBunny](https://github.com/ClashTheBunny)\n- ![](https://github.com/retX0.png?size=24) [@retX0](https://github.com/retX0)\n\nIf you feel you're missing from this list, please feel free to add yourself in a PR.\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/khuedoan/homelab.svg)](https://starchart.cc/khuedoan/homelab)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhuedoan%2Fhomelab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhuedoan%2Fhomelab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhuedoan%2Fhomelab/lists"}