Infrastructure Overview¶
Tower Fleet infrastructure is organized in distinct layers, from physical hardware up through virtualization to the Kubernetes orchestration platform.
Infrastructure Layers¶
┌─────────────────────────────────────────────────────────┐
│ Applications Layer │
│ (Home Portal, Money Tracker, RMS, Arr-Stack, etc.) │
└─────────────────────────────────────────────────────────┘
▲
│
┌─────────────────────────────────────────────────────────┐
│ Kubernetes Orchestration Layer │
│ (k3s cluster, Supabase, MetalLB, Longhorn) │
└─────────────────────────────────────────────────────────┘
▲
│
┌─────────────────────────────────────────────────────────┐
│ Virtualization & Compute Layer │
│ (Proxmox, LXC Containers, VMs) │
└─────────────────────────────────────────────────────────┘
▲
│
┌─────────────────────────────────────────────────────────┐
│ Physical Infrastructure Layer │
│ (Network, Storage, Compute Hardware) │
└─────────────────────────────────────────────────────────┘
Physical Infrastructure¶
Network: - Router/Firewall: OPNsense - Primary subnet: 10.89.97.0/24 - VLANs for network segmentation
Storage:
- ZFS on Proxmox host
- NAS: LXC 101 serving /vault via NFS
- Distributed storage: Longhorn in k3s cluster
Compute: - Proxmox VE hypervisor on physical server - ~23 LXC containers for various services - 5 VMs (arr-stack, k3s cluster nodes, PC)
Virtualization Layer¶
Hypervisor: Proxmox VE 8.x - Web UI: https://10.89.97.xxx:8006 (IP varies by host) - Manages both LXC containers and KVM virtual machines
LXC Containers:
- Lightweight virtualization for services
- Direct filesystem access via //rpool/data/subvol-<ID>-disk-0/
- Key containers:
- 101: NAS (storage server) - Active
- 150, 160, 170, 190: Development containers - Stopped (deprecated) - now host-based in /root/projects/
- 411: Documentation server - Stopped (deprecated) - replaced by OtterWiki on K8s
Virtual Machines: - VM 100: arr-stack (media automation) at 10.89.97.50 - VM 201-203: k3s cluster (master + 2 workers) - VM 300: PC (personal workstation)
Orchestration Layer¶
Kubernetes Cluster: - Platform: k3s (lightweight Kubernetes) - Topology: 3-node cluster (1 master + 2 workers) - VMs: 201 (master), 202-203 (workers) - Load balancing: MetalLB - Storage: Longhorn distributed block storage - TLS: cert-manager with self-signed CA
Core Services: - Supabase: Shared PostgreSQL, Auth, Storage, Realtime - Observability: Grafana, Loki, Prometheus - Ingress: Traefik (included with k3s)
Applications Layer¶
Development Apps (Kubernetes): - Home Portal (unified homelab dashboard) - Money Tracker (personal finance) - RMS (recipe management system)
Media Automation (VM 100): - Arr-stack: Sonarr, Radarr, Lidarr, Prowlarr - Download clients: SABnzbd, Deluge (via VPN) - Request management: Overseerr, Jellyseerr
Other Services (LXC): - Documentation: OtterWiki on K8s (https://otterwiki.bogocat.com) - Storage: NFS share on LXC 101 - Various homelab utilities
Key Infrastructure Documents¶
Physical & Virtualization: - Network Configuration - OPNsense, routing, VLANs - Storage - ZFS, NAS, distributed storage - Proxmox & LXC Operations - Container/VM management - Arr-Stack - Media automation on VM 100
Orchestration: - Kubernetes Cluster - k3s installation - Core Infrastructure - Helm, MetalLB, Longhorn - Observability - Monitoring stack - Supabase Platform - Shared database platform
Applications: - Applications Overview - All running services - Arr-Stack - Media automation system
Access Patterns¶
From Proxmox Host:
# Enter LXC container (e.g., NAS on 101)
pct enter 101
# Execute command in container
pct exec 101 -- systemctl status smbd
# SSH to VM (e.g., arr-stack)
ssh root@10.89.97.50
# Kubernetes operations
kubectl get nodes
kubectl get pods -A
From Development Host (Proxmox):
# Start development server
cd /root/projects/home-portal && npm run dev
# Access Kubernetes Supabase
curl http://10.89.97.214:8000/rest/v1/
# Access NAS storage
ls /vault/media
Network Map¶
Internet → OPNsense (10.89.97.1)
│
├─ Proxmox Host (10.89.97.x)
│ ├─ /root/projects/ (host-based development)
│ ├─ LXC 101 (NAS) - 10.89.97.101
│ │
│ ├─ VM 100 (arr-stack) - 10.89.97.50
│ ├─ VM 201 (k3s-master) - 10.89.97.201
│ ├─ VM 202 (k3s-worker-1) - 10.89.97.202
│ └─ VM 203 (k3s-worker-2) - 10.89.97.203
│
└─ Kubernetes Services (via MetalLB)
├─ Supabase - 10.89.97.214
├─ Grafana - 10.89.97.211
├─ NGINX Ingress - 10.89.97.220 (*.internal apps)
└─ Other services - 10.89.97.210+
Quick Links¶
| Layer | Resource | Location |
|---|---|---|
| Docs | OtterWiki | https://otterwiki.bogocat.com |
| K8s | Grafana | http://10.89.97.211:3000 |
| K8s | Supabase | http://10.89.97.214:8000 |
| K8s | Apps | http://home.internal, http://money.internal, http://travel.internal |
| Media | Sonarr | http://10.89.97.50:8989 |
| Media | Radarr | http://10.89.97.50:7878 |
| Media | Overseerr | http://10.89.97.50:5055 |
Related Documentation: - Proxmox & LXC Operations - Kubernetes Cluster Setup - Architecture Decisions