https://github.com/khuedoan/homelab Skip to content Sign up * Why GitHub? + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} khuedoan / homelab Public * Notifications * Fork 124 * Star 2.6k * My self-hosting infrastructure, fully automated from empty disk to operating services homelab.khuedoan.com GPL-3.0 License 2.6k stars 124 forks Star Notifications * Code * Issues 4 * Pull requests 1 * Security * Insights More * Code * Issues * Pull requests * Security * Insights master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 4 branches 6 tags Code Latest commit @khuedoan khuedoan fix(tools): add Docker Compose v2 back ... 7e21741 Jan 22, 2022 fix(tools): add Docker Compose v2 back See #17 7e21741 Git stats * 1,160 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .tekton ci: switch use Kustomize Dec 27, 2021 apps fix(element): upgrade Element chart to latest Jan 9, 2022 bootstrap chore(argocd): upgrade ApplicationSet chart to 1.8.0 Jan 9, 2022 docs docs: use new configure script Jan 16, 2022 external refactor: inject Terraform secrets with Terraform Dec 29, 2021 metal chore(metal/pxe): clean up rendered files Jan 16, 2022 platform fix(vault): set storage class explicitly Jan 22, 2022 scripts refactor(scripts): only replace repo and domain where needed Jan 16, 2022 system refactor(longhorn): auto release volumes when node is down Jan 20, 2022 tools fix(tools): add Docker Compose v2 back Jan 22, 2022 .gitattributes style: do not detect YAML files Dec 25, 2021 .gitignore refactor: remove Terraform and CoreOS files from ignore list Dec 5, 2021 .yamllint.yaml style: add yamllint rules Dec 26, 2021 LICENSE.md style: convert LICENSE to Markdown Nov 17, 2021 Makefile chore: cleanup lint targets Dec 27, 2021 README.md style: reformat tech stack table Jan 22, 2022 configure.py docs: use new configure script Jan 16, 2022 View code [ ] Khue's Homelab Overview Hardware Features Tech stack Get Started Roadmap Contributing License Acknowledgements Stargazers over time README.md Khue's Homelab chat tag document license stars Current status: ALPHA This project utilizes Infrastructure as Code to automate provisioning, operating, and updating self-hosted services in my homelab. It can be used as a highly customizable framework to build your own homelab. Overview This section provides a high level overview of the project. For further information, please see the documentation. Hardware Hardware * 4 x NEC SFF PC-MK26ECZDR (Japanese version of the ThinkCentre M700): + CPU: Intel Core i5-6600T @ 2.70GHz + RAM: 16GB + SSD: 128GB * TP-Link TL-SG108 switch: + Ports: 8 + Speed: 1000Mbps Features Project status: Alpha (see roadmap below) * [*] Common applications: Gitea, Seafile, Jellyfin, Paperless... * [*] Automated bare metal provisioning with PXE boot * [*] Automated Kubernetes installation and management * [*] Installing and managing applications using GitOps * [*] Modular architecture, easy to add or remove features/ components * [*] Automated certificate management * [*] Automatically update DNS records for exposed services * [*] Expose services to the internet securely with Cloudflare Tunnel * [*] CI/CD platform * [*] Private container registry * [*] Distributed storage * [ ] Monitoring and alerting * [ ] Support multiple environments (dev, stag, prod) * [ ] Automated offsite backups * [ ] Single sign-on Screenshots of some user-facing applications are shown here, I will update them before each release. They can't capture all of the project's features, but they are sufficient to get a concept of it. [149445807-] Homepage with Ingress discovery powered by Hajimari [149444871-] Git server powered by Gitea [149445374-] Continuous integration with Tekton [149444716-] Continuous deployment with ArgoCD [149446631-] Monitoring dashboard powered by Grafana [149448510-] Matrix chat server powered by Element and Dendrite [149448896-] Cluster management using Lens (or you can just use kubectl) [149452309-] Secret management with Vault Tech stack Logo Name Description Ansible Ansible Automate bare metal provisioning and configuration ArgoCD ArgoCD GitOps tool built to deploy applications to Kubernetes Cloudflare Cloudflare DNS and Tunnel Docker Docker Ephermeral PXE server and convenient tools container Gitea Gitea Self-hosted Git service Grafana Grafana Operational dashboards Helm Helm The package manager for Kubernetes K3s K3s Lightweight distribution of Kubernetes Kubernetes Kubernetes Container-orchestration system, the backbone of this project Let's Let's Free, automated (via cert-manager), and open Encrypt Encrypt certificate authority Loki Loki Log aggregation system Longhorn Longhorn Cloud native distributed block storage for Kubernetes MetalLB MetalLB Bare metal load-balancer for Kubernetes NGINX NGINX Kubernetes Ingress Controller Prometheus Prometheus Systems monitoring and alerting toolkit Rocky Rocky Base OS for Kubernetes nodes Linux Linux Tekton Tekton Cloud native solution for building CI/CD systems Trow Trow Private container registry Vault Vault Secrets and encryption management system Get Started * Try it out on a VM without any hardware * Deploy on real hardware for real workload Roadmap See roadmap and open issues for a list of proposed features and known issues. Contributing Any contributions you make, either big or small, are greatly appreciated. License Copyright (c) 2020, 2021, 2022 Khue Doan Distributed under the GPLv3 License. This project is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this project (LICENSE.md). If not, see https://www.gnu.org /licenses. Acknowledgements * ArgoCD usage in my coworker's homelab * README template * Run the same Cloudflare Tunnel across many cloudflared processes * MAC address environment variable in GRUB config * Official k3s systemd service file * Official Cloudflare Tunnel examples * Initialize GitOps repository on Gitea and integrate with Tekton by RedHat Stargazers over time Stargazers over time About My self-hosting infrastructure, fully automated from empty disk to operating services homelab.khuedoan.com Topics docker kubernetes ansible terraform helm pxe homelab kustomize argocd k3s rockylinux Resources Readme License GPL-3.0 License Stars 2.6k stars Watchers 37 watching Forks 124 forks Contributors 3 * @khuedoan khuedoan Khue Doan * @locmai locmai Loc Mai * @MatthewJohn MatthewJohn Matt John Languages * Python 27.8% * HCL 24.7% * Jinja 19.8% * Shell 11.5% * Makefile 11.0% * Dockerfile 5.2% * (c) 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.