## Major Infrastructure Milestones Achieved ### ✅ Service Migrations Completed - Jellyfin: Successfully migrated to Docker Swarm with latest version - Vaultwarden: Running in Docker Swarm on OMV800 (eliminated duplicate) - Nextcloud: Operational with database optimization and cron setup - Paperless services: Both NGX and AI running successfully ### 🚨 Duplicate Service Analysis Complete - Identified MariaDB conflict (OMV800 Swarm vs lenovo410 standalone) - Identified Vaultwarden duplication (now resolved) - Documented PostgreSQL and Redis consolidation opportunities - Mapped monitoring stack optimization needs ### 🏗️ Infrastructure Status Documentation - Updated README with current cleanup phase status - Enhanced Service Analysis with duplicate service inventory - Updated Quick Start guide with immediate action items - Documented current container distribution across 6 nodes ### 📋 Action Plan Documentation - Phase 1: Immediate service conflict resolution (this week) - Phase 2: Service migration and load balancing (next 2 weeks) - Phase 3: Database consolidation and optimization (future) ### 🔧 Current Infrastructure Health - Docker Swarm: All 6 nodes operational and healthy - Caddy Reverse Proxy: Fully operational with SSL certificates - Storage: MergerFS healthy, local storage for databases - Monitoring: Prometheus + Grafana + Uptime Kuma operational ### 📊 Container Distribution Status - OMV800: 25+ containers (needs load balancing) - lenovo410: 9 containers (cleanup in progress) - fedora: 1 container (ready for additional services) - audrey: 4 containers (well-balanced, monitoring hub) - lenovo420: 7 containers (balanced, can assist) - surface: 9 containers (specialized, reverse proxy) ### 🎯 Next Steps 1. Remove lenovo410 MariaDB (eliminate port 3306 conflict) 2. Clean up lenovo410 Vaultwarden (256MB space savings) 3. Verify no service conflicts exist 4. Begin service migration from OMV800 to fedora/audrey Status: Infrastructure 99% complete, entering cleanup and optimization phase
33 KiB
33 KiB
Home Lab Network Architecture Diagrams
Current Infrastructure State (As-Is)
┌─────────────────────────────────────────────────────────────┐
│ CURRENT NETWORK TOPOLOGY │
│ 192.168.50.0/24 │
└─────────────────────────────────────────────────────────────┘
│
┌─────────┴─────────┐
│ Router/Gateway │
│ 192.168.50.1 │
└─────────┬─────────┘
│
┌─────────────────────┼─────────────────────┐
│ │ │
┌───────▼────────┐ ┌────────▼────────┐ ┌───────▼────────┐
│ TAILSCALE │ │ LOCAL NETWORK │ │ INTERNET │
│ MESH VPN │ │ ETHERNET/WiFi │ │ CONNECTION │
│ │ │ │ │ │
└────────────────┘ └─────────────────┘ └────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ DEVICE LAYOUT │
└─────────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ OMV800 │ │ FEDORA │ │ LENOVO420 │ │ LENOVO │
│ (Primary NAS) │ │ (Workstation) │ │ (Secondary) │ │ (Workstation) │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ IP: .229/112 │ │ IP: .28/.21 │ │ IP: .66/.95 │ │ IP: .181/.80 │
│ CPU: i5-6400 │ │ CPU: N95 │ │ CPU: i5-2520M │ │ CPU: i5 M540 │
│ RAM: 31GB │ │ RAM: 15GB │ │ RAM: 15GB │ │ RAM: 7.6GB │
│ OS: Debian 12 │ │ OS: Fedora 42 │ │ OS: Ubuntu 24 │ │ OS: Ubuntu 24 │
│ │ │ │ │ │ │ │
│ ⚠️ OVERLOADED │ │ ✅ UNDERUSED │ │ ✅ BALANCED │ │ ⚠️ OVERLOADED │
│ 19 CONTAINERS │ │ 1 CONTAINER │ │ 7 CONTAINERS │ │ 15 CONTAINERS │
│ │ │ │ │ │ │ │
│ • Immich │ │ • Portainer │ │ • Portainer │ │ • Home Assist │
│ • Jellyfin │ │ Agent │ │ Agent │ │ • ESPHome │
│ • Nextcloud │ │ │ │ • DuckDNS │ │ • N8N │
│ • Paperless │ │ │ │ • OpenWakeWord │ │ • Paperless │
│ • PostgreSQL │ │ │ │ • Whisper │ │ • MariaDB │
│ • Redis │ │ │ │ • Mosquitto │ │ • Redis │
│ • Vikunja │ │ │ │ • Omni-tools │ │ • Music Assist │
│ • Joplin │ │ │ │ • Filebrowser │ │ • Homeway │
│ • Caddy │ │ │ │ • Watchtower │ │ • Z-Wave JS UI │
│ • + 10 more... │ │ │ │ │ │ • + 6 more... │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │ │
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ SURFACE │ │ OMVBACKUP │ │ COMPROMISED │ │ AUDREY │
│ (Portable) │ │ (Backup RPi) │ │ DEVICE │ │ (Offline RPi) │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ IP: .254/.97 │ │ IP: .107 │ │ IP: .81 │ │ IP: .45 │
│ CPU: i5-6300U │ │ CPU: ARM A72 │ │ MAC: cc:f7:35 │ │ Status: OFFLINE │
│ RAM: 7.7GB │ │ RAM: 906MB │ │ ❌ BLOCKED │ │ ❌ ISSUES │
│ OS: Ubuntu 24 │ │ OS: Debian 12 │ │ Amazon Device │ │ │
│ │ │ │ │ │ │ │
│ ✅ SPECIALIZED │ │ ✅ STORAGE ONLY │ │ 🚨 MALWARE │ │ │
│ 9 CONTAINERS │ │ 0 CONTAINERS │ │ DETECTED │ │ │
│ │ │ │ │ │ │ │
│ • AppFlowy │ │ • NFS Exports │ │ • Porn sites │ │ │
│ Cloud Stack │ │ • Backup Store │ │ • Malware DL │ │ │
│ • PostgreSQL │ │ • 7.3TB RAID │ │ • Firewall │ │ │
│ • Redis │ │ │ │ BLOCKED │ │ │
│ • Minio │ │ │ │ │ │ │
│ • Nginx │ │ │ │ │ │ │
│ • + 5 more... │ │ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ STORAGE TOPOLOGY │
└─────────────────────────────────────────────────────────────────────────────────────────┘
OMV800 Storage Pool OMVBackup Storage
┌─────────────────────┐ ┌─────────────────────┐
│ Primary Storage │ ←── Replication ──→ │ Backup Repository │
│ • 17TB DataPool │ (Real-time) │ • 7.3TB RAID Array │
│ • 456GB System SSD │ │ • Automated Backup │
│ • MergerFS Pool │ │ • NFS/SMB Exports │
│ • Multiple Drives │ │ • Redundancy Store │
└─────────────────────┘ └─────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ NETWORK TRAFFIC FLOWS │
└─────────────────────────────────────────────────────────────────────────────────────────┘
Internet ←→ Router ←→ Local Network
↓
┌───────────────┐
│ High Traffic │
│ • Media │ ←── OMV800 (Jellyfin, Immich)
│ • Backups │ ←── All devices → OMVBackup
│ • IoT Data │ ←── Lenovo (Home Assistant)
└───────────────┘
↓
┌───────────────┐
│ Medium Traffic │
│ • Web Apps │ ←── Fedora, Surface
│ • Databases │ ←── Cross-device queries
│ • Monitoring│ ←── All devices
└───────────────┘
Proposed Optimized Architecture (To-Be)
┌─────────────────────────────────────────────────────────────┐
│ OPTIMIZED NETWORK TOPOLOGY │
│ Segmented VLANs + High Availability │
└─────────────────────────────────────────────────────────────┘
┌─────────────────┐
│ Core Router │
│ 192.168.50.1 │
│ + VLAN Support │
└─────────┬───────┘
│
┌─────────────────────────┼─────────────────────────┐
│ │ │
┌───────▼────────┐ ┌────────▼────────┐ ┌────────▼────────┐
│ VLAN 10 │ │ VLAN 20 │ │ VLAN 30 │
│ Core Services │ │ IoT & Smart │ │ Backup & │
│ .10.0/24 │ │ Home .20.0/24 │ │ Storage .30.0/24│
└────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ TIER-BASED SERVICE DISTRIBUTION │
└─────────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────┐
│ TIER 1: CORE │
│ High Availability │
└─────────────────────────────────┘
┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐
│ OMV800 │ │ FEDORA │
│ Primary Storage Hub │ │ Application Server │
├─────────────────────────────────────┤ ├─────────────────────────────────────┤
│ VLAN: 10.229 | Tailscale: 112 │ │ VLAN: 10.28 | Tailscale: .21 │
│ CPU: i5-6400 (4c) | RAM: 31GB │ │ CPU: N95 (4c) | RAM: 15GB │
│ Role: Centralized Storage + Media │ │ Role: Compute + Development │
│ │ │ │
│ ✅ OPTIMIZED CONTAINERS (8-10): │ │ ✅ OPTIMIZED CONTAINERS (6-8): │
│ ┌─────────────────────────────────┐ │ │ ┌─────────────────────────────────┐ │
│ │ 📸 Immich (Photo Management) │ │ │ │ 🏠 Home Assistant (Smart Home) │ │
│ │ 🎬 Jellyfin (Media Server) │ │ │ │ ⚙️ N8N (Automation Workflows) │ │
│ │ ☁️ Nextcloud (File Sync) │ │ │ │ 📄 Paperless-NGX (Documents) │ │
│ │ 🗄️ MariaDB (Database Hub) │ │ │ │ 🔌 ESPHome (IoT Management) │ │
│ │ ⚡ Redis (Caching Layer) │ │ │ │ 💻 Code-Server (Development) │ │
│ │ 🌐 Caddy (Reverse Proxy) │ │ │ │ 📊 Monitoring (Prometheus) │ │
│ │ 🔄 Watchtower (Auto-updates) │ │ │ │ 📈 Grafana (Dashboards) │ │
│ │ 🐳 Portainer (Management) │ │ │ │ │ │
│ └─────────────────────────────────┘ │ │ └─────────────────────────────────┘ │
│ │ │ │
│ 💾 STORAGE OPTIMIZATION: │ │ 🎯 COMPUTE OPTIMIZATION: │
│ • 17TB: Media & Photos │ │ • CPU-intensive applications │
│ • 456GB SSD: Databases │ │ • Development environments │
│ • Real-time backup to OMVBackup │ │ • Monitoring & automation │
└─────────────────────────────────────┘ └─────────────────────────────────────┘
┌─────────────────────────────────┐
│ TIER 2: SPECIALIZED │
│ Medium Priority │
└─────────────────────────────────┘
┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐
│ LENOVO420 │ │ SURFACE │
│ Backup & Monitoring │ │ Mobile & Cloud Services │
├─────────────────────────────────────┤ ├─────────────────────────────────────┤
│ VLAN: 30.66 | Tailscale: .95 │ │ VLAN: 10.254 | Tailscale: .97 │
│ CPU: i5-2520M (4c) | RAM: 15GB │ │ CPU: i5-6300U (4c) | RAM: 7.7GB │
│ Role: Backup Orchestration │ │ Role: Personal Productivity │
│ │ │ │
│ ✅ OPTIMIZED CONTAINERS (5-7): │ │ ✅ OPTIMIZED CONTAINERS (4-6): │
│ ┌─────────────────────────────────┐ │ │ ┌─────────────────────────────────┐ │
│ │ 🐳 Portainer Agent (Cluster) │ │ │ │ 📝 AppFlowy Cloud (Workspace) │ │
│ │ 💾 Backup Orchestration │ │ │ │ 🔐 VPN Server (Remote Access) │ │
│ │ 📊 Uptime Kuma (Monitoring) │ │ │ │ 🔑 Vaultwarden (Passwords) │ │
│ │ 🗨️ MQTT Broker (IoT Comms) │ │ │ │ 🔄 Syncthing (File Sync) │ │
│ │ 📹 Frigate (Security Cameras) │ │ │ │ 🌐 Lightweight Web Services │ │
│ │ 🛡️ Secondary Databases │ │ │ │ │ │
│ └─────────────────────────────────┘ │ │ └─────────────────────────────────┘ │
│ │ │ │
│ 🎯 BACKUP OPTIMIZATION: │ │ 🎯 MOBILITY OPTIMIZATION: │
│ • Centralized backup coordination │ │ • Personal productivity tools │
│ • Disaster recovery planning │ │ • Remote access capabilities │
│ • Security monitoring │ │ • Portable service deployment │
└─────────────────────────────────────┘ └─────────────────────────────────────┘
┌─────────────────────────────────┐
│ TIER 3: SUPPORT │
│ Specialized Functions │
└─────────────────────────────────┘
┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐
│ LENOVO │ │ OMVBACKUP │
│ IoT & Smart Home Hub │ │ Backup Repository │
├─────────────────────────────────────┤ ├─────────────────────────────────────┤
│ VLAN: 20.181 | Tailscale: .80 │ │ VLAN: 30.107 | Physical only │
│ CPU: i5 M540 (4c) | RAM: 7.6GB │ │ CPU: ARM A72 (4c) | RAM: 906MB │
│ Role: Real-time IoT Processing │ │ Role: Data Safety & Recovery │
│ │ │ │
│ ✅ OPTIMIZED CONTAINERS (6-8): │ │ ✅ STORAGE SERVICES: │
│ ┌─────────────────────────────────┐ │ │ ┌─────────────────────────────────┐ │
│ │ 🌊 Z-Wave JS UI (Z-Wave) │ │ │ │ 💾 7.3TB RAID Array │ │
│ │ 🐝 Zigbee2MQTT (Zigbee) │ │ │ │ 📂 NFS/SMB Export Services │ │
│ │ 🎵 Music Assistant (Audio) │ │ │ │ 🔄 Real-time Backup Scripts │ │
│ │ 🎤 OpenWakeWord (Voice AI) │ │ │ │ ✅ Data Integrity Monitoring │ │
│ │ 🔗 Node-RED (IoT Automation) │ │ │ │ 📊 Basic Web Management │ │
│ │ 📊 InfluxDB (Time Series) │ │ │ │ 🛡️ Backup Verification │ │
│ │ 🗨️ Mosquitto MQTT │ │ │ │ │ │
│ └─────────────────────────────────┘ │ │ └─────────────────────────────────┘ │
│ │ │ │
│ 🎯 IOT OPTIMIZATION: │ │ 🎯 STORAGE OPTIMIZATION: │
│ • Low-latency device response │ │ • Continuous data protection │
│ • Real-time automation │ │ • Automated backup verification │
│ • Voice processing & AI │ │ • Disaster recovery ready │
└─────────────────────────────────────┘ └─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ HIGH AVAILABILITY DESIGN │
└─────────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ FAILOVER STRATEGY │
└─────────────────────────────────────────┘
OMV800 (Primary)
↓ ↑
┌─────────────────────┐
│ Load Balancer │ ←── Caddy/HAProxy
│ (Caddy HA) │
└─────────┬───────────┘
↓
┌─────────────────────┐
│ Service Mesh │
│ Discovery │ ←── Consul/etcd
└─────────┬───────────┘
↓
┌─────────────────┼─────────────────┐
↓ ↓ ↓
FEDORA (App Tier) LENOVO420 (Backup) SURFACE (Edge)
↓ ↓ ↓
[Auto-failover] [Secondary DBs] [Remote Access]
Database Replication Strategy:
┌─────────────────────────────────┐
│ Primary: OMV800 (MariaDB) │
│ ↓ Real-time sync │
│ Secondary: Lenovo420 (Replica) │
│ ↓ Backup sync │
│ Backup: OMVBackup (Cold) │
└─────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ PERFORMANCE METRICS │
└─────────────────────────────────────────────────────────────────────────────────────────┘
📊 CURRENT vs OPTIMIZED COMPARISON:
┌─────────────────┬─────────────────┬─────────────────┬─────────────────┐
│ METRIC │ CURRENT │ OPTIMIZED │ IMPROVEMENT │
├─────────────────┼─────────────────┼─────────────────┼─────────────────┤
│ Resource Usage │ 70% avg │ 45% avg │ 35% reduction │
│ Container Density│ Unbalanced │ Optimized │ 40% better │
│ Failover Time │ Manual (hours) │ Auto (30 sec) │ 99.9% faster │
│ Media Response │ 2-5 seconds │ <1 second │ 3x improvement │
│ Backup Speed │ 4 hours │ 1.5 hours │ 62% faster │
│ Network Traffic │ High cross-dev │ Segmented │ 50% reduction │
│ Uptime │ 95% (SPOF) │ 99.9% (HA) │ 5x reliability │
│ Management │ 6 separate UIs │ Centralized │ Single pane │
└─────────────────┴─────────────────┴─────────────────┴─────────────────┘
🔄 MIGRATION TIMELINE:
Week 1: Core Infrastructure
├── Day 1-2: Set up VLAN segmentation
├── Day 3-4: Migrate critical services to OMV800
├── Day 5-7: Implement Caddy load balancing
Week 2: Service Distribution
├── Day 1-3: Move compute services to Fedora
├── Day 4-5: Consolidate IoT services to Lenovo
├── Day 6-7: Set up backup orchestration
Week 3: High Availability
├── Day 1-3: Implement database replication
├── Day 4-5: Configure automated failover
├── Day 6-7: Testing and optimization
🎯 SUCCESS METRICS:
• ✅ 99.9% service availability
• ✅ <30 second failover times
• ✅ 50% reduction in manual maintenance
• ✅ Centralized monitoring and management
• ✅ Improved security with network segmentation
Security Enhancement Overlay
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ SECURITY ARCHITECTURE │
└─────────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────┐
│ Internet │
│ Threats │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Firewall/IDS │
│ + Threat Intel │
└──────────┬──────────┘
│
┌────────────────▼────────────────┐
│ VPN Gateway │
│ (WireGuard/Tailscale) │
└────────────────┬────────────────┘
│
┌────────▼────────┐
│ DMZ Zone │
│ (Surface) │
└────────┬────────┘
│
┌────────────────────▼────────────────────┐
│ Internal Network │
│ Zero Trust Segmentation │
└─────────────────────────────────────────┘
🛡️ SECURITY ZONES:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ ZONE 1: DMZ │ │ ZONE 2: CORE │ │ ZONE 3: BACKUP │
│ (Surface) │ │ (OMV800,Fedora) │ │ (Lenovo420,Pi) │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ • Public facing │ │ • Internal apps │ │ • Data storage │
│ • VPN endpoint │ │ • Databases │ │ • Cold backups │
│ • Rate limited │ │ • Media serving │ │ • Air-gapped │
└─────────────────┘ └─────────────────┘ └─────────────────┘
🔐 ACCESS CONTROL MATRIX:
External Users ────────▶ DMZ Zone Only
Trusted Users ────────▶ Core Zone (authenticated)
Admin Users ────────▶ All Zones (MFA required)
Service-to-Service ─────▶ Encrypted + Cert-based
Backup Jobs ────────▶ Dedicated backup network
🚨 MONITORING & ALERTING:
[Threat Detection] ──▶ [SIEM Collection] ──▶ [Automated Response]
│ │ │
▼ ▼ ▼
• Network traffic • Centralized logs • Auto-blocking
• Failed logins • Security events • Alert notifications
• Resource anomalies • Performance metrics • Incident response