Infrastructure Status Dashboard

Live Status 🟒 View Live Status Page β†’ Real-time health monitoring for the Nuclear Lighters multi-site infrastructure. Overview A public status page monitoring 31 endpoints across the entire homelab infrastructure, deployed on Kubernetes with enterprise-grade practices. Monitored Services Group Services πŸ‡³πŸ‡± Netherlands K8s ArgoCD, Grafana, Prometheus, Thanos, Hubble, K8s Dashboard, Goldpinger, SeaweedFS, AWX, Velero πŸ‡¬πŸ‡· Greece K8s ArgoCD, Grafana, Prometheus, Thanos, Hubble, K8s Dashboard, Goldpinger, SeaweedFS πŸ”§ DevOps GitLab (NL/GR), Atlantis (NL/GR) 🌐 Shared Services Nextcloud, Home Assistant πŸ”— External Internet connectivity checks Technical Stack Gatus - Lightweight status page with SQLite persistence Kubernetes - Deployed via OpenTofu/Atlantis GitOps Cilium - Network policies for security cert-manager - Automatic TLS certificates Prometheus - Metrics via ServiceMonitor Architecture Highlights Pod Security Standards: Restricted mode with read-only root filesystem Resource Management: CPU/memory limits enforced Network Isolation: CiliumNetworkPolicy restricting ingress/egress High Availability: Persistent storage on Synology iSCSI GitOps: Full infrastructure-as-code via Atlantis Source Managed as part of the Infrastructure Repository using OpenTofu modules. ...

December 17, 2025 Β· 1 min Β· Kyriakos Papadopoulos
Multi-Site Kubernetes BGP Anycast Architecture

Multi-Site Kubernetes Cluster with BGP Anycast

Designing and building a hybrid Kubernetes cluster spanning four European countries (Netherlands, Switzerland, Norway, Greece) with BGP anycast routing for global traffic distribution and automated failover. Overview Aspect Details Countries Netherlands, Switzerland, Norway, Greece Architecture Hybrid (on-premises + cloud VPS) Routing BGP anycast with personal ASN IPv6 /48 prefix via RIPE LIR Nodes 8 control plane, 12 workers Key Technical Components BGP & Networking Personal ASN registration via RIPE LIR with /48 IPv6 prefix eBGP peering with two upstream transit providers for anycast redundancy iBGP mesh over IPsec/WireGuard tunnels using Cilium BGP control plane NAT64 edge translation enabling IPv6 ingress to IPv4 core infrastructure Site Connectivity Full mesh encrypted tunnels between on-premises (Cisco ASA) and cloud sites (strongSwan) Geo-distributed edge nodes for latency optimization and DDoS resilience IPsec tunnels with automatic failover Kubernetes Platform Cilium CNI with eBPF dataplane BGP control plane for LoadBalancer services Cross-cluster service mesh via Cilium Cluster Mesh Architecture β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ IPv6 Anycast Traffic β”‚ β”‚ (Personal ASN + /48) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Transit Providers β”‚ β”‚ (eBGP - Redundant Path) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β–Ό β”‚ β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Switzerland β”‚ β”‚ Norway β”‚ β”‚ β”‚ Netherlands β”‚ β”‚ Greece β”‚ β”‚ (iFog VPS) β”‚ β”‚(Gigahost VPS) β”‚ β”‚ β”‚ (On-Prem) β”‚ β”‚ (On-Prem) β”‚ β”‚ strongSwan β”‚ β”‚ strongSwan β”‚ β”‚ β”‚ Cisco ASA β”‚ β”‚ Cisco ASA β”‚ β”‚ NAT64+eBGP β”‚ β”‚ NAT64+eBGP β”‚ β”‚ β”‚ 5508-X β”‚ β”‚ 5508-X β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ IPsec Full Mesh (All 4 Sites) β”‚ β”‚ CH ←→ NO ←→ NL ←→ GR ←→ CH ←→ NL... β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Netherlands (NL) β”‚ β”‚ Greece (GR) β”‚ β”‚ nllei01k8s β”‚ β”‚ grskg01k8s β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ 3x Control Plane (HA) β”‚ β”‚ β”‚ β”‚ 3x Control Plane (HA) β”‚ β”‚ β”‚ β”‚ 4x Worker Nodes β”‚ β”‚ β”‚ β”‚ 4x Worker Nodes β”‚ β”‚ β”‚ β”‚ Cilium CNI + iBGP β”‚ β”‚ β”‚ β”‚ Cilium CNI + iBGP β”‚ β”‚ β”‚ β”‚ Proxmox VE β”‚ β”‚ β”‚ β”‚ Proxmox VE β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ PRIMARY SITE │◄───────►│ DR/HA SITE β”‚ β”‚ 192.168.85.0/24 β”‚ Cluster β”‚ 192.168.58.0/24 β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Mesh β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Technology Stack Networking BGP: Personal ASN with /48 IPv6 prefix Transit: Dual upstream providers for redundancy Tunneling: IPsec (Cisco ASA) + strongSwan (cloud) Edge: NAT64 for IPv6β†’IPv4 translation Kubernetes Version: v1.34.2 CNI: Cilium with eBPF dataplane Mesh: Cilium Cluster Mesh for cross-site connectivity Ingress: NGINX with BGP-advertised VIPs Infrastructure On-premises: Proxmox VE, Cisco ASA 5508-X Cloud: iFog (Switzerland), Gigahost (Norway) Storage: SeaweedFS with cross-site replication Skills Demonstrated BGP (Border Gateway Protocol) IPv6 networking and transition technologies IPsec VPN architecture Network engineering and architecture Kubernetes cluster administration Cilium CNI and eBPF Cisco networking Linux system administration High availability clustering Project Status This project combines enterprise networking concepts (BGP, IPsec, dual-stack transition) with modern cloud-native infrastructure (Kubernetes, Cilium, GitOps) in a production homelab environment. ...

