# 🏗️ Complete Homelab Rebuild Guide - From Hardware to Services

**🔴 Advanced Guide - Complete Infrastructure Rebuild**

This guide provides step-by-step instructions for rebuilding the entire homelab infrastructure from scratch, including hardware setup, network configuration, and service deployment. Use this guide for complete disaster recovery or when setting up a new homelab.

## 📋 Prerequisites & Planning

### **Required Hardware Inventory**
Before starting, ensure you have all hardware components:

#### **Primary Infrastructure**
- [ ] **Synology DS1823xs+** (8-bay NAS)
- [ ] **8x Seagate IronWolf Pro 16TB** (ST16000NT001)
- [ ] **2x Crucial P310 1TB NVMe** (CT1000P310SSD801)
- [ ] **1x Synology SNV5420-400G NVMe**
- [ ] **Synology E10M20-T1** (10GbE + M.2 adapter)
- [ ] **TP-Link TL-SX1008** (10GbE switch)
- [ ] **TP-Link Archer BE800** (Wi-Fi 7 router)

#### **Compute Infrastructure**
- [ ] **Intel NUC6i3SYB** (Concord NUC)
- [ ] **Raspberry Pi 5 16GB** (with PiRonMan case)
- [ ] **Raspberry Pi 5 8GB** (Kevin)
- [ ] **NVIDIA Shield TV Pro** (travel device)
- [ ] **MSI Prestige 13 AI Plus** (travel laptop)

#### **Network & Power**
- [ ] **UPS system** (1500VA minimum)
- [ ] **Ethernet cables** (Cat6/Cat6a for 10GbE)
- [ ] **Power cables and adapters**
- [ ] **HDMI cables** (for initial setup)

### **Required Software & Accounts**
- [ ] **Synology DSM** (latest version)
- [ ] **Docker** and **Docker Compose**
- [ ] **Tailscale account** (for VPN mesh)
- [ ] **Domain registration** (for external access)
- [ ] **Email account** (for SMTP notifications)
- [ ] **Cloud storage** (for offsite backups)

---

## 🌐 Phase 1: Network Infrastructure Setup (Day 1)

### **Step 1: Router Configuration**

#### **TP-Link Archer BE800 Setup**
```bash
# 1. Physical connections
# - Connect modem to WAN port
# - Connect computer to LAN port 1
# - Power on router and wait 2-3 minutes

# 2. Initial access
# Open browser: http://192.168.0.1 or http://tplinkwifi.net
# Default login: admin/admin

# 3. Basic configuration
# - Set admin password (store in password manager)
# - Configure internet connection (DHCP/Static/PPPoE)
# - Set WiFi SSID: "Vish-Homelab-5G" and "Vish-Homelab-2.4G"
# - Set WiFi password (WPA3, strong password)

# 4. Network settings
# - Change LAN subnet to 192.168.1.0/24
# - Set DHCP range: 192.168.1.100-192.168.1.200
# - Set DNS servers: 1.1.1.1, 8.8.8.8
# - Enable UPnP (for media services)
# - Disable WPS (security)
```

#### **Static IP Reservations**
```bash
# Configure DHCP reservations for all devices
# Router > Advanced > Network > DHCP Server > Address Reservation

# Primary Infrastructure
atlantis.vish.local     → 192.168.1.100  # DS1823xs+
calypso.vish.local      → 192.168.1.101  # DS723+ (if present)
setillo.vish.local      → 192.168.1.108  # Monitoring NAS

# Compute Hosts
concord-nuc.vish.local  → 192.168.1.102  # Intel NUC
homelab-vm.vish.local   → 192.168.1.103  # Proxmox VM
chicago-vm.vish.local   → 192.168.1.104  # Gaming VM
bulgaria-vm.vish.local  → 192.168.1.105  # Communication VM

# Physical Hosts
anubis.vish.local       → 192.168.1.106  # Mac Mini
guava.vish.local        → 192.168.1.107  # AMD Workstation
shinku-ryuu.vish.local  → 192.168.1.120  # Main Desktop

# Edge Devices
rpi-vish.vish.local     → 192.168.1.109  # Raspberry Pi 5 (16GB)
rpi-kevin.vish.local    → 192.168.1.110  # Raspberry Pi 5 (8GB)
nvidia-shield.vish.local → 192.168.1.111  # NVIDIA Shield TV Pro

# Travel Devices
msi-laptop.vish.local   → 192.168.1.115  # MSI Prestige 13 AI Plus
```

