[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9883":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":15,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":40,"readmeContent":41,"aiSummary":42,"trendingCount":16,"starSnapshotCount":16,"syncStatus":43,"lastSyncTime":44,"discoverSource":45},9883,"homelab","khuedoan\u002Fhomelab","khuedoan","Fully automated homelab from empty disk to running services with a single command.","https:\u002F\u002Fhomelab.khuedoan.com",null,"Python",9271,860,89,12,0,6,51,19,39.81,"GNU General Public License v3.0",false,"master",[25,26,27,28,29,30,31,32,5,33,34,35,36,37,38,39],"ansible","argocd","devops","docker","fedora","gitops","helm","home-operations","k3s","k8s-at-home","kubernetes","netboot","pxe","self-hosting","terraform","2026-06-12 02:02:13","# Khue's Homelab\n\n**[Features](#features) • [Get Started](#get-started) • [Documentation](https:\u002F\u002Fhomelab.khuedoan.com)**\n\n[![tag](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Ftag\u002Fkhuedoan\u002Fhomelab?style=flat-square&logo=semver&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Ftags)\n[![document](https:\u002F\u002Fimg.shields.io\u002Fwebsite?label=document&logo=gitbook&logoColor=white&style=flat-square&url=https%3A%2F%2Fhomelab.khuedoan.com)](https:\u002F\u002Fhomelab.khuedoan.com)\n[![license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fkhuedoan\u002Fhomelab?style=flat-square&logo=gnu&logoColor=white)](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html)\n[![stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fkhuedoan\u002Fhomelab?logo=github&logoColor=white&color=gold&style=flat-square)](https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab)\n\nThis project utilizes [Infrastructure as Code](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FInfrastructure_as_code) and [GitOps](https:\u002F\u002Fwww.weave.works\u002Ftechnologies\u002Fgitops) 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> **What is a homelab?**\n>\n> Homelab is a laboratory at home where you can self-host, experiment with new technologies, practice for certifications, and so on.\n> For more information, please see the [r\u002Fhomelab introduction](https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fhomelab\u002Fwiki\u002Fintroduction) and the\n> [Home Operations Discord community](https:\u002F\u002Fdiscord.gg\u002Fhome-operations) (formerly known as [k8s-at-home](https:\u002F\u002Fk8s-at-home.com)).\n\nIf you encounter an issue, please create [a bug report](https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fissues\u002Fnew?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:\u002F\u002Fuser-images.githubusercontent.com\u002F27996771\u002F98970963-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\u002Fcomponents\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:\u002F\u002Fwww.cloudflare.com\u002Fproducts\u002Ftunnel\u002F)\n- [x] CI\u002FCD 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:\u002F\u002Fasciinema.org\u002Fa\u002FxkBRkwC6e9RAzVuMDXH3nGHp7)                                           |\n| Deploy with a single command (after updating the configuration files)                                           |\n| [![][pxe-demo]](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=y-d7btNNAT8)                                                    |\n| PXE boot                                                                                                        |\n| [![][hubble-demo]][hubble-demo]                                                                                 |\n| Observe network traffic with Hubble, built on top of [Cilium](https:\u002F\u002Fcilium.io) and eBPF                       |\n| [![][homepage-demo]][homepage-demo]                                                                             |\n| Homepage powered by... [Homepage](https:\u002F\u002Fgethomepage.dev)                                                      |\n| [![][grafana-demo]][grafana-demo]                                                                               |\n| Monitoring dashboard powered by [Grafana](https:\u002F\u002Fgrafana.com)                                                  |\n| [![][gitea-demo]][gitea-demo]                                                                                   |\n| Git server powered by [Gitea](https:\u002F\u002Fgitea.io\u002Fen-us)                                                           |\n| [![][matrix-demo]][matrix-demo]                                                                                 |\n| [Matrix](https:\u002F\u002Fmatrix.org\u002F) chat server                                                                       |\n| [![][woodpecker-demo]][woodpecker-demo]                                                                         |\n| Continuous integration with [Woodpecker CI](https:\u002F\u002Fwoodpecker-ci.org)                                          |\n| [![][argocd-demo]][argocd-demo]                                                                                 |\n| Continuous deployment with [ArgoCD](https:\u002F\u002Fargoproj.github.io\u002Fcd)                                              |\n| [![][alert-demo]][alert-demo]                                                                                   |\n| [ntfy](https:\u002F\u002Fntfy.sh) displaying received alerts                                                              |\n| [![][ai-demo]][ai-demo]                                                                                         |\n| Self-hosted AI powered by [Ollama](https:\u002F\u002Follama.com) (experimental, not very fast because I don't have a GPU) |\n\n[deploy-demo]: https:\u002F\u002Fasciinema.org\u002Fa\u002FxkBRkwC6e9RAzVuMDXH3nGHp7.svg\n[pxe-demo]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F27996771\u002F157303477-df2e7410-8f02-4648-a86c-71e6b7e89e35.png\n[hubble-demo]: https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fassets\u002F27996771\u002F9c6677d0-3564-47c0-852b-24b6a554b4a3\n[homepage-demo]: https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fassets\u002F27996771\u002Fd0eaf620-be08-48d8-8420-40bcaa86093b\n[grafana-demo]: https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fassets\u002F27996771\u002Fad937b26-e9bc-4761-83ae-1c7f512ea97f\n[gitea-demo]: https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fassets\u002F27996771\u002Fc245534f-88d9-4565-bde8-b39f60ccee9e\n[matrix-demo]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F27996771\u002F149448510-7163310c-2049-4ccd-901d-f11f605bfc32.png\n[woodpecker-demo]: https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fassets\u002F27996771\u002F5d887688-d20a-44c8-8f77-0c625527dfe4\n[argocd-demo]: https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fassets\u002F27996771\u002F527e2529-4fe1-4664-ab8a-b9eb3c492d20\n[alert-demo]: https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fassets\u002F27996771\u002Fc922f755-e911-4ca0-9d4a-6e552d387f18\n[ai-demo]: https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fassets\u002F27996771\u002Fd77ba511-00b7-47c3-9032-55679a099e70\n\n### Tech stack\n\n\u003Ctable>\n    \u003Ctr>\n        \u003Cth>Logo\u003C\u002Fth>\n        \u003Cth>Name\u003C\u002Fth>\n        \u003Cth>Description\u003C\u002Fth>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fsimpleicons.org\u002Ficons\u002Fansible.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.ansible.com\">Ansible\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Automate bare metal provisioning and configuration\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F30269780\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fargoproj.github.io\u002Fcd\">ArgoCD\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>GitOps tool built to deploy applications to Kubernetes\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fgithub.com\u002Fjetstack\u002Fcert-manager\u002Fraw\u002Fmaster\u002Flogo\u002Flogo.png\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fcert-manager.io\">cert-manager\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Cloud native certificate management\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F21054566?s=200&v=4\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fcilium.io\">Cilium\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>eBPF-based Networking, Observability and Security (CNI, LB, Network Policy, etc.)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F314135?s=200&v=4\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.cloudflare.com\">Cloudflare\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>DNS and Tunnel\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fwww.docker.com\u002Fwp-content\u002Fuploads\u002F2022\u002F03\u002FMoby-logo.png\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.docker.com\">Docker\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Ephemeral PXE server\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Fraw\u002Fmaster\u002Fdocs\u002Fimg\u002Fexternal-dns.png\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\">ExternalDNS\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Synchronizes exposed Kubernetes Services and Ingresses with DNS providers\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fupload.wikimedia.org\u002Fwikipedia\u002Fcommons\u002Fthumb\u002F3\u002F3f\u002FFedora_logo.svg\u002F267px-Fedora_logo.svg.png\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fgetfedora.org\u002Fen\u002Fserver\">Fedora Server\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Base OS for Kubernetes nodes\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fupload.wikimedia.org\u002Fwikipedia\u002Fcommons\u002Fb\u002Fbb\u002FGitea_Logo.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fgitea.com\">Gitea\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Self-hosted Git service\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fgrafana.com\u002Fstatic\u002Fimg\u002Fmenu\u002Fgrafana2.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fgrafana.com\">Grafana\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Observability platform\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fhelm.sh\u002Fimg\u002Fhelm.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fhelm.sh\">Helm\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>The package manager for Kubernetes\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F49319725\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fk3s.io\">K3s\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Lightweight distribution of Kubernetes\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fkanidm.com\u002Fimages\u002Flogo.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fkanidm.com\">Kanidm\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Modern and simple identity management platform\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13629408\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fkubernetes.io\">Kubernetes\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Container-orchestration system, the backbone of this project\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fgithub.com\u002Fgrafana\u002Floki\u002Fblob\u002Fmain\u002Fdocs\u002Fsources\u002Flogo.png?raw=true\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fgrafana.com\u002Foss\u002Floki\">Loki\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Log aggregation system\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1412239?s=200&v=4\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.nginx.com\">NGINX\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Kubernetes Ingress Controller\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FNixOS\u002Fnixos-artwork\u002Frefs\u002Fheads\u002Fmaster\u002Flogo\u002Fnix-snowflake-colours.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fnixos.org\">Nix\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Convenient development shell\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fntfy.sh\u002F_next\u002Fstatic\u002Fmedia\u002Flogo.077f6a13.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fntfy.sh\">ntfy\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Notification service to send notifications to your phone or desktop\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3380462\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fprometheus.io\">Prometheus\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Systems monitoring and alerting toolkit\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fdocs.renovatebot.com\u002Fassets\u002Fimages\u002Flogo.png\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.whitesourcesoftware.com\u002Ffree-developer-tools\u002Frenovate\">Renovate\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Automatically update dependencies\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Frook\u002Fartwork\u002Fmaster\u002Flogo\u002Fblue.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Frook.io\">Rook Ceph\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Cloud-Native Storage for Kubernetes\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F48932923?s=200&v=4\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Ftailscale.com\">Tailscale\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>VPN without port forwarding\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13991055?s=200&v=4\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fwww.wireguard.com\">Wireguard\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Fast, modern, secure VPN tunnel\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F84780935?s=200&v=4\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fwoodpecker-ci.org\">Woodpecker CI\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Simple yet powerful CI\u002FCD engine with great extensibility\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>\u003Cimg width=\"32\" src=\"https:\u002F\u002Fzotregistry.dev\u002Fv2.0.2\u002Fassets\u002Fimages\u002Flogo.svg\">\u003C\u002Ftd>\n        \u003Ctd>\u003Ca href=\"https:\u002F\u002Fzotregistry.dev\">Zot Registry\u003C\u002Fa>\u003C\u002Ftd>\n        \u003Ctd>Private container registry\u003C\u002Ftd>\n    \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Get Started\n\n- [Try it out locally](https:\u002F\u002Fhomelab.khuedoan.com\u002Finstallation\u002Fsandbox) without any hardware (just 4 commands!)\n- [Deploy on real hardware](https:\u002F\u002Fhomelab.khuedoan.com\u002Finstallation\u002Fproduction\u002Fprerequisites) for production workload\n\n## Roadmap\n\nSee [roadmap](https:\u002F\u002Fhomelab.khuedoan.com\u002Freference\u002Froadmap) and [open issues](https:\u002F\u002Fgithub.com\u002Fkhuedoan\u002Fhomelab\u002Fissues) 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:\u002F\u002Fhomelab.khuedoan.com\u002Freference\u002Fcontributing) for more information.\n\n## License\n\nCopyright &copy; 2020 - 2024 Khue Doan\n\nDistributed under the GPLv3 License.\nSee [license page](https:\u002F\u002Fhomelab.khuedoan.com\u002Freference\u002Flicense) 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:\u002F\u002Fspeakerdeck.com\u002Famcguign\u002Fminimal-first-machine-in-the-dc)\n- [ArgoCD usage and monitoring configuration in locmai\u002Fhumble](https:\u002F\u002Fgithub.com\u002Flocmai\u002Fhumble)\n- [README template](https:\u002F\u002Fgithub.com\u002Fothneildrew\u002FBest-README-Template)\n- [Run the same Cloudflare Tunnel across many `cloudflared` processes](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Ftutorials\u002Fmany-cfd-one-tunnel)\n- [MAC address environment variable in GRUB config](https:\u002F\u002Faskubuntu.com\u002Fquestions\u002F1272400\u002Fhow-do-i-automate-network-installation-of-many-ubuntu-18-04-systems-with-efi-and)\n- [Official k3s systemd service file](https:\u002F\u002Fgithub.com\u002Fk3s-io\u002Fk3s\u002Fblob\u002Fmaster\u002Fk3s.service)\n- [Official Cloudflare Tunnel examples](https:\u002F\u002Fgithub.com\u002Fcloudflare\u002Fargo-tunnel-examples)\n- [Initialize GitOps repository on Gitea and integrate with Tekton by RedHat](https:\u002F\u002Fgithub.com\u002Fredhat-scholars\u002Ftekton-tutorial\u002Ftree\u002Fmaster\u002Ftriggers)\n- [SSO configuration from xUnholy\u002Fk8s-gitops](https:\u002F\u002Fgithub.com\u002FxUnholy\u002Fk8s-gitops)\n- [Pre-commit config from k8s-at-home\u002Fflux-cluster-template](https:\u002F\u002Fgithub.com\u002Fk8s-at-home\u002Fflux-cluster-template)\n- [Diátaxis technical documentation framework](https:\u002F\u002Fdiataxis.fr)\n- [Official Terratest examples](https:\u002F\u002Fgithub.com\u002Fgruntwork-io\u002Fterratest\u002Ftree\u002Fmaster\u002Ftest)\n- [Self-host an automated Jellyfin media streaming stack](https:\u002F\u002Fzerodya.net\u002Fself-host-jellyfin-media-streaming-stack)\n- [App Template Helm chart by bjw-s](https:\u002F\u002Fbjw-s-labs.github.io\u002Fhelm-charts\u002Fdocs\u002Fapp-template)\n- [Various application configurations in onedr0p\u002Fhome-ops](https:\u002F\u002Fgithub.com\u002Fonedr0p\u002Fhome-ops)\n\nHere is a list of the contributors who have helped to improve this project.\nBig shout-out to them!\n\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Flocmai.png?size=24\" \u002F> [@locmai](https:\u002F\u002Fgithub.com\u002Flocmai)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002FMatthewJohn.png?size=24\" \u002F> [@MatthewJohn](https:\u002F\u002Fgithub.com\u002FMatthewJohn)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Fkarpfediem.png?size=24\" \u002F> [@karpfediem](https:\u002F\u002Fgithub.com\u002Fkarpfediem)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Flinhng98.png?size=24\" \u002F> [@linhng98](https:\u002F\u002Fgithub.com\u002Flinhng98)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Felliotblackburn.png?size=24\" \u002F> [@elliotblackburn](https:\u002F\u002Fgithub.com\u002Felliotblackburn)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Fdotdiego.png?size=24\" \u002F> [@dotdiego](https:\u002F\u002Fgithub.com\u002Fdotdiego)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002FCrimrose.png?size=24\" \u002F> [@Crimrose](https:\u002F\u002Fgithub.com\u002FCrimrose)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Feventi.png?size=24\" \u002F> [@eventi](https:\u002F\u002Fgithub.com\u002Feventi)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002FBourne-ID.png?size=24\" \u002F> [@Bourne-ID](https:\u002F\u002Fgithub.com\u002FBourne-ID)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Fakwan.png?size=24\" \u002F> [@akwan](https:\u002F\u002Fgithub.com\u002Fakwan)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Ftrangmaiq.png?size=24\" \u002F> [@trangmaiq](https:\u002F\u002Fgithub.com\u002Ftrangmaiq)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Ftangowithfoxtrot.png?size=24\" \u002F> [@tangowithfoxtrot](https:\u002F\u002Fgithub.com\u002Ftangowithfoxtrot)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Fraedkit.png?size=24\" \u002F> [@raedkit](https:\u002F\u002Fgithub.com\u002Fraedkit)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002FClashTheBunny.png?size=24\" \u002F> [@ClashTheBunny](https:\u002F\u002Fgithub.com\u002FClashTheBunny)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002FretX0.png?size=24\" \u002F> [@retX0](https:\u002F\u002Fgithub.com\u002FretX0)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Fzalsader.png?size=24\" \u002F> [@zalsader](https:\u002F\u002Fgithub.com\u002Fzalsader)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Fserpro69.png?size=24\" \u002F> [@serpro69](https:\u002F\u002Fgithub.com\u002Fserpro69)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Fllajas.png?size=24\" \u002F> [@llajas](https:\u002F\u002Fgithub.com\u002Fllajas)\n- \u003Cimg width=\"24\" height=\"24\" src=\"https:\u002F\u002Fgithub.com\u002Fzalsader.png?size=24\" \u002F> [@zalsader](https:\u002F\u002Fgithub.com\u002Fzalsader)\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:\u002F\u002Fstarchart.cc\u002Fkhuedoan\u002Fhomelab.svg)](https:\u002F\u002Fstarchart.cc\u002Fkhuedoan\u002Fhomelab)\n","khuedoan\u002Fhomelab 是一个通过单条命令即可从空白磁盘到运行服务的全自动化家庭实验室项目。它利用基础设施即代码（IaC）和GitOps理念，结合Ansible、Docker、Kubernetes等技术，实现自托管服务的自动部署、管理和更新。核心功能包括常见应用的一键安装、裸机PXE启动、Kubernetes集群的自动化管理以及基于GitOps的应用程序安装与升级。此外，该项目还支持自动证书管理、DNS记录更新及安全地将服务暴露至互联网等功能。其模块化设计使得用户可以根据需求灵活添加或移除组件。适合那些希望在家中搭建实验环境以学习新技术、实践DevOps流程或准备相关认证考试的技术爱好者使用。",2,"2026-06-11 03:25:13","top_topic"]