# Homelab This is my homelab set up, it focused on automation to simplify provisioning, upgrading, and operating self-hosted services. ```diff ! ⚠️ WORK IN PROGRESS ``` ## Overview ### Hardware ![Hardware](https://user-images.githubusercontent.com/27996771/98970963-25137200-2543-11eb-8f2d-f9a2d45756ef.JPG) - 4 nodes of 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` ### Technology 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 Encrypt | Let's Encrypt | Free, automated (via [cert-manager](https://cert-manager.io)), and open 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 Linux | Rocky Linux | Base OS for Kubernetes nodes | | Tekton | Tekton | Cloud native solution for building CI/CD systems | | Vault | Vault | Secrets and encryption management system | ## Get Started - [Try it out on a VM](https://homelab.khuedoan.com/try_on_a_vm) without any hardware - [Deploy on real hardware](https://homelab.khuedoan.com/deployment) for real workload ## Roadmap See [roadmap](https://homelab.khuedoan.com/roadmap) and [open issues](https://github.com/khuedoan/homelab/issues) for a list of proposed features and known issues. ## Contributing Any contributions you make are greatly appreciated (feature, bug fix, documentation, grammar or typo fix...). ## License Distributed under the GPLv3 License. See `LICENSE` for more information. ## Acknowledgements - ArgoCD usage in [my coworker's homelab](https://github.com/locmai/humble) - [README template](https://github.com/othneildrew/Best-README-Template) - [Run the same Cloudflare Tunnel across many `cloudflared` processes](https://developers.cloudflare.com/cloudflare-one/tutorials/many-cfd-one-tunnel) - [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) - [Official k3s systemd service file](https://github.com/k3s-io/k3s/blob/master/k3s.service) ## Stargazers over time [![Stargazers over time](https://starchart.cc/khuedoan/homelab.svg)](https://starchart.cc/khuedoan/homelab)