### **Step 2: 10 Gigabit Network Setup**

#### **TP-Link TL-SX1008 Configuration**
```bash
# 1. Physical setup
# - Connect TL-SX1008 to router LAN port via 1GbE
# - Power on switch
# - No configuration needed (unmanaged switch)

# 2. Device connections (as devices come online)
# Port 1: Atlantis (via E10M20-T1 card)
# Port 2: Calypso (via PCIe 10GbE card)
# Port 3: Shinku-Ryuu (via PCIe 10GbE card)
# Port 4: Guava (via PCIe 10GbE card)
# Ports 5-8: Available for future expansion
```

### **Step 3: DNS and Domain Setup**

#### **Dynamic DNS Configuration**
```bash
# 1. Choose DDNS provider (Synology, No-IP, DuckDNS)
# 2. Register domain: vishinator.synology.me (or custom domain)
# 3. Configure in router:
#    - Advanced > Dynamic DNS
#    - Provider: Synology
#    - Hostname: vishinator.synology.me
#    - Username/Password: "REDACTED_PASSWORD" account credentials

# 4. Test DDNS
# Wait 10 minutes, then test:
nslookup vishinator.synology.me
# Should return your external IP address
```

---

## 🏛️ Phase 2: Primary NAS Setup (Day 1-2)

### **Step 1: Synology DS1823xs+ Hardware Assembly**

#### **Drive Installation**
```bash
# 1. Unpack DS1823xs+ and drives
# 2. Install drives in order (for RAID consistency):
#    Bay 1: Seagate IronWolf Pro 16TB #1
#    Bay 2: Seagate IronWolf Pro 16TB #2
#    Bay 3: Seagate IronWolf Pro 16TB #3
#    Bay 4: Seagate IronWolf Pro 16TB #4
#    Bay 5: Seagate IronWolf Pro 16TB #5
#    Bay 6: Seagate IronWolf Pro 16TB #6
#    Bay 7: Seagate IronWolf Pro 16TB #7
#    Bay 8: Seagate IronWolf Pro 16TB #8

# 3. Install M.2 drives:
#    Slot 1: Crucial P310 1TB #1
#    Slot 2: Crucial P310 1TB #2

# 4. Install expansion card:
#    PCIe Slot 1: Synology E10M20-T1
#    E10M20-T1 M.2 Slot: Synology SNV5420-400G

# 5. Install RAM upgrade:
#    - Remove existing 4GB module
#    - Install 32GB DDR4 ECC module
```

#### **Network Connections**
```bash
# 1. Primary connections:
#    - LAN 1: Connect to router (1GbE management)
#    - LAN 2: Available for bonding/backup
#    - 10GbE: Connect to TL-SX1008 switch

# 2. Power connection:
#    - Connect 180W power adapter
#    - Connect to UPS if available
```

### **Step 2: DSM Installation and Initial Setup**

#### **DSM Installation**
```bash
# 1. Power on DS1823xs+
# 2. Wait for boot (2-3 minutes, listen for beep)
# 3. Find NAS on network:
#    - Use Synology Assistant (download from synology.com)
#    - Or browse to http://find.synology.com
#    - Or direct IP: http://192.168.1.100

# 4. DSM Installation:
#    - Download latest DSM for DS1823xs+
#    - Upload .pat file during setup
#    - Follow installation wizard
#    - Create admin account (store credentials securely)
```

