mirror of
https://github.com/khuedoan/homelab.git
synced 2024-12-23 01:24:36 +07:00
Modern self-hosting framework, fully automated from empty disk to operating services with a single command.
ansibleargocddevopsdockerfedoragitopshelmhomelabk3sk8s-at-homekubernetesnetbootpxeself-hostingterraform
apps | ||
docs | ||
infra | ||
metal | ||
scripts | ||
tools | ||
.gitattributes | ||
.gitignore | ||
LICENSE | ||
Makefile | ||
README.md |
Homelab
! ⚠️ WORK IN PROGRESS
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:
Architecture
A single make
command will automatically:
- Build the
./metal
layer:- Create an ephemeral, stateless PXE server
- Install Linux on all servers in parallel
- Build the
./infra
layer:- Create a Kubernetes cluster using RKE
- Install some Helm chart for bootstrap
- Build the
./apps
layer:- Kustomize creates Argo applications
- ArgoCD install those applications
Visit the README file for each layer to learn more.
Layer | Description | Provisioner |
---|---|---|
metal | Bare metal OS installation, Terraform state backend,... | Ansible, PXE server |
infra | Kubernetes cluster | Terraform, Helm |
apps | Gitea, Vault and more in the future | Kustomize, ArgoCD, Helm |
Get Started
Prerequisite
For the controller (your laptop or desktop):
- SSH keys in
~/.ssh/{id_ed25519,id_ed25519.pub}
(you can generate it withssh-keygen -t ed25519
) - Docker with
host
networking driver (which means only Docker on Linux hosts, you can use a Linux virtual machine with bridged networking if you're on macOS or Windows)
For bare metal nodes:
- PXE IPv4 enabled
- Wake-on-LAN enabled and boot to network mode by default if turned on via Wake-on-LAN
- Secure boot disabled (optional, depending on the OS)
- Note their MAC addresses
Configurations
Change these configuration files to match your hardware and network setup:
- Bare metal nodes settings (IP, MAC...)
- OS settings (PXE, network...)
Build
Open the tools container:
make tools
Then build the homelab:
make
Roadmap
See to-do list, roadmap and open issues for a list of proposed features and known issues.
Contributing
Any contributions you make are greatly appreciated (feature, bug fixes, documentation, grammar or typo fix...).
License
Distributed under the GPLv3 License. See LICENSE
for more information.
Technology stack
Ansible |
Cloudflare |
Docker |
Fedora |
Gitea |
Helm |
Kubernetes |
Prometheus |
Rancher |
Terraform |
Vault |
Wireguard |