December 16, 2025 Β· 3 min Β· Kyriakos Papadopoulos
GitOps Homelab Architecture

GitOps Homelab: Full-Stack Infrastructure as Code

Comprehensive GitOps-driven homelab managing network devices, virtualization, Kubernetes, Docker services, and backup systems through GitLab CI/CD, Atlantis, and Argo CD. Key Accomplishments Hybrid GitOps Architecture Enterprise two-tier model separating platform infrastructure (Atlantis/OpenTofu) from application workloads (Argo CD) with PR-based workflows and auto-sync. Kubernetes Platform 7-node HA cluster (v1.34.2) with Cilium CNI eBPF networking with kube-proxy replacement BGP peering with Cisco ASA for LoadBalancer services Dual storage: NFS (RWX) + Synology iSCSI CSI (RWO) Security & Service Mesh Cilium mTLS with SPIRE for mutual TLS authentication Zero-trust network policies External Secrets Operator syncing credentials from OpenBao to K8s TLS Automation cert-manager with Let’s Encrypt wildcards via Cloudflare DNS-01 AWX scheduled jobs sync certs to Nginx Proxy Manager (94 hosts) Syncthing replication for certificate distribution Observability Stack Prometheus/Grafana/Alertmanager for metrics and alerting Centralized logging: syslog-ng β†’ Loki β†’ Grafana Hubble for L7 flow visualization and network debugging Disaster Recovery Velero + MinIO S3 with automated daily/weekly backups Cross-site replication to Greece DR cluster Docker Fleet 60+ services including GPU AI workloads (Ollama, Stable Diffusion) Media servers, databases, home automation Network Automation Python CI/CD for Cisco IOS/ASA configuration Drift detection and auto-reconciliation Virtualization Proxmox VE with 100+ LXC containers, 20+ VMs All managed as code through GitLab pipelines Architecture Overview β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ GitLab CI/CD β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Atlantis β”‚ β”‚ ArgoCD β”‚ β”‚ β”‚ β”‚ (Platform IaC) β”‚ β”‚ (Applications) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Infrastructure β”‚ β”‚ Workloads β”‚ β”‚ - Kubernetes nodes β”‚ β”‚ - Applications β”‚ β”‚ - Network configs β”‚ β”‚ - Services β”‚ β”‚ - Storage β”‚ β”‚ - ConfigMaps β”‚ β”‚ - Secrets β”‚ β”‚ - Ingress β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Kubernetes Cluster β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Cilium CNI β”‚ β”‚ SPIRE β”‚ β”‚ OpenBao β”‚ β”‚ β”‚ β”‚ + Hubble β”‚ β”‚ mTLS β”‚ β”‚ Secrets β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Prometheus β”‚ β”‚ Loki β”‚ β”‚ Velero β”‚ β”‚ β”‚ β”‚ + Grafana β”‚ β”‚ Logging β”‚ β”‚ Backups β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Technology Stack Category Technologies GitOps GitLab CI/CD, Atlantis, Argo CD IaC OpenTofu/Terraform, Helm Kubernetes v1.34.2, Cilium CNI, SPIRE Secrets OpenBao, External Secrets Operator Monitoring Prometheus, Grafana, Alertmanager, Loki Network Hubble, BGP, Cisco IOS/ASA Backup Velero, MinIO S3 Automation AWX, Python Virtualization Proxmox VE, Docker Skills Demonstrated GitLab CI/CD pipeline design Infrastructure as Code (Terraform/OpenTofu) Argo CD application management Kubernetes cluster administration Docker containerization Helm chart management Prometheus/Grafana observability DevOps/GitOps practices Proxmox virtualization Python automation Cisco networking Linux system administration Core infrastructure for the Nuclear Lighters homelab ...

November 1, 2025 Β· 3 min Β· Kyriakos Papadopoulos
Portfolio Site Architecture

Portfolio Site: Dual-Cluster Hugo Deployment

This portfolio site demonstrates enterprise-grade deployment practices applied to a personal website. Built with Hugo and automatically deployed to two Kubernetes clusters across different countries with content replication. Overview Aspect Details Framework Hugo with PaperMod theme CI/CD GitLab CI/CD (4-stage pipeline) Storage SeaweedFS S3 with cross-site replication Secrets OpenBao with JWT authentication Clusters Netherlands (primary) + Greece (DR) Deployment Fully automatic on git push Architecture The site follows a GitOps workflow where any push to the main branch triggers a complete build and deployment cycle across both geographic locations. ...

December 16, 2025 Β· 4 min Β· Kyriakos Papadopoulos
Multi-site BGP architecture diagram

Building a Multi-Site Kubernetes Cluster with BGP Anycast

The restlessness I had a perfectly stable single-site Kubernetes cluster in the Netherlands. It worked, it was reliable, and by any reasonable measure, it was enough. But I have learned over the years that when things become too stable, too predictable, I start looking for the next challenge; this pattern has followed me throughout my career, moving on whenever circumstances headed toward a stale that was beyond my control to influence. ...

December 18, 2024 Β· 5 min Β· Kyriakos Papadopoulos