#### **Basic DSM Configuration**
```bash
# 1. Network settings:
#    - Control Panel > Network > Network Interface
#    - Set static IP: 192.168.1.100
#    - Subnet: 255.255.255.0
#    - Gateway: 192.168.1.1
#    - DNS: 1.1.1.1, 8.8.8.8

# 2. Time and region:
#    - Control Panel > Regional Options
#    - Time zone: America/Los_Angeles
#    - NTP server: pool.ntp.org

# 3. Notifications:
#    - Control Panel > Notification > Email
#    - SMTP server: smtp.gmail.com:587
#    - Configure email notifications for critical events
```

### **Step 3: Storage Configuration**

#### **RAID Array Setup**
```bash
# 1. Storage Manager > Storage > Create
# 2. Choose RAID type:
#    - RAID 6: Best balance of capacity and redundancy
#    - Can survive 2 drive failures
#    - Usable capacity: ~96TB (6 drives worth)

# 3. Volume creation:
#    - Create Volume 1 on RAID array
#    - File system: Btrfs (for snapshots and data integrity)
#    - Enable data checksum
#    - Enable compression (if desired)
```

#### **M.2 Storage Configuration**
```bash
# CRITICAL: Install 007revad scripts FIRST
# SSH to NAS as admin user

# 1. Download and install scripts:
cd /volume1
git clone https://github.com/007revad/Synology_HDD_db.git
git clone https://github.com/007revad/Synology_M2_volume.git
git clone https://github.com/007revad/Synology_enable_M2_volume.git

# 2. Run HDD database script:
cd Synology_HDD_db
sudo ./syno_hdd_db.sh
# This adds IronWolf Pro drives to compatibility database

# 3. Enable M.2 volume support:
cd ../Synology_enable_M2_volume
sudo ./syno_enable_m2_volume.sh

# 4. Create M.2 volumes:
cd ../Synology_M2_volume
sudo ./syno_m2_volume.sh

# 5. Configure M.2 storage:
# Storage Manager > Storage > Create
# - Volume 2: Crucial P310 drives in RAID 1 (high-performance storage)
# - Volume 3: Synology SNV5420 (cache and metadata)
```

### **Step 4: Essential Services Setup**

#### **Docker Installation**
```bash
# 1. Package Center > Search "Docker"
# 2. Install Docker package
# 3. Enable SSH (Control Panel > Terminal & SNMP > Enable SSH)
# 4. SSH to NAS and verify Docker:
ssh admin@192.168.1.100
docker --version
docker-compose --version
```

#### **File Sharing Setup**
```bash
# 1. Create shared folders:
# Control Panel > Shared Folder > Create

# Essential folders:
# - docker (for container data)
# - media (for Plex library)
# - documents (for Paperless-NGX)
# - backups (for system backups)
# - homes (for user directories)

# 2. Set permissions:
# - admin: Read/Write access to all folders
# - Create service accounts as needed
```

---

## 🔧 Phase 3: Core Services Deployment (Day 2-3)

### **Step 1: Infrastructure Services**

#### **Portainer (Container Management)**
```bash
# 1. Create Portainer directory:
mkdir -p /volume1/docker/portainer

# 2. Deploy Portainer:
docker run -d \
  --name portainer \
  --restart always \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /volume1/docker/portainer:/data \
  portainer/portainer-ce:latest

# 3. Access: http://192.168.1.100:9000
# 4. Create admin account
# 5. Connect to local Docker environment
```

#### **Watchtower (Auto-Updates)**
```bash
# Deploy Watchtower for automatic container updates:
docker run -d \
  --name watchtower \
  --restart always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower \
  --schedule "0 0 4 * * *" \
  --cleanup
```

### **Step 2: Security Services**

