mirror of
https://github.com/khuedoan/homelab.git
synced 2025-01-07 05:51:17 +07:00
Modern self-hosting framework, fully automated from empty disk to operating services with a single command.
ansibleargocddevopsdockerfedoragitopshelmhomelabk3sk8s-at-homekubernetesnetbootpxeself-hostingterraform
3d3e9a92c6
Squashed commit of the following: commit c2d2def93933d5dd6ca5618385de226cd75dab3f Author: Khue Doan <khuedoan98@gmail.com> Date: Mon Dec 27 17:39:32 2021 +0700 refactor(bootstrap): switch branch to master commit a84a3f6ff14ee484c374f4eb13aa92495917249c Author: Khue Doan <khuedoan98@gmail.com> Date: Mon Dec 27 17:36:41 2021 +0700 fix(bootstrap): add missing fields commit 9d8f3d2e2374dba06c76a83241f1ea161094b241 Author: Khue Doan <khuedoan98@gmail.com> Date: Mon Dec 27 17:25:04 2021 +0700 build(bootstrap): update dependencies if needed before apply commit 4d725efa82b4283eb701263a8b76a7c371db1e2b Author: Khue Doan <khuedoan98@gmail.com> Date: Mon Dec 27 17:15:46 2021 +0700 feat(bootstrap): port changes from master commit 7cb8d09a73cc17232314d742de52ae15daac1565 Merge: 3dc1417 |
||
---|---|---|
.tekton | ||
apps | ||
bootstrap | ||
docs | ||
external | ||
metal | ||
platform | ||
scripts | ||
system | ||
tools | ||
.gitattributes | ||
.gitignore | ||
.yamllint.yaml | ||
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