# Homelab Infrastructure Infrastructure-as-Code repository for my personal homelab and Kubernetes environment. This repository contains configuration files, monitoring stack definitions, alerting rules, Talos Linux cluster configuration, exporters, ingress resources and various infrastructure-related manifests used across my environment. ## Main Technologies - Kubernetes - Talos Linux - Prometheus - Grafana - Alertmanager - Blackbox Exporter - SNMP Exporter - IPMI Exporter - Proxmox VE - MetalLB - Ingress NGINX - Cloudflare Tunnel - Ansible --- # Repository Structure ## ansible/ Ansible playbooks and inventory files. Examples: - package installation - node-exporter deployment - server automation --- ## k8s/ Kubernetes manifests and infrastructure configuration. ### cloudflare/ Cloudflare Tunnel manifests. ### homepage/ Homepage dashboard manifests. ### ingress-nginx/ Ingress resources for exposed services. ### longhorn/ Longhorn distributed storage configuration. ### metallb-system/ MetalLB load balancer configuration. ### monitoring/ Monitoring stack configuration. Contains: - Prometheus scrape configs - exporter configs - Prometheus alert rules - Alertmanager Discord integration - uptime-kuma config ### others/ Miscellaneous manifests. ### security/ Authentication and security-related configs. --- ## talos/ Talos Linux cluster configuration. Contains: - machine configs - patches - cluster bootstrap configs - kubeconfig - talosconfig --- # Monitoring Stack The monitoring stack includes: - Prometheus - Grafana - Alertmanager - SNMP monitoring - Blackbox ICMP monitoring - IPMI monitoring - Discord alerting Alerting covers: - host availability - interface utilization - packet loss - scrape failures - CPU/RAM pressure - Kubernetes health - Proxmox monitoring --- # Goals Main goals of this homelab: - infrastructure automation - observability - Kubernetes learning - monitoring and alerting - network engineering - high availability experiments - infrastructure testing - self-hosted services --- # Notes This repository intentionally excludes secrets and sensitive credentials using `.gitignore`. Some manifests may require environment-specific modifications before deployment.