Modern self-hosting framework, fully automated from empty disk to operating services with a single command.
Go to file
2021-06-08 19:09:47 +07:00
apps Add Wireguard access server 2021-05-23 14:03:07 +07:00
docs Convert Ansible inventory from INI to YAML 2021-06-08 18:32:19 +07:00
infra Improve makefile targets consistency 2021-05-23 12:24:32 +07:00
metal Change host fix extension 2021-06-08 19:09:47 +07:00
scripts Initial scripts 2021-05-02 22:25:38 +07:00
tools Remove host network check (false positive) 2021-06-08 18:41:46 +07:00
.gitattributes Add git attributes 2021-05-16 14:55:08 +07:00
.gitignore Move RKE cluster to sperate module, with cleaner Ansible check 2021-05-02 23:07:16 +07:00
LICENSE Create LICENSE 2021-02-12 21:29:21 +07:00
Makefile Improve makefile targets consistency 2021-05-23 12:24:32 +07:00
README.md Update Ansible inventory path 2021-06-08 18:33:24 +07:00

Homelab

⚠️ WORK IN PROGRESS

Hardware

Hardware

  • 4 nodes of NEC SFF PC PC-MK26ECZDR (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

Quick explanation

Layers

Layer Name Description Provisioner
0 metal Bare metal OS installation, Terraform state backend,... Ansible, PXE server
1 infra Kubernetes clusters Terraform, Helm
2 apps Gitea, Vault and more in the future 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 with ssh-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

Building

Open the tools container:

make tools

Then build the homelab:

make