#### **Vaultwarden (Password Manager)**
```bash
# 1. Create directory structure:
mkdir -p /volume2/metadata/docker/vaultwarden/{data,db}

# 2. Deploy using the commented configuration:
# Copy /workspace/project/homelab/Atlantis/vaultwarden.yaml
# Update passwords and tokens
# Deploy: docker-compose -f vaultwarden.yaml up -d

# 3. Initial setup:
# - Access http://192.168.1.100:4080
# - Create first user account
# - Configure admin panel with admin token
```

#### **Pi-hole (DNS Filtering)**
```bash
# 1. Create Pi-hole directory:
mkdir -p /volume1/docker/pihole/{etc,dnsmasq}

# 2. Deploy Pi-hole:
docker run -d \
  --name pihole \
  --restart always \
  -p 53:53/tcp -p 53:53/udp \
  -p 8080:80 \
  -e TZ=America/Los_Angeles \
  -e WEBPASSWORD="REDACTED_PASSWORD" \
  -v /volume1/docker/pihole/etc:/etc/pihole \
  -v /volume1/docker/pihole/dnsmasq:/etc/dnsmasq.d \
  pihole/pihole:latest

# 3. Configure router to use Pi-hole:
# Router DNS: 192.168.1.100
```

### **Step 3: Monitoring Stack**

#### **Grafana and Prometheus**
```bash
# 1. Create monitoring directories:
mkdir -p /volume1/docker/{grafana,prometheus}

# 2. Deploy monitoring stack:
# Copy monitoring-stack.yaml from homelab repo
# Update configurations
# Deploy: docker-compose -f monitoring-stack.yaml up -d

# 3. Configure dashboards:
# - Import Synology dashboard
# - Configure data sources
# - Set up alerting
```

#### **Uptime Kuma (Service Monitoring)**
```bash
# 1. Deploy Uptime Kuma:
docker run -d \
  --name uptime-kuma \
  --restart always \
  -p 3001:3001 \
  -v /volume1/docker/uptime-kuma:/app/data \
  louislam/uptime-kuma:1

# 2. Configure monitoring:
# - Add all critical services
# - Set up notifications
# - Configure status page
```

---

## 📺 Phase 4: Media Services (Day 3-4)

### **Step 1: Plex Media Server**
```bash
# 1. Create Plex directories:
mkdir -p /volume1/docker/plex
mkdir -p /volume1/data/media/{movies,tv,music,photos}

# 2. Deploy Plex using commented configuration:
# Copy plex.yaml from homelab repo
# Update PUID/PGID and timezone
# Deploy: docker-compose -f plex.yaml up -d

# 3. Initial setup:
# - Access http://192.168.1.100:32400/web
# - Claim server with Plex account
# - Add media libraries
# - Configure hardware transcoding
```

### **Step 2: Media Management (Arr Suite)**
```bash
# 1. Deploy Arr suite services:
# - Sonarr (TV shows)
# - Radarr (Movies)
# - Prowlarr (Indexer management)
# - SABnzbd (Download client)

# 2. Configure each service:
# - Set up indexers in Prowlarr
# - Configure download clients
# - Set up media folders
# - Configure quality profiles
```

### **Step 3: Photo Management**
```bash
# 1. Deploy Immich (if using):
# Copy immich configuration
# Set up database and Redis
# Configure storage paths

# 2. Alternative: PhotoPrism
# Deploy PhotoPrism container
# Configure photo directories
# Set up face recognition
```

---

## 🌐 Phase 5: Network Services (Day 4-5)

### **Step 1: VPN Setup**

#### **Tailscale Mesh VPN**
```bash
# 1. Install Tailscale on NAS:
# Download Tailscale package for Synology
# Install via Package Center or manual installation

# 2. Configure Tailscale:
sudo tailscale up --advertise-routes=192.168.1.0/24
# Approve subnet routes in Tailscale admin console

# 3. Install on all devices:
# - Concord NUC
# - Raspberry Pi nodes
# - NVIDIA Shield
# - Travel devices
```

