Skip to content
🏠

My Homelab

This website runs on a self-hosted Kubernetes cluster I designed, built, and maintain. It's not hosted on Vercel or AWSβ€”it's running on enterprise-level hardware in my home, demonstrating real-world DevOps skills.

3
K8s Nodes
20+
Services
39
Releases
99.9%
Uptime
0
Exposed Ports
πŸ“‘

Live Infrastructure Status

Self-hosted monitoring powered by Uptime Kuma

Portfolio Site

OPERATIONAL
99.9%
7-Day Uptime

Overall Infrastructure

ALL SYSTEMS GO
20+
Services Running
View Full Status Dashboard
Monitored 24/7 β€’ 1-minute intervals β€’ self-hosted

If you're viewing this page, the infrastructure is running. For detailed uptime history and service-level monitoring, visit the live status dashboard above.

WHY HOMELAB

Why Homelab?

πŸ“š

Learning

You can't truly understand Kubernetes by reading docs. Breaking things at 2am and fixing them teaches more than any certification course.

🎯 Target: CKA certification by September 2026

πŸ”’

Data Privacy

Cloud providers have access to your data. Self-hosted means photos, documents, and services stay on hardware you physically control.

βœ“ No vendor lock-in, no surprise pricing changes

"If a company can host it on AWS, I can host it on three mini PCs in my closet β€” for a fraction of the cost and 100% of the learning."

PERFORMANCE

Performance Metrics

Real-world performance benchmarks from production deployment

⚑

Lighthouse Scores

98
Performance
First Contentful Paint: 0.9s
βœ…
100
Accessibility
WCAG 2.1 AA compliant
βœ…
100
Best Practices
Security & standards
βœ…
100
SEO
Search engine optimized
βœ…

⭐ Average Score: 99.5 / 100

πŸ“Š

Core Web Vitals

Largest Contentful Paint (LCP)1.2s

Target: < 2.5s βœ… Good

First Input Delay (FID)8ms

Target: < 100ms βœ… Good

Cumulative Layout Shift (CLS)0.02

Target: < 0.1 βœ… Good

Time to First Byte (TTFB)180ms

Target: < 600ms βœ… Good

All metrics pass Google's "Good" thresholds
Measured on Cloudflare's global CDN network

146 kB
First Load JS
Next.js optimized bundle
< 1s
Page Load Time
With Cloudflare CDN caching
2
Static Pages
Home + Homelab
ARCHITECTURE

Architecture Overview

πŸ“Š

Network Flow

From your browser to my homelab

Public Access

Internet β†’ Cloudflare Tunnel β†’ Gateway API β†’ Services

Internet
↓
CloudflareTunnel
↓
GatewayAPI
↓
Ghost Blog
blog.rommelporras.com
Portfolio
www.rommelporras.com
Invoicetron
invoicetron.rommelporras.com
Status Page
status.rommelporras.com

Private Access

Tailscale VPN β†’ Internal Services

TailscaleVPN Mesh
↓
Grafana
Dashboards
AdGuard
DNS
Homepage
Dashboard
Ollama
AI
Karakeep
Bookmarks

Infrastructure

3-node bare metal Kubernetes cluster

Lenovo M80q
k8s-cp1
10.10.30.11
Lenovo M80q
k8s-cp2
10.10.30.12
Lenovo M80q
k8s-cp3
10.10.30.13
Control Plane
kubeadm + stacked etcd
Networking
Cilium CNI (eBPF)
Storage
Longhorn NVMe, 2x replication
VIP
kube-vip 10.10.30.10
Public path (Cloudflare Tunnel)Private path (Tailscale)Infrastructure
SECURITY

Defense in Depth

Three layers of security protecting the infrastructure

🌐

Layer 1: Network Perimeter

Cloudflare Edge Protection

  • βœ“DDoS protection and WAF at Cloudflare edge
  • βœ“Zero exposed ports β€” all traffic through encrypted Cloudflare Tunnel
  • βœ“Zero-trust access model (no direct connections)
πŸ”₯

Layer 2: VLAN Segmentation

OPNsense Firewall

  • βœ“8 VLANs with strict inter-VLAN firewall rules
  • βœ“IoT and Guest networks isolated from server VLAN
  • βœ“Stateful inspection with IDS/IPS (Suricata)
🐝

Layer 3: Cilium Micro-Segmentation

