Skip to content

πŸ‘‹ Welcome to my Over-Engineered HomeLab Setup! This repository documents my journey of building and managing a playground for exploring the limits of technology. Follow along for projects, configurations, and experiments in Cloud, DevOps, Networking, and Automation.

License

Notifications You must be signed in to change notification settings

phsaurav/Home-Lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

93 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PH's HomeLab

Tech Stack β€’ Directory Overview β€’ Gallery β€’ Road Map

A bare-metal Proxmox infrastructure provisioned using Terraform (IaC) and established with a complete GitOps automation pipeline with ArgoCD and Ansible, hosting a segregated Dev environment with an Ubuntu cluster for continuous experimentation with Cloud, DevOps, Networking, and Automation.

Alongside it has a Production environment consisting of lightweight LXC containers providing essential services, and a lightweight Talos Linux Kubernetes cluster for project and service deployment, focusing on high availability and disaster recovery.

The whole architecture enforces a security-first posture by managing all credentials through HashiCorp Vault, Ansible Vault, and SOPS encryption as necessary.

HomeLab_Arch

Tech Stack

Logo Name Description
Proxmox VE The backbone of this homelab is an open-source server virtualization platform. All LXC containers and VMs are running on this environment.
Terraform This is the Infrastructure As Code tool that provisions assets inside Proxmox VE and supporting assets in the Cloud. Here, these provisions create two separate environments, Dev and Prod. Read this doc to learn more about the implementation Here
Ubuntu Server Base OS for development VMs.
Debian Base OS for LXC Containers.
Talos Talos Linux is a Kubernetes-optimized Linux distro. This is the base OS for the main Kubernetes cluster in the Prod environment. Read this doc to learn more about the implemenation Here
Ansible Configuration management tool for VMs and Containers. Read this doc to learn more about the implemenation Here
ArgoCD GitOps tool built to deploy applications to Kubernetes. Read this doc to learn more about the implemenation Here
Kubernetes Container-orchestration system, the backbone of dev and prod environment
Helm Package Manager for Kubernetes
Docker Primary Containerization Platform
Grafana Kubernetes cluster observation and visualization tool.
Prometheus Kubernetes cluster log aggregation tool.
Hashicorp Vault Secret management system for the Homelab. Integrated with ArgoCD via ArgoCD Vault Plugin.
Nginx Kubernetes Ingress Controller.
Pi-hole Local DNS server for the HomeLab.
Cloudflare DNS Provider and Tunnel.
Harbor Self-hosted Image Registry Management Tool
Gitea Self-hosted Git Repository Hosting

Directory Overview

