- Add MIGRATION_PLAYBOOK.md with detailed 4-phase migration strategy - Add FUTURE_PROOF_SCALABILITY_PLAN.md with end-state architecture - Add migration_scripts/ with automated migration tools: - Docker Swarm setup and configuration - Traefik v3 reverse proxy deployment - Service migration automation - Backup and validation scripts - Monitoring and security hardening - Add comprehensive discovery results and audit data - Include zero-downtime migration strategy with rollback capabilities This provides a complete world-class migration solution for converting from current infrastructure to Future-Proof Scalability architecture.
411 lines
12 KiB
YAML
411 lines
12 KiB
YAML
---
|
|
# HomeAudit Infrastructure Migration Summary
|
|
# Generated: 2025-08-24
|
|
# Comprehensive analysis of 7 devices for migration planning
|
|
|
|
infrastructure:
|
|
devices:
|
|
omv800.local:
|
|
role: "primary_storage_media_server"
|
|
os: "Debian GNU/Linux 12 (bookworm)"
|
|
kernel: "6.12.38+deb12-amd64"
|
|
architecture: "x86_64"
|
|
cpu:
|
|
model: "Intel Core i5-6400 @ 2.70GHz"
|
|
cores: 4
|
|
threads: 4
|
|
max_freq: "3300.0000 MHz"
|
|
min_freq: "800.0000 MHz"
|
|
memory: "32GB (31Gi available)"
|
|
storage:
|
|
total_capacity: "~20.8TB"
|
|
drives:
|
|
- device: "sda"
|
|
size: "3.6T"
|
|
filesystem: "xfs"
|
|
mount: "/srv/dev-disk-by-uuid-3155f69a-52f3-4a27-8f95-493850a5a8cd"
|
|
- device: "sdb"
|
|
size: "476.9G"
|
|
type: "system_drive"
|
|
partitions:
|
|
- "512M vfat /boot/efi"
|
|
- "464.3G ext4 /"
|
|
- "976M swap"
|
|
- device: "sdc"
|
|
size: "238.5G"
|
|
filesystem: "ext4"
|
|
mount: "/srv/dev-disk-by-uuid-0f772f0b-917d-4337-a3c5-5cc5d3badac9"
|
|
- device: "sdd"
|
|
size: "1.9T"
|
|
filesystem: "ext4"
|
|
mount: "/srv/dev-disk-by-uuid-97cb939b-5af7-4dc1-8190-072eafb37d41"
|
|
- device: "sde"
|
|
size: "14.6T"
|
|
filesystem: "ext4"
|
|
mount: "/srv/dev-disk-by-uuid-5c3ca805-b67d-4cdb-af3d-926c0e16917c"
|
|
critical_data_paths:
|
|
- "/srv/mergerfs/DataPool"
|
|
- "/srv/mergerfs/presscloud"
|
|
migration_complexity: "high"
|
|
migration_priority: 1
|
|
|
|
jonathan-2518f5u:
|
|
role: "home_automation_hub"
|
|
os: "Ubuntu 24.04.3 LTS (Noble Numbat)"
|
|
architecture: "x86_64"
|
|
migration_complexity: "high"
|
|
migration_priority: 2
|
|
# Additional hardware details would be gathered similarly
|
|
|
|
fedora:
|
|
role: "development_workstation"
|
|
os: "Fedora Linux 42 (Workstation Edition)"
|
|
architecture: "x86_64"
|
|
migration_complexity: "medium"
|
|
migration_priority: 4
|
|
|
|
lenovo420:
|
|
role: "auxiliary_services"
|
|
os: "Ubuntu 24.04.3 LTS"
|
|
architecture: "x86_64"
|
|
migration_complexity: "medium"
|
|
migration_priority: 5
|
|
|
|
surface:
|
|
role: "appflowy_development"
|
|
os: "Ubuntu 24.04.3 LTS"
|
|
architecture: "x86_64"
|
|
migration_complexity: "medium"
|
|
migration_priority: 6
|
|
|
|
audrey:
|
|
role: "monitoring_utilities"
|
|
os: "Ubuntu 24.04.3 LTS"
|
|
architecture: "x86_64"
|
|
migration_complexity: "low"
|
|
migration_priority: 7
|
|
|
|
raspberrypi:
|
|
role: "minimal_services"
|
|
os: "Debian GNU/Linux 12 (bookworm)"
|
|
kernel: "6.12.34+rpt-rpi-v8"
|
|
architecture: "aarch64"
|
|
migration_complexity: "low"
|
|
migration_priority: 8
|
|
|
|
# Service Categories by Business Criticality
|
|
service_categories:
|
|
critical_infrastructure:
|
|
description: "Essential network and storage services"
|
|
priority: 1
|
|
services:
|
|
- name: "AdGuard Home"
|
|
host: "omv800.local"
|
|
function: "DNS filtering and blocking"
|
|
ports: ["53/tcp", "53/udp", "3000/tcp"]
|
|
data_persistence: ["config"]
|
|
|
|
- name: "Unbound"
|
|
host: "omv800.local"
|
|
function: "Recursive DNS resolver"
|
|
ports: ["5335/tcp"]
|
|
data_persistence: ["config"]
|
|
|
|
media_entertainment:
|
|
description: "Media streaming and entertainment services"
|
|
priority: 2
|
|
services:
|
|
- name: "Jellyfin"
|
|
host: "omv800.local"
|
|
function: "Media server"
|
|
image: "jellyfin/jellyfin:latest"
|
|
ports: ["8096/tcp"]
|
|
volumes:
|
|
- "jellyfin-config:/config"
|
|
- "jellyfin-cache:/cache"
|
|
bind_mounts:
|
|
- "/srv/mergerfs/DataPool/Movies:/media/movies"
|
|
- "/srv/mergerfs/DataPool/tv_shows:/media/tv_shows"
|
|
health_check: "curl --noproxy 'localhost' -Lk -fsS http://localhost:8096/health"
|
|
restart_policy: "unless-stopped"
|
|
migration_notes: "Large media files require careful bandwidth planning"
|
|
|
|
productivity_collaboration:
|
|
description: "File sharing and productivity applications"
|
|
priority: 3
|
|
services:
|
|
- name: "Nextcloud"
|
|
host: "omv800.local"
|
|
function: "Cloud storage and collaboration"
|
|
image: "nextcloud:latest"
|
|
ports: ["8080/tcp"]
|
|
bind_mounts:
|
|
- "/srv/mergerfs/DataPool/nextcloud/data:/var/www/html"
|
|
- "/srv/mergerfs/DataPool/nextcloud/config:/var/www/html/config"
|
|
- "/srv/mergerfs/DataPool/nextcloud/custom_apps:/var/www/html/custom_apps"
|
|
- "/srv/mergerfs/DataPool/nextcloud/themes:/var/www/html/themes"
|
|
network: "nextcloud_nextcloud-internal"
|
|
depends_on:
|
|
- "nextcloud-db"
|
|
- "nextcloud-redis"
|
|
environment:
|
|
- "REDIS_HOST=nextcloud-redis"
|
|
- "MYSQL_HOST=nextcloud-db"
|
|
- "NEXTCLOUD_TRUSTED_DOMAINS=localhost,nextcloud.local,192.168.50.66,100.98.144.95"
|
|
migration_complexity: "high"
|
|
migration_notes: "Database dependency requires coordinated migration"
|
|
|
|
- name: "Nextcloud Database"
|
|
host: "omv800.local"
|
|
function: "MySQL database for Nextcloud"
|
|
container: "nextcloud-db"
|
|
volumes: ["database volume with critical user data"]
|
|
|
|
- name: "Gitea"
|
|
host: "omv800.local"
|
|
function: "Git repository hosting"
|
|
migration_complexity: "medium"
|
|
|
|
photo_management:
|
|
description: "Photo storage and AI processing"
|
|
priority: 3
|
|
services:
|
|
- name: "Immich"
|
|
host: "omv800.local"
|
|
function: "Photo management with AI"
|
|
components:
|
|
- "immich_postgres"
|
|
- "immich_redis"
|
|
- "immich_machine_learning"
|
|
migration_complexity: "high"
|
|
migration_notes: "ML models and PostgreSQL data require special handling"
|
|
|
|
home_automation:
|
|
description: "Home automation and IoT management"
|
|
priority: 2
|
|
services:
|
|
- name: "Home Assistant"
|
|
host: "jonathan-2518f5u"
|
|
function: "Home automation hub"
|
|
migration_complexity: "high"
|
|
migration_notes: "Critical for home automation, requires device access"
|
|
|
|
- name: "ESPHome"
|
|
host: "jonathan-2518f5u"
|
|
function: "ESP device management"
|
|
|
|
- name: "Mosquitto"
|
|
host: "jonathan-2518f5u"
|
|
function: "MQTT broker"
|
|
|
|
- name: "Z-Wave JS UI"
|
|
host: "jonathan-2518f5u"
|
|
function: "Z-Wave device management"
|
|
|
|
document_management:
|
|
description: "Document processing and workflow"
|
|
priority: 4
|
|
services:
|
|
- name: "Paperless-NGX"
|
|
hosts: ["omv800.local", "jonathan-2518f5u"]
|
|
function: "Document management system"
|
|
components:
|
|
- "paperless-ngx_webserver_1"
|
|
- "paperless-ngx_broker_1"
|
|
- "paperless-db-1"
|
|
migration_complexity: "medium"
|
|
|
|
development_tools:
|
|
description: "Development and testing environment"
|
|
priority: 5
|
|
services:
|
|
- name: "AppFlowy Cloud"
|
|
host: "surface"
|
|
function: "Collaborative workspace"
|
|
components:
|
|
- "appflowy-cloud-appflowy_cloud-1"
|
|
- "appflowy-cloud-postgres-1"
|
|
- "appflowy-cloud-redis-1"
|
|
- "appflowy-cloud-minio-1"
|
|
- "appflowy-cloud-nginx-1"
|
|
- "appflowy-cloud-gotrue-1"
|
|
- "appflowy-cloud-appflowy_worker-1"
|
|
- "appflowy-cloud-admin_frontend-1"
|
|
- "appflowy-cloud-appflowy_web-1"
|
|
migration_complexity: "high"
|
|
|
|
monitoring_management:
|
|
description: "System monitoring and management"
|
|
priority: 6
|
|
services:
|
|
- name: "Portainer Agent"
|
|
hosts: ["multiple"]
|
|
function: "Docker container management"
|
|
migration_complexity: "low"
|
|
|
|
- name: "Watchtower"
|
|
hosts: ["multiple"]
|
|
function: "Automatic container updates"
|
|
migration_complexity: "low"
|
|
|
|
- name: "Uptime Kuma"
|
|
host: "audrey"
|
|
function: "Uptime monitoring"
|
|
migration_complexity: "low"
|
|
|
|
# Data Storage Analysis
|
|
data_storage:
|
|
critical_volumes:
|
|
nextcloud_data:
|
|
path: "/srv/mergerfs/DataPool/nextcloud"
|
|
estimated_size: "large"
|
|
contains: "user files, database, configurations"
|
|
backup_required: true
|
|
|
|
jellyfin_media:
|
|
paths:
|
|
- "/srv/mergerfs/DataPool/Movies"
|
|
- "/srv/mergerfs/DataPool/tv_shows"
|
|
estimated_size: "very_large"
|
|
contains: "media files"
|
|
backup_required: false
|
|
migration_method: "sync_transfer"
|
|
|
|
immich_photos:
|
|
path: "/srv/mergerfs/DataPool/immich"
|
|
estimated_size: "large"
|
|
contains: "photos, ML models, metadata"
|
|
backup_required: true
|
|
|
|
home_assistant_config:
|
|
path: "/config"
|
|
estimated_size: "small"
|
|
contains: "automation configurations, device states"
|
|
backup_required: true
|
|
criticality: "very_high"
|
|
|
|
docker_volumes:
|
|
persistent_volumes:
|
|
- "jellyfin-config"
|
|
- "jellyfin-cache"
|
|
- "nextcloud-db-data"
|
|
- "immich-postgres-data"
|
|
- "gitea-data"
|
|
|
|
mount_points:
|
|
mergerfs_pools:
|
|
- path: "/srv/mergerfs/DataPool"
|
|
devices: ["multiple large drives"]
|
|
function: "unified storage pool"
|
|
migration_complexity: "high"
|
|
|
|
# Migration Strategy Matrix
|
|
migration_matrix:
|
|
phase_1_critical:
|
|
duration: "1-2 days"
|
|
services:
|
|
- "AdGuard Home"
|
|
- "Unbound"
|
|
- "Home Assistant"
|
|
validation:
|
|
- "DNS resolution functional"
|
|
- "Home automation responsive"
|
|
- "Network services accessible"
|
|
rollback_plan: "Keep original services running until validation complete"
|
|
|
|
phase_2_media:
|
|
duration: "3-5 days"
|
|
services:
|
|
- "Jellyfin"
|
|
- "Nextcloud"
|
|
considerations:
|
|
- "Large data transfer requirements"
|
|
- "Bandwidth limitations during business hours"
|
|
- "User notification required"
|
|
validation:
|
|
- "Media streaming functional"
|
|
- "File sync operational"
|
|
- "Database integrity verified"
|
|
|
|
phase_3_productivity:
|
|
duration: "2-3 days"
|
|
services:
|
|
- "Immich"
|
|
- "Gitea"
|
|
- "Paperless-NGX"
|
|
validation:
|
|
- "Photo AI processing functional"
|
|
- "Git repositories accessible"
|
|
- "Document processing operational"
|
|
|
|
phase_4_development:
|
|
duration: "1-2 days"
|
|
services:
|
|
- "AppFlowy Cloud"
|
|
- "Development containers"
|
|
validation:
|
|
- "Development environment accessible"
|
|
- "Collaborative features functional"
|
|
|
|
phase_5_monitoring:
|
|
duration: "1 day"
|
|
services:
|
|
- "Portainer"
|
|
- "Watchtower"
|
|
- "Uptime Kuma"
|
|
validation:
|
|
- "Container management operational"
|
|
- "Monitoring dashboards accessible"
|
|
|
|
# Technical Migration Requirements
|
|
migration_requirements:
|
|
network:
|
|
bandwidth_needed: "1Gbps minimum for data transfer"
|
|
downtime_tolerance: "2-4 hours for critical services"
|
|
dns_changes: "Required for service discovery"
|
|
|
|
storage:
|
|
backup_space_required: "50% of total data"
|
|
transfer_methods:
|
|
- "rsync for incremental sync"
|
|
- "docker volume backup/restore"
|
|
- "database dumps and imports"
|
|
|
|
dependencies:
|
|
service_interdependencies:
|
|
- "nextcloud -> nextcloud-db + nextcloud-redis"
|
|
- "immich -> immich_postgres + immich_redis + immich_machine_learning"
|
|
- "paperless -> paperless-db + paperless-broker"
|
|
- "appflowy -> postgres + redis + minio"
|
|
|
|
validation_checkpoints:
|
|
automated_tests:
|
|
- "container health checks"
|
|
- "port accessibility tests"
|
|
- "database connection tests"
|
|
- "volume mount verification"
|
|
manual_tests:
|
|
- "user interface accessibility"
|
|
- "data integrity verification"
|
|
- "performance baseline comparison"
|
|
|
|
# Resource Allocation Planning
|
|
resource_planning:
|
|
target_infrastructure:
|
|
recommended_specs:
|
|
cpu: "8+ cores for containerized workload"
|
|
memory: "32GB+ for databases and media processing"
|
|
storage: "NVMe for databases, bulk storage for media"
|
|
network: "Gigabit ethernet minimum"
|
|
|
|
container_resource_requirements:
|
|
high_resource:
|
|
- "Immich ML processing"
|
|
- "Nextcloud with large user base"
|
|
- "Home Assistant with many integrations"
|
|
medium_resource:
|
|
- "Jellyfin media serving"
|
|
- "Database containers"
|
|
low_resource:
|
|
- "Monitoring containers"
|
|
- "Proxy containers" |