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 (Japanese version of the ThinkCentre M700)
- CPU: Intel Core i5-6600T
- RAM: 16GB
- SSD: 128GB
- TP-Link TL-SG108 switch
Technology stack
Ansible |
Cloudflare |
Docker |
Fedora |
Gitea |
Helm |
Kubernetes |
Prometheus |
Rancher |
Terraform |
Vault |
Wireguard |
Architecture
Layer | Name | Description | Provisioner |
---|---|---|---|
0 | metal | Bare metal OS installation, Terraform state backend,... | Ansible, PXE server |
1 | infra | Kubernetes clusters, shared apps (Git, Vault, Argo...) | Terraform, Helm |
2 | apps | Argo |
Usage
Prerequisite
For the controller (to run Ansible, stateless PXE server, Terraform...):
- 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
- Secure boot disabled (optional, depending on the OS)
Configurations
- Bare metal nodes settings (IP, MAC...)
- OS settings (PXE, network...)
Building
Open the tools container:
make tools
Then build the homelab:
make