mirror of
https://github.com/outbackdingo/homelab-v.git
synced 2026-08-25 14:53:19 +00:00
109 lines
5.5 KiB
Markdown
109 lines
5.5 KiB
Markdown
<div align="center">
|
|
|
|
# 🪨 Homelab 🏡
|
|
|
|
Repository for home infrastructure and [Kubernetes](https://kubernetes.io/) cluster
|
|
using [GitOps](https://en.wikipedia.org/wiki/DevOps) practices.
|
|
Held together using [Proxmox VE](https://www.proxmox.com/en/proxmox-virtual-environment),
|
|
[OpenTofu](https://opentofu.org/), [Talos](https://talos.dev), [Kubernetes](https://kubernetes.io/),
|
|
[Argo CD](https://argoproj.github.io/cd/) and copious amounts of [YAML](https://yaml.org/).
|
|
|
|
</div>
|
|
|
|
---
|
|
|
|
## 📖 Overview
|
|
|
|
This repository hosts the IaC ([Infrastructure as Code](https://en.wikipedia.org/wiki/Infrastructure_as_code))
|
|
configuration for my homelab.
|
|
|
|
The Homelab is backed by [Proxmox VE](https://www.proxmox.com/en/proxmox-virtual-environment) hypervisor nodes with VMs
|
|
bootstrapped using [OpenTofu](https://opentofu.org/)/[Terraform](https://www.terraform.io/).
|
|
|
|
Most of the services run on [Talos](https://www.talos.dev/) flavoured [Kubernetes](https://kubernetes.io/),
|
|
though I'm also running a [TrueNAS](https://www.truenas.com/) VM for storage
|
|
and [Home Assistant](https://www.home-assistant.io/) VM for home automation.
|
|
|
|
To organise all the configuration I've opted for an approach using Kustomized Helm
|
|
with [Argo CD](https://argoproj.github.io/cd/) which I've explained in more
|
|
detail [in this article](https://blog.stonegarden.dev/articles/2023/09/argocd-kustomize-with-helm/).
|
|
|
|
I journal my homelab journey over at my self-hosted [blog](https://blog.stonegarden.dev).
|
|
|
|
## 🧑💻 Getting Started
|
|
|
|
If you're new to Kubernetes I've written a fairly thorough guide
|
|
on [Bootstrapping k3s with Cilium](https://blog.stonegarden.dev/articles/2024/02/bootstrapping-k3s-with-cilium/).
|
|
In the article I try to guide you from a fresh Debian 12 Bookworm install to a working cluster using
|
|
the [k3s](https://k3s.io) flavour of Kubernetes with [Cilium](https://cilium.io) as a [CNI](https://www.cni.dev)
|
|
and [IngressController](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/).
|
|
|
|
I've also written an article on how to get started
|
|
with [Kubernetes on Proxmox](https://blog.stonegarden.dev/articles/2024/03/proxmox-k8s-with-cilium/) if virtualisation
|
|
is more your thing.
|
|
|
|
I'm currently working on an article on how to bootstrap your own Talos-cluster using this repo.
|
|
|
|
## ⚙️ Core Components
|
|
|
|
* [Proxmox VE](https://www.proxmox.com/en/proxmox-virtual-environment): Server management and KVM hypervisor.
|
|
* [OpenTofu](https://opentofu.org/): Open source infrastructure as code tool.
|
|
* [Cilium](https://cilium.io/): eBPF-based Networking, Observability, Security.
|
|
* [Argo CD](https://argo-cd.readthedocs.io/en/stable/): Declarative, GitOps continuous delivery tool for Kubernetes.
|
|
* [Cert-manager](https://cert-manager.io/): Cloud native certificate management.
|
|
* [Sealed-secrets](https://github.com/bitnami-labs/sealed-secrets): Encrypt your Secret into a SealedSecret, which is
|
|
safe to store - even inside a public repository.
|
|
|
|
## 🗃️ Folder Structure
|
|
|
|
```shell
|
|
.
|
|
├── 📂 docs # Documentation
|
|
├── 📂 k8s # Kubernetes manifests
|
|
│ ├── 📂 apps # Applications on
|
|
│ ├── 📂 infra # Infrastructure components
|
|
│ └── 📂 sets # Bootstrapping ApplicationSets
|
|
└── 📂 tofu # Tofu configuration
|
|
├── 📂 home-assistant # Home Assistant VM
|
|
└── 📂 kubernetes # Kubernetes VM configuration
|
|
├── 📂 bootstrap # Kubernetes bootstrap config
|
|
└── 📂 talos # Talos configuration
|
|
```
|
|
|
|
## 🖥️ Hardware
|
|
|
|
| Name | Device | CPU | RAM | Storage | Purpose |
|
|
|--------|---------------------------|-----------------|----------------|------------------|-------------------|
|
|
| Abel | CWWK 6 LAN Port | Intel i3-N305 | 32 GB DDR5 | - | Control-plane |
|
|
| Euclid | ASUS ExpertCenter PN42 | Intel N100 | 32 GB DDR4 | - | Control-plane |
|
|
| Cantor | ASUS PRIME N100I-D D4 | Intel N100 | 32 GB DDR4 | 5x8TB HDD RaidZ2 | NAS/Control-plane |
|
|
| Gauss | Dell Precision Tower 5810 | Xeon E5-1650 v3 | 64 GB DDR4 ECC | 14 TB HDD | Compute |
|
|
|
|
## 🏗️ Work in Progress
|
|
|
|
- [ ] Set up AdGuard Home
|
|
- [ ] Clean up DNS config
|
|
- [ ] Renovate for automatic updates
|
|
|
|
## 👷 Future Projects
|
|
|
|
- [ ] External DNS
|
|
- [ ] Keycloak for auth
|
|
- [ ] Implement NetBird
|
|
- [ ] OPNSense/pfSense
|
|
- [ ] Use BGP instead of ARP
|
|
- [ ] Dynamic Resource Allocation for GPU
|
|
- [ ] Local LLM
|
|
- [ ] Cilium mTLS & SPIFFE/SPIRE
|
|
|
|
##
|
|
|
|
<img src="https://raw.githubusercontent.com/vehagn/homelab/remodel/docs/assets/proxmox-logo-stacked-inverted-color.svg#gh-dark-mode-only" width="80px" alt="Proxmox logo"/>
|
|
<img src="https://raw.githubusercontent.com/vehagn/homelab/remodel/docs/assets/proxmox-logo-stacked-color.svg#gh-light-mode-only" width="80px" alt="Proxmox logo"/>
|
|
|
|
<img src="https://raw.githubusercontent.com/vehagn/homelab/remodel/docs/assets/tofu-on-dark.svg#gh-dark-mode-only" width="68px" alt="OpenTofu logo"/>
|
|
<img src="https://raw.githubusercontent.com/vehagn/homelab/remodel/docs/assets/tofu-on-light.svg#gh-light-mode-only" width="68px" alt="OpenTofu logo"/>
|
|
|
|
<img src="https://raw.githubusercontent.com/vehagn/homelab/remodel/docs/assets/talos-logo.svg" width="64px" alt="Kubernetes logo"/>
|
|
|
|
<img src="https://raw.githubusercontent.com/vehagn/homelab/remodel/docs/assets/kubernetes-logo.svg" width="68px" alt="Kubernetes logo"/> |