Skip to content

Mosher-Labs/homelab-gitops

Repository files navigation

homelab-gitops

GitHub branch status GitHub Issues GitHub last commit GitHub repo size Libraries.io dependency status for GitHub repo GitHub License GitHub Sponsors

Introduction

This repository contains the complete Infrastructure as Code (IaC) for the Mosher Labs homelab Kubernetes cluster, managed via GitOps principles using ArgoCD.

🏗️ Architecture

  • Cluster: 3-node k3s cluster
  • GitOps Tool: ArgoCD
  • Package Manager: Helm
  • Ingress: Cloudflare Tunnels (*.benniemosher.dev)
  • Storage: NFS (Drobo)

📁 Repository Structure

homelab-gitops/
├── bootstrap/          # ArgoCD installation and self-management
│   └── argocd/
├── infrastructure/     # Core cluster services
│   ├── cert-manager/
│   └── ingress-nginx/
└── apps/              # Applications
    ├── hello-world/
    ├── pihole/
    ├── homebridge/
    └── jellyfin/

🚀 Bootstrap Process

  1. Install ArgoCD via Helm (one-time bootstrap)
  2. Apply ArgoCD Application to manage itself from this repo
  3. All subsequent changes via Git commits

📊 Applications

App Purpose Status
ArgoCD GitOps CD tool ✅ Active
hello-world Testing 🚧 In Progress
PiHole DNS/Ad-blocking 📋 Planned
Homebridge HomeKit automation 📋 Planned
Jellyfin Media server 📋 Planned

🔧 Local Development

# Set your kubeconfig
export KUBECONFIG=~/k3s.yaml

# Watch ArgoCD apps
k9s

# Check ArgoCD status
argocd app list

📚 References

🔰 Contributing

Upon first clone, install the pre-commit hooks.

pre-commit install

To run pre-commit hooks locally, without a git commit.

pre-commit run -a --all-files

To update pre-commit hooks, this ideally should be ran before a pull request is merged.

pre-commit autoupdate

Sponsor this project

 

Packages

 
 
 

Contributors