#### **WireGuard (Alternative/Backup VPN)**
```bash
# 1. Deploy WireGuard container:
docker run -d \
  --name wireguard \
  --restart always \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  -e PUID=1029 \
  -e PGID=65536 \
  -e TZ=America/Los_Angeles \
  -p 51820:51820/udp \
  -v /volume1/docker/wireguard:/config \
  -v /lib/modules:/lib/modules \
  linuxserver/wireguard

# 2. Configure port forwarding:
# Router: External 51820/UDP → 192.168.1.100:51820
```

### **Step 2: Reverse Proxy**

#### **Nginx Proxy Manager**
```bash
# 1. Deploy Nginx Proxy Manager:
docker run -d \
  --name nginx-proxy-manager \
  --restart always \
  -p 8341:80 \
  -p 8766:443 \
  -p 8181:81 \
  -v /volume1/docker/nginx-proxy-manager:/data \
  -v /volume1/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt \
  jc21/nginx-proxy-manager:latest

# 2. Configure SSL certificates:
# - Set up Let's Encrypt
# - Configure proxy hosts
# - Set up access lists
```

---

## 🖥️ Phase 6: Compute Nodes Setup (Day 5-6)

### **Step 1: Intel NUC (Concord)**

#### **Operating System Installation**
```bash
# 1. Create Ubuntu 22.04 LTS installation media
# 2. Boot from USB and install Ubuntu
# 3. Configure network:
sudo netplan apply
# Set static IP: 192.168.1.102

# 4. Install Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

# 5. Install Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```

#### **Home Assistant Setup**
```bash
# 1. Create Home Assistant directory:
mkdir -p ~/docker/homeassistant

# 2. Deploy Home Assistant:
docker run -d \
  --name homeassistant \
  --restart always \
  --privileged \
  --net=host \
  -e TZ=America/Los_Angeles \
  -v ~/docker/homeassistant:/config \
  ghcr.io/home-assistant/home-assistant:stable

# 3. Access: http://192.168.1.102:8123
```

### **Step 2: Raspberry Pi Cluster**

#### **Pi-5 (Vish) Setup**
```bash
# 1. Flash Raspberry Pi OS Lite (64-bit)
# 2. Enable SSH and configure WiFi
# 3. Boot and configure:
sudo raspi-config
# - Enable SSH
# - Set timezone
# - Expand filesystem

# 4. Install Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker pi

# 5. Install Tailscale:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
```

#### **Pi-5-Kevin Setup**
```bash
# Follow same process as Pi-5 (Vish)
# Configure as secondary node
# Set static IP: 192.168.1.110
```

---

## 📱 Phase 7: Edge and Travel Devices (Day 6-7)

### **Step 1: NVIDIA Shield TV Pro**

#### **Initial Setup**
```bash
# 1. Connect to TV and complete Android TV setup
# 2. Enable Developer Options:
#    Settings > Device Preferences > About
#    Click "Build" 7 times

# 3. Enable USB Debugging:
#    Settings > Device Preferences > Developer Options
#    Enable "USB Debugging"

# 4. Install Tailscale:
# - Download Tailscale APK
# - Install via file manager or ADB
# - Configure with homelab tailnet
```

#### **Media Apps Configuration**
```bash
# 1. Install Plex app from Play Store
# 2. Configure Plex server connection:
#    Server: atlantis.vish.local:32400
#    Or Tailscale IP: 100.83.230.112:32400

# 3. Install additional apps:
# - VLC Media Player
# - Chrome Browser
# - Termux (for SSH access)
```

### **Step 2: MSI Prestige 13 AI Plus**

#### **Tailscale Setup**
```bash
# 1. Download and install Tailscale for Windows
# 2. Sign in with homelab account
# 3. Configure as exit node (optional):
#    Tailscale > Settings > Use as exit node

# 4. Test connectivity:
ping atlantis.vish.local
ping 100.83.230.112
```

#### **Development Environment**
```bash
# 1. Install WSL2:
wsl --install Ubuntu-22.04

# 2. Configure WSL2:
# - Install Docker Desktop
# - Enable WSL2 integration
# - Install development tools

# 3. SSH key setup:
ssh-keygen -t ed25519 -C "msi-laptop@homelab"
# Copy public key to homelab hosts
```

