My fully automated, GitOps-driven infrastructure repository managing my K3s Raspberry Pi homelab
This repository is the single source of truth for my Homelab infrastructure. It utilizes Infrastructure-as-Code (IaC) to provision foundational resources that I do not want to host (e.g., KeyVault) and GitOps principles to manage all Kubernetes cluster configurations and workloads.
The base for the repo is my zero touch provisioning repo here
| Component | Technology | Description |
|---|---|---|
| Kubernetes | K3s | Lightweight, edge-optimized Kubernetes |
| GitOps | ArgoCD | App-of-Apps cluster workload bootstrapping |
| IaC | Terraform | Manages external infrastructure state and provisioning. |
| Docs | Zensical | Successor to Material for MkDocs |
├── .github/ # CI/CD pipelines (Docs, Security scans, CI Check for PRs)
├── docs/ # MkDocs source files (ADRs, Runbooks)
├── kubernetes/ # GitOps declarative state following the app of apps pattern
├── terraform/ # To setup SaaS solutions I don't want to host myself
└── ... # Small helper tooling and root files
If you fork the repository or test configurations locally, ensure you have the required developer tooling installed.
- Docker (Required for local CI simulation)
- Just: The primary command runner (brew install just).
- uv: Simply best Python package manager (brew install uv).
- Pre-commit: Git hook framework (brew install pre-commit).
- act: Run GitHub Actions locally (brew install act).
- Google Cloud CLI (gcloud): For local GCP authentication and dirty config ^-^
- Technology tooling obviously too
Clone the repository and initialize the local development environment:
git clone https://github.com/olefSch/homelab.git
cd homelab
pre-commit install
# option to run the docs
uv syncThis project is licensed under the MIT License. See the LICENSE file for details.