Welcome to my HomeLab infrastructure repository! This repository showcases my personal homelab setup, infrastructure automation, and technical capabilities.
This repository contains documentation, diagrams, and code for my homelab environment. It demonstrates my skills in:
- Network design and architecture
- Infrastructure as Code (IaC) using Terraform
- Configuration management with Ansible
- Kubernetes cluster deployment and orchestration
- Cloud-init automated provisioning
- Automation and scripting
- System administration and DevOps practices
The latest updates include a full Kubernetes cluster deployment using Terraform and cloud-init:
- Kubernetes v1.29 cluster with one master and two worker nodes
- Containerd as the container runtime (following Kubernetes 1.24+ best practices)
- Calico CNI for pod networking
- Automated provisioning via cloud-init configuration
- Terraform modules for VM deployment on Proxmox
- CI/CD workflows for infrastructure validation
HomeLab/
βββ .github/
β βββ workflows/ # GitHub Actions CI/CD pipelines
β βββ ISSUE_TEMPLATE/ # Issue templates for bug reports and features
βββ docs/ # Documentation and guides
β βββ overview.md # Architecture overview
β βββ runbook.md # Deployment and operations guide
β βββ network-setup.md # Network configuration
β βββ service-deployment.md # Service deployment guides
β βββ backup-strategy.md # Backup procedures
β βββ security.md # Security guidelines
βββ diagrams/ # Network and infrastructure diagrams
β βββ network/ # Network topology diagrams
β βββ infrastructure/ # Infrastructure architecture diagrams
βββ terraform/ # Infrastructure as Code (Terraform)
β βββ deployments/ # Deployment configurations
β β βββ home-lab/ # Home lab deployment (K8s cluster)
β βββ modules/ # Reusable Terraform modules
β βββ compute/ # Compute resource modules
β βββ pve-cloudinit-vm/ # Proxmox cloud-init VM module
βββ ansible/ # Configuration management
β βββ playbooks/ # Ansible playbooks
β βββ roles/ # Custom roles
β βββ inventory/ # Inventory files
βββ scripts/ # Utility scripts and automation
βββ backup/ # Backup scripts
βββ monitoring/ # Monitoring scripts
βββ deployment/ # Deployment automation
βββ cloud-init/ # Cloud-init configurations for K8s
- Virtualization: Proxmox, Docker, Kubernetes
- Infrastructure as Code: Terraform
- Configuration Management: Ansible
- Networking: VLANs, OpnSense, UniFi
- Monitoring: Prometheus, Grafana
- Storage: NAS, ZFS
- Scripting: Bash, Python
- Terraform >= 1.14
- Ansible >= 2.9
- Python >= 3.8
- Proxmox VE (for infrastructure deployment)
- kubectl (for Kubernetes cluster management)
- Docker (optional, for local testing)
-
Clone this repository:
git clone https://github.com/krakenhavoc/HomeLab.git cd HomeLab -
Review the documentation:
- Start with Architecture Overview
- Follow the Runbook for deployment steps
-
Deploy Kubernetes cluster:
# Navigate to terraform deployment cd terraform/deployments/home-lab # Initialize Terraform terraform init # Review planned changes terraform plan # Apply configuration terraform apply
-
Access your cluster:
# SSH to master node ssh root@k8s-master-1 # Check cluster status kubectl get nodes kubectl get pods -A
For local testing and development:
# Run containerized applications
docker run -d -p 8080:80 nginxDeploy an application to your cluster:
# Create a deployment
kubectl create deployment nginx --image=nginx
# Expose the deployment
kubectl expose deployment nginx --port=80 --type=NodePort
# Check the service
kubectl get services- Core network topology with VLAN segmentation
- Firewall rules and security policies (OpnSense)
- DNS and DHCP configuration
- UniFi network management
- Proxmox VE hypervisor for virtualization
- Kubernetes cluster (1 master + 2 worker nodes)
- Containerd runtime
- Calico CNI networking
- Cloud-init automated provisioning
- Virtual machine templates and configurations
- Resource allocation and auto-scaling
- Kubernetes workloads (microservices, applications)
- Media servers (Plex, Jellyfin)
- Development environments
- Monitoring stack (Prometheus, Grafana)
- Logging and observability
- Backup and disaster recovery solutions
Detailed documentation for each component can be found in the docs/ directory:
- Architecture Overview - High-level system architecture and topology
- Runbook - Deployment procedures and troubleshooting
- Network Setup - Network configuration details
- Service Deployment - Service deployment guides
- Backup Strategy - Backup procedures and recovery
- Security Guidelines - Security best practices
- Hypervisor: Proxmox VE 7.x+
- Operating Systems: Ubuntu 22.04 LTS (cloud-init images)
- Container Runtime: Containerd 1.6+
- Kubernetes: v1.29
- Terraform: 1.0+
- Ansible: 2.9+
- HCL (Terraform) - Infrastructure as Code
- YAML - Cloud-init configurations, Kubernetes manifests, Ansible playbooks
- Bash - Automation scripts
- Python - Utility scripts and tooling
- Markdown - Documentation
- Secrets are managed using environment variables and secure vaults
- No sensitive credentials are stored in this repository
- Infrastructure follows the principle of least privilege
- Regular security updates and patch management
- Implement GitOps workflows (ArgoCD/Flux)
- Expand CI/CD pipelines for automated testing
- Add Helm charts for application deployments
- Enhance monitoring with custom dashboards
- Implement log aggregation (ELK/Loki)
- Automated disaster recovery procedures
- Service mesh integration (Istio/Linkerd)
We welcome contributions! Please see our Contributing Guide for details on:
- Code of conduct
- Development workflow
- Pull request process
- Code style guidelines
To report bugs or request features, please use our issue templates.
See CHANGELOG.md for a detailed history of changes and releases.
This project is licensed under the MIT License - see the LICENSE file for details.
This project is for portfolio and educational purposes.
krakenhavoc
- GitHub: @krakenhavoc
For questions, suggestions, or collaboration opportunities:
- Open an issue
- Start a discussion
- Reach out through GitHub
β Star this repository if you find it helpful or interesting!
This repository is actively maintained and regularly updated with new features and improvements.