---

## 🔄 Phase 8: Backup and Monitoring (Day 7)

### **Step 1: Backup Configuration**

#### **Local Backups**
```bash
# 1. Configure Synology backup tasks:
# Control Panel > Task Scheduler > Create > Backup

# 2. Critical backup jobs:
# - Docker configurations (daily)
# - Database backups (daily)
# - System configurations (weekly)
# - Media metadata (weekly)

# 3. Backup verification:
# - Test restore procedures
# - Verify backup integrity
# - Document recovery procedures
```

#### **Offsite Backups**
```bash
# 1. Configure cloud backup:
# - Synology C2 Backup
# - Or AWS S3/Glacier
# - Or Google Drive/OneDrive

# 2. Encrypt sensitive backups:
# - Use Synology encryption
# - Or GPG encryption for scripts
# - Store encryption keys securely
```

### **Step 2: Monitoring Setup**

#### **Service Monitoring**
```bash
# 1. Configure Uptime Kuma monitors:
# - All critical services
# - Network connectivity
# - Certificate expiration
# - Disk space usage

# 2. Set up notifications:
# - Email alerts
# - Discord/Slack webhooks
# - SMS for critical alerts
```

#### **Performance Monitoring**
```bash
# 1. Configure Grafana dashboards:
# - System performance
# - Network utilization
# - Service health
# - Storage usage

# 2. Set up alerting rules:
# - High CPU/memory usage
# - Disk space warnings
# - Service failures
# - Network issues
```

---

## 🧪 Phase 9: Testing and Validation (Day 8)

### **Step 1: Service Testing**

#### **Connectivity Tests**
```bash
# 1. Internal network tests:
ping atlantis.vish.local
ping concord-nuc.vish.local
ping rpi-vish.vish.local

# 2. Service accessibility tests:
curl -I http://atlantis.vish.local:32400  # Plex
curl -I http://atlantis.vish.local:9000   # Portainer
curl -I http://atlantis.vish.local:4080   # Vaultwarden

# 3. External access tests:
# Test from mobile device or external network
# Verify VPN connectivity
# Test domain resolution
```

#### **Performance Tests**
```bash
# 1. Network performance:
iperf3 -s  # On server
iperf3 -c atlantis.vish.local  # From client

# 2. Storage performance:
dd if=/dev/zero of=/volume1/test bs=1M count=1000
rm /volume1/test

# 3. Media streaming tests:
# Test Plex transcoding
# Verify hardware acceleration
# Test multiple concurrent streams
```

### **Step 2: Disaster Recovery Testing**

#### **Backup Restoration Tests**
```bash
# 1. Test configuration restore:
# - Stop a service
# - Restore from backup
# - Verify functionality

# 2. Test database restore:
# - Create test database backup
# - Restore to different location
# - Verify data integrity

# 3. Test complete service rebuild:
# - Remove service completely
# - Rebuild from documentation
# - Restore data from backup
```

#### **Failover Tests**
```bash
# 1. Network failover:
# - Disconnect primary network
# - Test Tailscale connectivity
# - Verify service accessibility

# 2. Power failure simulation:
# - Graceful shutdown test
# - UPS functionality test
# - Startup sequence verification

# 3. Drive failure simulation:
# - Remove one drive from RAID
# - Verify RAID degraded mode
# - Test rebuild process
```

---

## 📚 Phase 10: Documentation and Maintenance (Ongoing)

### **Step 1: Documentation Updates**

#### **Configuration Documentation**
```bash
# 1. Update network documentation:
# - IP address assignments
# - Port forwarding rules
# - DNS configurations
# - VPN settings

# 2. Update service documentation:
# - Container configurations
# - Database schemas
# - API endpoints
# - Access credentials

# 3. Update hardware documentation:
# - Serial numbers
# - Warranty information
# - Replacement procedures
# - Performance baselines
```

