mirror of
https://github.com/khuedoan/homelab.git
synced 2024-12-22 15:24:31 +07:00
Modern self-hosting framework, fully automated from empty disk to operating services with a single command.
ansibleargocddevopsdockerfedoragitopshelmhomelabk3sk8s-at-homekubernetesnetbootpxeself-hostingterraform
da0b8f0450
Too many of them |
||
---|---|---|
.tekton | ||
apps | ||
bootstrap | ||
docs | ||
external | ||
metal | ||
platform | ||
scripts | ||
system | ||
tools | ||
.gitattributes | ||
.gitignore | ||
LICENSE.md | ||
Makefile | ||
README.md |
Homelab
This is my homelab set up, it focused on automation to simplify provisioning, upgrading, and operating self-hosted services.
! ⚠️ WORK IN PROGRESS
Overview
Hardware
- 4 nodes of NEC SFF
PC-MK26ECZDR
(Japanese version of the ThinkCentre M700):- CPU:
Intel Core i5-6600T @ 2.70GHz
- RAM:
16GB
- SSD:
128GB
- CPU:
- TP-Link
TL-SG108
switch:- Ports:
8
- Speed:
1000Mbps
- Ports:
Features
Status: Alpha
- 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 🚧
See Roadmap for more details.
Tech stack
Logo | Name | Description |
---|---|---|
Ansible | Automate bare metal provisioning and configuration | |
ArgoCD | GitOps tool built to deploy applications to Kubernetes | |
Cloudflare | DNS and Tunnel | |
Docker | Ephermeral PXE server and convenient tools container | |
Gitea | Self-hosted Git service | |
Grafana | Operational dashboards | |
Helm | The package manager for Kubernetes | |
K3s | Lightweight distribution of Kubernetes | |
Kubernetes | Container-orchestration system, the backbone of this project | |
Let's Encrypt | Free, automated (via cert-manager), and open certificate authority | |
Loki | Log aggregation system | |
Longhorn | Cloud native distributed block storage for Kubernetes | |
MetalLB | Bare metal load-balancer for Kubernetes | |
NGINX | Kubernetes Ingress Controller | |
Prometheus | Systems monitoring and alerting toolkit | |
Rocky Linux | Base OS for Kubernetes nodes | |
Tekton | Cloud native solution for building CI/CD systems | |
Trow | Private container registry | |
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
Distributed under the GPLv3 License. See LICENSE
for more information.
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