eBPF Network Policies

  • βœ“CiliumNetworkPolicy controls pod-to-pod traffic
  • βœ“L3/L4/L7 filtering (IP, port, HTTP path)
  • βœ“eBPF enforcement at kernel level (faster than iptables)
CI/CD PIPELINE

CI/CD Pipeline

GitFlow branching with multi-environment deployment

feature/*→develop→[build]→deploy:dev→deploy:staging→main→deploy:prod
EnvironmentNamespaceTriggerURL
Devportfolio-devPush to develop(internal only)
Stagingportfolio-stagingManual triggerbeta.rommelporras.com
Prodportfolio-prodMerge to mainwww.rommelporras.com
HARDWARE

Hardware Stack

☸️

Kubernetes Nodes (x3)

Lenovo ThinkCentre M80q

i5-10400T
6 cores / 12 threads
16GB
DDR4 RAM
512GB
NVMe SSD

Why M80q? Enterprise-grade reliability, uniform cores (important for K8s scheduling), low power (~35W TDP), excellent value on the used market.

πŸ›‘οΈ

Topton N100

Intel N100, 16GB RAM

Proxmox + OPNsense

πŸ’Ύ

Dell OptiPlex 3090

i5-10500T, 32GB RAM

Proxmox + OMV NAS

πŸ“‘

LIANGUO LG-SG5T1

5x 2.5GbE + 10G SFP+

Managed, VLAN support

⚑

CyberPower UPS

1600VA / 1000W

~45 min runtime

SERVICES

Services Running

20+ services across 18 namespaces β€” all real, all running

βš™οΈ Platform Infrastructure

Kubernetesv1.35.0

3-node HA control plane with stacked etcd

Ciliumv1.18.6

eBPF-based CNI replacing kube-proxy

Longhornv1.10.1

Distributed block storage (2x replication on NVMe)

kube-vipv1.0.4

HA virtual IP for API server (ARP mode)

Gateway APIv1.4.1

Kubernetes-native ingress with Cilium

cert-managerv1.19.2

Automated Let's Encrypt wildcard TLS certificates

Metrics Serverv0.8.0

Resource metrics for HPA and kubectl top

🌐 Networking & Access

Cloudflare Tunnel2026.1.1

HA tunnel (2 replicas) β€” zero exposed ports

Tailscale Operatorv1.94.1

WireGuard subnet router for private remote access

AdGuard Homev0.107.71

Primary DNS server for all VLANs (10.10.30.53)

πŸ“Š Observability Stack

Prometheusv0.88.0

Metrics collection with 177+ default alerting rules

Grafanakube-prometheus-stack

Dashboards for every service + infrastructure

Lokiv3.6.3

Log aggregation (paired with Grafana)

Alloyv1.12.2

Log collector (Grafana agent, replaces Promtail)

Alertmanagerv0.30.1

Alert routing to Discord + Email

Blackbox Exporterv0.28.0

HTTP/TCP probes for endpoint monitoring

Uptime Kumav2.0.2

Public status page at status.rommelporras.com

NUT Exporter3.1.1

UPS monitoring (CyberPower CP1500)

OTel Collectorcustom

OpenTelemetry data collection (Claude Code metrics)

🦊 CI/CD

GitLab CEv18.8.2

Self-hosted DevOps platform (web, sidekiq, gitaly)

GitLab Runnerv18.8.0

Kubernetes executor for CI/CD jobs

Container Registryvia GitLab

Docker image registry at registry.k8s.rommelporras.com

πŸš€ Applications

Ghost Blog6.14.0

Blog with MySQL + Tinybird analytics

blog.rommelporras.com
Ghost Blog (dev)6.14.0

Theme development environment

PortfolioNext.js 16.1.0

This website (3-env CI/CD: dev/staging/prod)

www.rommelporras.com
InvoicetronNext.js 16.1.0

Invoice processing (Bun + Prisma + PostgreSQL)

invoicetron.rommelporras.com
Ollama0.15.6

Local LLM inference (CPU): qwen3, moondream, gemma3

Karakeep0.30.0

AI bookmark manager (Chrome crawler + Meilisearch + Ollama)

Homepagev1.9.0

Internal dashboard (2 replicas)

MySpeed1.0.9

Internet speed test tracker (historical)

Firefox Browserlatest

Persistent browser via KasmVNC

πŸ’Ύ Databases

MySQL8.4.8

Ghost Blog (dev + prod)

PostgreSQL18-alpine

Invoicetron

Meilisearchv1.13.3

Karakeep (full-text search)

SQLiteembedded

Uptime Kuma, Karakeep

πŸ–₯️ Additional Infrastructure

These services run outside Kubernetes but are part of the homelab ecosystem.

Proxmox VE9.1.4

Hypervisor on Dell 3090

OPNsense25.7.5

Firewall / router (Proxmox VM)

OpenMediaVault7.6.0

NAS / NFS storage

Immichlatest

Photo management

TIMELINE

Release Timeline

39 releases in ~1 month β€” from empty repo to full production stack

39Total Releases
~1 moTime Span
15Major Milestones
FoundationInfrastructureMonitoringNetworkingCI/CDApplicationsAI/ML
v0.1.0Jan 12, 2026
Project Setup
Foundation
v0.2.0Jan 16, 2026
Kubernetes Cluster Bootstrap
Bootstrap
v0.3.0Jan 17, 2026
Storage Infrastructure
Storage
v0.4.0Jan 20, 2026
Observability Stack
Monitoring
v0.5.0Jan 20, 2026
Alerting (Discord + Email)
Alerting
v0.6.0Jan 22, 2026
Home Services
Workloads
v0.7.0Jan 23, 2026
Cloudflare Tunnel HA
Networking
v0.8.0Jan 24, 2026
GitLab CI/CD Platform
CI/CD
v0.10.0Jan 28, 2026
Portfolio CI/CD (3-env)
CI/CD
v0.11.0Feb 1, 2026
Ghost Blog
Applications
v0.14.0Feb 5, 2026
Invoicetron
Applications
v0.17.0Feb 9, 2026
Ghost Web Analytics
Enhancement
v0.20.0Feb 11, 2026
Ollama Local AI
AI/ML
v0.21.0Feb 12, 2026
Karakeep Migration
Applications
v0.22.0Feb 13, 2026
Tailscale Operator
Networking
NETWORK

Network Segmentation

Enterprise-level network design with 8 isolated VLANs for security, performance, and separation of concerns. Each VLAN has custom firewall rules enforcing the principle of least privilege.

VLANNameSubnetPurposeSecurity
10LAN10.10.10.0/24Trusted wired devicesHigh (Full Access)
20TRUSTED_WIFI10.10.20.0/24Trusted wireless (SSID: Mugiwara)High (Full Access)
30SERVERS10.10.30.0/24Internal VMs and LXCsHigh (Backend)
40IOT10.10.40.0/24IoT devices (SSID: Mugiwara-IOT)Low (Internet-Only)
50DMZ10.10.50.0/24Public-facing services (Cloudflare Tunnel)Medium (DMZ)
60GUEST192.168.0.0/24Guest devices (SSID: Mugiwara-Guest)Low (Internet-Only)
69MGMT10.10.69.0/24Proxmox host managementCritical (Admin-Only)
70AP_TRUNK10.10.70.0/24OpenWRT AP managementMedium (AP Config)
πŸ›‘οΈ
Defense in Depth
Compromised IoT or Guest devices cannot access internal services (SERVERS VLAN) or management interfaces (MGMT VLAN). Firewall rules enforce strict inter-VLAN policies.
TECH STACK

Technology Stack

A modern DevOps stack running 24/7, organized by architectural layer.

πŸ“¦Layer 1: Hypervisor

  • β€’Proxmox VE 9.1.4 - Type-1 bare-metal hypervisor
  • KVM for VMs, LXC for containers, web-based management

πŸ”₯Layer 2: Firewall & Routing

  • β€’OPNsense 25.7.5 - Enterprise firewall/router
  • Dual WAN, 8 VLANs, IDS/IPS (Suricata), WireGuard VPN
  • β€’OpenWRT - Custom WiFi firmware

🌐Layer 3: DNS & Ad Blocking

  • β€’AdGuard Home - Network-wide ad blocking
  • DoH/DoT encryption, local DNS rewrites, DNSSEC validation

πŸ”€Layer 4: Reverse Proxy

  • β€’Cilium Gateway API - Kubernetes-native ingress
  • cert-manager + Let's Encrypt DNS-01, wildcard certs (*.k8s.rommelporras.com)

πŸš‡Layer 5: Tunneling & CDN

  • β€’Cloudflare Tunnel - Zero-trust tunnel (cloudflared)
  • Global CDN (200+ PoPs), DDoS protection, WAF, automatic SSL

☸️Layer 6: Applications

  • β€’Kubernetes-managed apps - Portfolio, Ghost blog, GitLab CI/CD, Homepage
  • β€’Monitoring & Status - Uptime Kuma (public status page), Cloudflare Tunnel (HA)
  • β€’DNS - AdGuard Home (primary for all VLANs)
  • β€’NAS services - Immich, OMV (on Dell 3090, running on Proxmox)
🎯

The Meta-Project

You're looking at it right now.

This portfolio website (rommelporras.com) is not hosted on Vercel, Netlify, or AWS. It runs on the exact infrastructure described above.

1
Development
Local WSL2 environment β†’ git push to develop branch
2
CI Pipeline
GitLab Runner builds Docker image with DinD, pushes to registry
3
Deploy
Automated kubectl apply to K8s namespace (dev/staging/prod)
4
Serve
nginx pod serves static files, Cilium Gateway API handles routing
5
Expose
Cloudflare Tunnel β†’ rommelporras.com (SSL, CDN, DDoS protection)
~3 min
Automated Pipeline Time
$0/mo
Hosting Cost
SKILLS

Skills Demonstrated

☸️Kubernetes / Container Orchestration

  • βœ“kubeadm cluster bootstrap (HA, stacked etcd)
  • βœ“Cilium CNI with eBPF kube-proxy replacement
  • βœ“Gateway API (replacing deprecated Ingress)
  • βœ“Longhorn distributed storage
  • βœ“RBAC and ServiceAccount security

πŸš€DevOps / SRE

  • βœ“GitFlow branching with environment promotion
  • βœ“Multi-environment CI/CD (dev β†’ staging β†’ prod)
  • βœ“Docker multi-stage builds
  • βœ“Kubernetes rolling deployments

πŸ“ŠObservability

  • βœ“Prometheus metrics and alerting rules
  • βœ“Grafana dashboards
  • βœ“Loki centralized logging
  • βœ“Multi-channel alerting (Discord + Email)

🌐Networking

  • βœ“VLAN segmentation (8 VLANs)
  • βœ“Cilium NetworkPolicy (L3/L4/L7)
  • βœ“Cloudflare Tunnel (zero-trust)
  • βœ“TLS automation (cert-manager + Let's Encrypt)

⚑High Availability

  • βœ“3-node control plane with kube-vip VIP
  • βœ“etcd quorum (3-node)
  • βœ“Longhorn 2x replication
  • βœ“UPS with graceful shutdown

πŸ”’Security

  • βœ“Zero exposed ports (Cloudflare Tunnel)
  • βœ“CiliumNetworkPolicy for egress control
  • βœ“Environment-scoped RBAC
  • βœ“Pod Security Standards enforcement
COST COMPARISON

Cost Comparison

Enterprise infrastructure at homelab prices

☁️ AWS Equivalent

Region: ap-southeast-1 (Singapore)

  • 3x t3.xlarge EC2$463/mo
  • 1.5TB EBS gp3$144/mo
  • 2TB S3 Standard$50/mo
  • ALB + ACM$21/mo
  • EKS Control Plane$73/mo
  • ECR$1/mo
  • CodePipeline + CodeBuild$6/mo
  • CloudWatch$8/mo
Total~$766/mo

🏠 Homelab

  • Electricity (~100W)~$17/mo
  • Cloudflare (free tier)$0/mo
  • Tailscale (free personal)$0/mo
  • Domain~$1/mo

~100W covers all devices: 3 K8s nodes, Dell 3090 NAS, firewall, UPS, switch, 2 WiFi APs, 2 modems

Total~$17/mo
$1,028
Hardware Investment
~1.4 months
Break-even
$749/mo
Monthly Savings
$8,988/yr
Annual Savings

Hardware: 3x Lenovo M80q (~$310) + Dell 3090 NAS (~$302) + Topton N100 firewall (~$164) + CyberPower UPS (~$149) + TP-Link Archer A6 (~$34) + TP-Link AX1500 (~$45) + LIANGUO 2.5GbE switch (~$24)

πŸ’‘

Why This Comparison Matters for DevOps Work

For Personal Projects: Running services at home eliminates monthly cloud bills while providing hands-on experience with production-grade infrastructure.

For Enterprise Work: Understanding cloud costs deeply helps me make informed infrastructure decisions for clients. Managing physical hardware, networking, and virtualization provides comprehensive knowledge that pure cloud-only engineers often lack.

Want to discuss my homelab setup?

I'm happy to talk about architecture decisions, security strategies, lessons learned, and how this experience translates to enterprise environments.