HomeLab/
β”œβ”€β”€ .envrc                           # Direnv variables automation
β”œβ”€β”€ .gitignore                       # Git ignore patterns
β”œβ”€β”€ .sops.yaml                       # SOPS encryption configuration
β”œβ”€β”€ LICENSE                          # AGPL open source license
β”œβ”€β”€ README.md                        # Repository main documentation
β”œβ”€β”€ ansible/                         # Ansible automation configurations
β”‚   β”œβ”€β”€ ansible.cfg                  # Ansible common configuration
β”‚   β”œβ”€β”€ inventories/                 # Inventory configurations
β”‚   β”‚   β”œβ”€β”€ dev/                     # Development inventory
β”‚   β”‚   └── prod/                    # Production inventory
β”‚   β”œβ”€β”€ playbooks/                   # Ansible playbooks
β”‚   β”‚   β”œβ”€β”€ argocd-dev.yaml          # ArgoCD setup for dev server
β”‚   β”‚   β”œβ”€β”€ cluster_init.yaml        # Control plane initialization
β”‚   β”‚   β”œβ”€β”€ join_workers.yaml        # Worker nodes joining
β”‚   β”‚   β”œβ”€β”€ nfs_setup.yaml           # NFS Proxmox setup
β”‚   β”‚   β”œβ”€β”€ site.yaml                # Initial setup for all hosts
β”‚   β”‚   β”œβ”€β”€ support_tools.yaml       # Optional support tools
β”‚   β”‚   └── vault_setup.yaml         # Vault production LXC setup
β”‚   β”œβ”€β”€ roles/                       # Ansible roles
β”‚   β”‚   β”œβ”€β”€ argocd/                  # ArgoCD role
β”‚   β”‚   β”œβ”€β”€ base_setup/              # Base setup role
β”‚   β”‚   β”œβ”€β”€ containerd/              # Containerd role
β”‚   β”‚   β”œβ”€β”€ control_plane/           # Control plane role
β”‚   β”‚   β”œβ”€β”€ kube_packages/           # Kubernetes packages role
β”‚   β”‚   β”œβ”€β”€ nfs_client/              # NFS client role
β”‚   β”‚   β”œβ”€β”€ node_join/               # Node joining role
β”‚   β”‚   └── support_tools/           # Support tools role
β”‚   β”œβ”€β”€ secrets.yaml                 # Ansible Vault secrets
β”‚   └── readme.md                    # Ansible documentation
β”œβ”€β”€ argocd/                          # ArgoCD configurations
β”‚   β”œβ”€β”€ apps/                        # Application manifests
β”‚   β”‚   β”œβ”€β”€ gitea/                   # Gitea application
β”‚   β”‚   β”œβ”€β”€ harbor/                  # Harbor application
β”‚   β”‚   β”œβ”€β”€ monitoring/              # Prometheus + Grafana app
β”‚   β”‚   └── nfs_provisioner/         # NFS storage provisioner
β”‚   β”œβ”€β”€ base/                        # ArgoCD base project configuration
β”‚   β”œβ”€β”€ environments/                # Environment-specific configurations
β”‚   β”‚   β”œβ”€β”€ dev/                     # Development environment
β”‚   β”‚   └── prod/                    # Production environment
β”‚   └── readme.md                    # ArgoCD implementation documentation
β”œβ”€β”€ docs/                            # Detailed feature-specific documentation
β”œβ”€β”€ proxmox/                         # Terraform IaC for Proxmox
β”‚   β”œβ”€β”€ environments/                # Infrastructure segments
β”‚   β”‚   β”œβ”€β”€ dev/                     # Development segment
β”‚   β”‚   └── prod/                    # Production segment
β”‚   β”œβ”€β”€ modules/                     # Terraform modules
β”‚   β”‚   β”œβ”€β”€ lxc/                     # LXC container module
β”‚   β”‚   β”œβ”€β”€ talos-k8s/               # Talos dynamic K8s cluster module
β”‚   β”‚   β”œβ”€β”€ talos-vm/                # Talos VM module
β”‚   β”‚   β”œβ”€β”€ ubuntu-k8s/              # Ubuntu dynamic K8s cluster module
β”‚   β”‚   └── ubuntu-vm/               # Ubuntu VM module
β”‚   └── readme.md                    # Proxmox Terraform infrastructure documentation
β”œβ”€β”€ scripts/                         # Automation scripts
β”‚   └── check_prometheus.sh          # K8s Prometheus log aggregation check
β”œβ”€β”€ talos/                           # Talos K8s cluster configurations
β”‚   β”œβ”€β”€ _out/                        # Generated configurations
β”‚   β”‚   β”œβ”€β”€ decrypt.sh               # Script to decrypt sensitive configurations
β”‚   β”‚   β”œβ”€β”€ encrypt.sh               # Script to encrypt sensitive configurations
β”‚   β”‚   └── ...                      # Other generated configuration files
β”‚   β”œβ”€β”€ patches/                     # Patches for control plane and workers
β”‚   β”œβ”€β”€ secrets.yaml                 # Ansible Vault secrets
β”‚   └── readme.md                    # Talos documentation
└── vault/                           # HashiCorp Vault configurations
    └── secret.yaml.enc              # Vault encrypted configuration

Gallery

Proxmox Dashboard
Screenshot 2025-10-19 at 1 29 23β€―AM-min
Grafana Cluster Monitoring Dashboard
Screenshot 2025-10-19 at 1 04 55β€―AM-min
GitOps: ArgoCD
Screenshot 2025-10-19 at 1 12 15β€―AM-min
Secret Management: Hashicorp Vault
Screenshot 2025-10-19 at 1 08 26β€―AM-min
Local DNS Management: Pi-hole
Screenshot 2025-10-19 at 1 09 25β€―AM-min
Gitea Self-hosted Git Repository Management
Screenshot 2025-10-19 at 1 22 52β€―AM-min
Harbor Self-hosted Image Repository
Screenshot 2025-10-19 at 1 37 42β€―AM-min
TurnKey File Server
Screenshot 2025-10-19 at 1 13 30β€―AM-min
Gorgeous Bare-Metal Physical Server :-)
540984190_1901704603707289_7904067712713427409_n

Road Map

  • Setup ProxMox VE on baremetal environment
  • Automated bare metal provisioning with Terraform
  • Dev & Prod environment provisioning with Terraform
  • Modular architecture, easy to add or remove features/components
  • Automated Kubernetes Dev Cluster Setup with Ansible
  • Automated Kubernetes Prod Cluster Setup with Talos config
  • LXC Container Service provisioning with Terraform
  • Installing and managing applications using GitOps ArgoCD
  • HashiCorp Vault setup for secret management
  • Pi-hole local DNS server and Turnkey file server setup
  • NFS file system setup for Kubernetes distributed storage
  • Grafana and Prometheus setup for observability
  • Automated backup and restore with rsync
  • Gitea and Harbor setup
  • NGINX ingress setup
  • Add Homepage Centralized Dashboard
  • ELK Stack Setup in Dev cluster
  • Automatic rolling upgrade for OS and Kubernetes
  • Automated certificate management for full environment
  • DNS failover to pilot-light AWS infra disaster management setup for Prod cluster
  • Ensuring 99.9% availability for Prod cluster

About

πŸ‘‹ Welcome to my Over-Engineered HomeLab Setup! This repository documents my journey of building and managing a playground for exploring the limits of technology. Follow along for projects, configurations, and experiments in Cloud, DevOps, Networking, and Automation.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published