From fc4d6c3204d60373c72d351301f536f0ce7e9d8c Mon Sep 17 00:00:00 2001 From: devmatrix Date: Wed, 18 Feb 2026 13:25:20 +0000 Subject: [PATCH] Update production scripts with optimized settings - VM creation: Updated for vmbr1 network and pve-main NVMe storage - VM specs: 6 CPU cores, 16GB RAM, 150GB disk - Added NUMA optimization for dual-socket Xeon - Backup manager: Updated backup path to TrueNAS mount - Added validation checks for storage and network - Added TRIM support for SSD optimization --- infrastructure/backup-manager.sh | 2 +- proxmox/create-production-vm.sh | 97 +++++++++++++++++++++++--------- 2 files changed, 72 insertions(+), 27 deletions(-) diff --git a/infrastructure/backup-manager.sh b/infrastructure/backup-manager.sh index e4e8c32..e15323a 100755 --- a/infrastructure/backup-manager.sh +++ b/infrastructure/backup-manager.sh @@ -6,7 +6,7 @@ set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -BACKUP_ROOT="/mnt/nas/backups/mission-control" +BACKUP_ROOT="/mnt/truenas/backups/mission-control" DB_SOURCE="/home/devmatrix/mission-control/data/mission-control.db" CONFIG_SOURCE="/home/devmatrix/mission-control" LOG_FILE="/var/log/mission-control/backup.log" diff --git a/proxmox/create-production-vm.sh b/proxmox/create-production-vm.sh index 88de914..e5fd453 100755 --- a/proxmox/create-production-vm.sh +++ b/proxmox/create-production-vm.sh @@ -1,20 +1,20 @@ #!/bin/bash -# Proxmox Production VM Creator +# Proxmox Production VM Creator - Optimized for DevMatrix # Run this on the Proxmox host as root # Source: https://git.lemonlink.eu/devmatrix/devmatrix-scripts set -e -# Configuration -VM_ID=101 +# Configuration - EDIT THESE FOR YOUR ENVIRONMENT +VM_ID=201 # Changed from 101 (already exists) VM_NAME="DevMatrix-Prod" VM_IP="192.168.5.211/24" VM_GW="192.168.5.1" -VM_CPU=4 -VM_RAM=8192 # 8GB -VM_DISK=100 # GB -STORAGE="local-lvm" # Change to your storage -BRIDGE="vmbr0" +VM_CPU=6 # 6 cores (plenty for production) +VM_RAM=16384 # 16GB RAM (you have 94GB available) +VM_DISK=150 # 150GB on NVMe (pve-main) +STORAGE="pve-main" # Your NVMe storage +BRIDGE="vmbr1" # Your network bridge # Colors RED='\033[0;31m' @@ -38,15 +38,30 @@ if qm status $VM_ID > /dev/null 2>&1; then error "VM $VM_ID already exists!" fi +# Check if storage exists +if ! pvesm status | grep -q "$STORAGE"; then + error "Storage '$STORAGE' not found! Available storages:" + pvesm status + exit 1 +fi + +# Check if bridge exists +if ! ip link show "$BRIDGE" > /dev/null 2>&1; then + error "Bridge '$BRIDGE' not found! Available bridges:" + ip link show | grep "vmbr" + exit 1 +fi + log "🚀 Creating DevMatrix Production VM" log "====================================" log "" log "Configuration:" log " VM ID: $VM_ID" log " Name: $VM_NAME" -log " CPU: $VM_CPU cores" +log " CPU: $VM_CPU cores (Intel Xeon E5645)" log " RAM: $((VM_RAM / 1024))GB" -log " Disk: ${VM_DISK}GB" +log " Disk: ${VM_DISK}GB ($STORAGE NVMe)" +log " Network: $BRIDGE" log " IP: $VM_IP" log "" @@ -66,49 +81,68 @@ if [ ! -f "$CLOUD_IMAGE" ]; then success "Downloaded Ubuntu cloud image" fi -# Create VM -log "Creating VM..." +# Create VM with optimized settings +log "Creating VM with optimized settings..." qm create $VM_ID \ --name "$VM_NAME" \ --memory $VM_RAM \ --balloon 0 \ --cores $VM_CPU \ --cpu cputype=host \ - --net0 virtio,bridge=$BRIDGE \ + --sockets 2 \ + --numa 1 \ + --net0 virtio,bridge=$BRIDGE,firewall=1 \ --scsihw virtio-scsi-single \ --ostype l26 \ - --agent enabled=1 + --agent enabled=1,fstrim_cloned_disks=1 \ + --cpuunits 2048 \ + --onboot 1 -# Import disk -log "Importing disk..." +# Import disk to NVMe storage +log "Importing disk to $STORAGE..." qm importdisk $VM_ID "$CLOUD_IMAGE" $STORAGE --format qcow2 -# Attach disk -qm set $VM_ID --scsi0 ${STORAGE}:vm-${VM_ID}-disk-0 +# Attach disk with discard for TRIM support +qm set $VM_ID --scsi0 ${STORAGE}:vm-${VM_ID}-disk-0,discard=on,iothread=1 # Resize disk log "Resizing disk to ${VM_DISK}GB..." qm disk resize $VM_ID scsi0 ${VM_DISK}G -# Create CloudInit drive +# Create CloudInit drive on same storage log "Configuring CloudInit..." qm set $VM_ID --ide2 ${STORAGE}:cloudinit # Set boot order qm set $VM_ID --boot order=scsi0 -# Configure serial +# Configure serial for console qm set $VM_ID --serial0 socket --vga serial0 # Set IP configuration qm set $VM_ID --ipconfig0 ip=$VM_IP,gw=$VM_GW -# Set user/password (change these!) +# Set user/password qm set $VM_ID --ciuser devmatrix -qm set $VM_ID --cipassword $(openssl rand -base64 16) +qm set $VM_ID --cipassword $(openssl rand -base64 24) -# Enable QEMU agent -qm set $VM_ID --agent enabled=1 +# Configure SSH keys if available +if [ -f "/root/.ssh/authorized_keys" ]; then + log "Adding SSH keys from host..." + qm set $VM_ID --sshkeys < /root/.ssh/authorized_keys +fi + +# Enable QEMU agent with full features +qm set $VM_ID --agent enabled=1,fstrim_cloned_disks=1,type=virtio + +# Add tags for organization +qm set $VM_ID --tags production,mission-control,devmatrix + +# Set start at boot +qm set $VM_ID --onboot 1 + +# Configure backups (will use Proxmox backup settings) +log "Configuring backup options..." # Start VM log "Starting VM..." @@ -125,13 +159,24 @@ log " ID: $VM_ID" log " Name: $VM_NAME" log " IP: $VM_IP" log " Console: https://$(hostname -I | awk '{print $1}'):8006/#v1:0:=$VM_ID" +log " Storage: $STORAGE (NVMe)" +log " Network: $BRIDGE" log "" log "Next steps:" -log "1. Open console and get IP: qm console $VM_ID" +log "1. Open console: qm console $VM_ID" log "2. SSH into VM: ssh devmatrix@192.168.5.211" -log "3. Run setup: curl -fsSL https://git.lemonlink.eu/devmatrix/devmatrix-scripts/raw/branch/main/proxmox/setup-production-vm.sh | sudo bash" +log "3. Run setup script" log "" log "To view VM status:" log " qm status $VM_ID" log " qm list" log "" +log "Optimization notes:" +log " ✓ 6 CPU cores (NUMA optimized)" +log " ✓ 16GB RAM (dedicated, no ballooning)" +log " ✓ 150GB NVMe storage (TRIM enabled)" +log " ✓ 2 sockets for better NUMA performance" +log " ✓ High CPU priority (2048)" +log " ✓ Auto-start on boot" +log " ✓ QEMU guest agent enabled" +log ""