#### **Procedure Documentation**
```bash
# 1. Create runbooks:
# - Service restart procedures
# - Backup and restore procedures
# - Troubleshooting guides
# - Emergency contacts

# 2. Update disaster recovery plans:
# - Recovery time objectives
# - Recovery point objectives
# - Escalation procedures
# - Communication plans
```

### **Step 2: Maintenance Schedules**

#### **Daily Tasks**
```bash
# Automated:
# - Service health checks
# - Backup verification
# - Security updates
# - Log rotation

# Manual:
# - Review monitoring alerts
# - Check service status
# - Verify backup completion
```

#### **Weekly Tasks**
```bash
# - Review system performance
# - Check disk usage
# - Update documentation
# - Test backup restores
# - Review security logs
```

#### **Monthly Tasks**
```bash
# - Full system backup
# - Hardware health check
# - Security audit
# - Performance optimization
# - Documentation review
```

#### **Quarterly Tasks**
```bash
# - Disaster recovery drill
# - Hardware warranty review
# - Software license review
# - Capacity planning
# - Security assessment
```

---

## 🚨 Emergency Procedures

### **Critical Service Failures**
```bash
# 1. Vaultwarden failure:
# - Use offline password backup
# - Restore from latest backup
# - Verify database integrity
# - Test all password access

# 2. Network failure:
# - Check physical connections
# - Verify router configuration
# - Test internet connectivity
# - Activate backup internet (mobile hotspot)

# 3. Storage failure:
# - Check RAID status
# - Replace failed drives
# - Monitor rebuild progress
# - Verify data integrity
```

### **Complete Infrastructure Failure**
```bash
# 1. Assess damage:
# - Check power systems
# - Verify network connectivity
# - Test individual components
# - Document failures

# 2. Prioritize recovery:
# - Network infrastructure first
# - Critical services (Vaultwarden, DNS)
# - Media and productivity services
# - Development and testing services

# 3. Execute recovery plan:
# - Follow this rebuild guide
# - Restore from backups
# - Verify service functionality
# - Update documentation
```

---

## 📋 Final Checklist

### **Infrastructure Validation**
```bash
☐ All hardware installed and functional
☐ Network connectivity verified (1GbE and 10GbE)
☐ Static IP assignments configured
☐ DNS resolution working
☐ VPN access functional (Tailscale and WireGuard)
☐ External domain access working
☐ SSL certificates installed and valid
```

### **Service Validation**
```bash
☐ Vaultwarden accessible and functional
☐ Plex streaming working with hardware transcoding
☐ Pi-hole DNS filtering active
☐ Monitoring stack operational (Grafana, Prometheus)
☐ Backup systems configured and tested
☐ All Docker services running and healthy
☐ Mobile and travel device access verified
```

### **Security Validation**
```bash
☐ All default passwords changed
☐ SSH keys configured for key-based authentication
☐ Firewall rules configured
☐ SSL/TLS encryption enabled for all web services
☐ 2FA enabled for critical accounts
☐ Backup encryption verified
☐ Access logs reviewed
```

### **Documentation Validation**
```bash
☐ Network configuration documented
☐ Service configurations documented
☐ Backup and restore procedures tested
☐ Emergency contact information updated
☐ Hardware warranty information recorded
☐ Disaster recovery procedures validated
```

---

**🎉 Congratulations!** You have successfully rebuilt your complete homelab infrastructure. This process typically takes 7-8 days for a complete rebuild, but the result is a fully documented, monitored, and maintainable homelab environment.

**🔄 Next Steps:**
1. Monitor system performance for the first week
2. Fine-tune configurations based on usage patterns
3. Schedule regular maintenance tasks
4. Plan for future expansions and upgrades
5. Share your experience with the homelab community

**💡 Pro Tip:** Keep this guide updated as you make changes to your infrastructure. A well-documented homelab is much easier to maintain and troubleshoot.