Files
claudetools/clients/grabb-durando/website-migration
Mike Swanson 07816eae46 docs: Add comprehensive project documentation from claude-projects scan
Added:
- PROJECTS_INDEX.md - Master catalog of 7 active projects
- GURURMM_API_ACCESS.md - Complete API documentation and credentials
- clients/dataforth/dos-test-machines/README.md - DOS update system docs
- clients/grabb-durando/website-migration/README.md - Migration procedures
- clients/internal-infrastructure/ix-server-issues-2026-01-13.md - Server issues
- projects/msp-tools/guru-connect/README.md - Remote desktop architecture
- projects/msp-tools/toolkit/README.md - MSP PowerShell tools
- projects/internal/acg-website-2025/README.md - Website rebuild docs
- test_gururmm_api.py - GuruRMM API testing script

Modified:
- credentials.md - Added GuruRMM database and API credentials
- GuruRMM agent integration files (WebSocket transport)

Total: 38,000+ words of comprehensive project documentation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-22 09:58:32 -07:00
..

Grabb & Durando Website Migration Project

Client: Grabb & Durando Law Firm Project Type: Website Migration Status: Planning Phase Priority: URGENT (source server 99% disk full) Target Date: ASAP

Critical Issue

Source Server (GoDaddy VPS) is 99% full with only 1.6GB free space!

Migration must happen soon to prevent service disruption.


Overview

Migration of data.grabbanddurando.com custom PHP application from GoDaddy VPS to ix.azcomputerguru.com.

Primary Domain: grabbanddurando.com (hosted on WebSvr) Subdomain: data.grabbanddurando.com (currently on GoDaddy VPS, target: IX)


Current Configuration

DNS & Hosting Summary

Domain/Subdomain Current Server IP Address Status
grabbanddurando.com WebSvr (ACG) 162.248.93.81 Stable
data.grabbanddurando.com GoDaddy VPS 208.109.235.224 URGENT: 99% disk

Source Server: GoDaddy VPS (208.109.235.224)

Status: LIVE PRODUCTION SITE

Server Details:

  • OS: CloudLinux 9.6
  • cPanel: v126.0 (build 11)
  • Disk: 99% full (1.6GB free!) - CRITICAL
  • SSH Access: ssh -i ~/.ssh/id_ed25519 root@208.109.235.224

Application Details:

  • cPanel Account: grabbandurando
  • Document Root: /home/grabbanddurando/public_html/new_gdapp
  • App Size: 1.8 GB
  • PHP Version: ea-php74 (PHP 7.4)
  • Framework: Custom PHP application using mysqli

Database:

  • Name: grabblaw_gdapp
  • Size: 31 MB
  • User: grabblaw_gdapp
  • Password: e8o8glFDZD
  • Host: localhost
  • Type: MySQL/MariaDB

Application Files:

  • Config: /home/grabbanddurando/public_html/new_gdapp/connection.php
  • Structure: Custom PHP app with mysqli database connections

Target Server: ix.azcomputerguru.com (72.194.62.5)

Server Details:

  • OS: CloudLinux 9.7
  • cPanel: Yes
  • Public IP: 72.194.62.5
  • Disk: 4.1TB free on /home - plenty of space
  • SSH Access: ssh root@ix.azcomputerguru.com

Account Status: Does NOT exist yet

  • Need to create grabbanddurando account OR add subdomain to existing account

Migration Components

1. Web Application Files

  • Location: /home/grabbanddurando/public_html/new_gdapp/
  • Size: 1.8 GB
  • Content: PHP files, assets, uploaded documents, old zip backups

2. Database

  • Name: grabblaw_gdapp
  • Size: 31 MB
  • Type: MySQL/MariaDB
  • Structure: Custom schema for law firm data application

3. Configuration Files

  • connection.php - Database credentials (mysqli)
  • .htaccess - Apache rewrite rules (if present)
  • php.ini - PHP settings (if custom)

4. DNS Update

  • Record Type: A record
  • Current: data.grabbanddurando.com → 208.109.235.224
  • Target: data.grabbanddurando.com → 72.194.62.5
  • DNS Management: WebSvr WHM Zone Editor (ACG Hosting nameservers)

Migration Plan

Phase 1: Preparation

On IX Server:

  1. Create cPanel account for grabbanddurando.com OR add data.grabbanddurando.com as subdomain to existing account
  2. Verify PHP 7.4 availability:
    /usr/local/bin/ea-php74 -v
    
  3. Create MySQL database and user:
    CREATE DATABASE grabblaw_gdapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'grabblaw_gdapp'@'localhost' IDENTIFIED BY 'NEW_SECURE_PASSWORD';
    GRANT ALL PRIVILEGES ON grabblaw_gdapp.* TO 'grabblaw_gdapp'@'localhost';
    FLUSH PRIVILEGES;
    

Phase 2: Data Transfer (GoDaddy → IX)

Export Database on GoDaddy:

ssh -i ~/.ssh/id_ed25519 root@208.109.235.224

# Create database dump
mysqldump -u grabblaw_gdapp -p'e8o8glFDZD' grabblaw_gdapp > /tmp/grabblaw_gdapp.sql

# Verify dump
ls -lh /tmp/grabblaw_gdapp.sql

Transfer Files:

# Server-to-server rsync (direct from GoDaddy to IX)
rsync -avz --progress \
  root@208.109.235.224:/home/grabbanddurando/public_html/new_gdapp/ \
  root@ix.azcomputerguru.com:/home/TARGET_ACCOUNT/public_html/new_gdapp/

# Alternative: Transfer via local machine
scp -i ~/.ssh/id_ed25519 root@208.109.235.224:/tmp/grabblaw_gdapp.sql ./
scp grabblaw_gdapp.sql root@ix.azcomputerguru.com:/tmp/

Transfer Database:

# Copy database dump to IX
scp root@208.109.235.224:/tmp/grabblaw_gdapp.sql root@ix.azcomputerguru.com:/tmp/

Phase 3: Import on IX

Import Database:

ssh root@ix.azcomputerguru.com

# Import database dump
mysql -u grabblaw_gdapp -p'NEW_SECURE_PASSWORD' grabblaw_gdapp < /tmp/grabblaw_gdapp.sql

# Verify import
mysql -u grabblaw_gdapp -p'NEW_SECURE_PASSWORD' grabblaw_gdapp -e "SHOW TABLES;"

Update Configuration:

# Edit connection.php
nano /home/TARGET_ACCOUNT/public_html/new_gdapp/connection.php

# Update database credentials:
# - host: localhost
# - database: grabblaw_gdapp
# - username: grabblaw_gdapp
# - password: NEW_SECURE_PASSWORD

Set Permissions:

# Fix ownership
chown -R TARGET_ACCOUNT:TARGET_ACCOUNT /home/TARGET_ACCOUNT/public_html/new_gdapp/

# Fix permissions
find /home/TARGET_ACCOUNT/public_html/new_gdapp/ -type d -exec chmod 755 {} \;
find /home/TARGET_ACCOUNT/public_html/new_gdapp/ -type f -exec chmod 644 {} \;

Phase 4: Testing

Hosts File Test:

# Add to local machine /etc/hosts (Linux/Mac) or C:\Windows\System32\drivers\etc\hosts (Windows)
72.194.62.5 data.grabbanddurando.com

# Test in browser
https://data.grabbanddurando.com

# Remove hosts entry after testing

Verification Checklist:

  • Login functionality works
  • Database queries successful
  • File uploads work
  • All pages load without errors
  • SSL certificate valid
  • PHP errors logged (check error_log)

Phase 5: DNS Cutover

Update DNS on WebSvr:

# SSH to WebSvr
ssh root@websvr.acghosting.com

# Edit zone file in WHM Zone Editor
# OR via command line:
# Update data.grabbanddurando.com A record from 208.109.235.224 to 72.194.62.5

DNS Record:

data.grabbanddurando.com.  3600  IN  A  72.194.62.5

Propagation:

  • Wait 1-4 hours for DNS propagation
  • Monitor with: dig data.grabbanddurando.com +short
  • Test from multiple locations

Phase 6: Post-Migration

Monitor:

  • Check IX server logs for PHP errors
  • Monitor database performance
  • Verify SSL certificate auto-renews (Let's Encrypt)
  • Check disk space usage

Client Communication:

  • Notify Grabb & Durando of successful migration
  • Confirm application functionality
  • Provide new server details for their records

Cleanup (after 1 week):

  • Remove application from GoDaddy VPS (free up disk space)
  • Keep database backup for 30 days
  • Cancel GoDaddy VPS subscription (if no longer needed)

Technical Notes

Why WHM Transfer Won't Work

Built-in WHM transfer tools expect to move entire cPanel accounts. In this case:

  1. Main domain (grabbanddurando.com) is on WebSvr
  2. Subdomain app (data.grabbanddurando.com) is on GoDaddy VPS
  3. Only migrating subdomain's application and database
  4. Subdomain is part of different accounts on different servers
  5. DNS managed on WebSvr (ACG Hosting nameservers)

Solution: Manual migration via rsync and database dump/restore.

PHP 7.4 Compatibility

Application built for PHP 7.4 (ea-php74). IX server must have this version available.

Check IX PHP versions:

ls /opt/cpanel/ea-php*/root/usr/bin/php

If PHP 7.4 not available, install via EasyApache 4 in WHM.

SSL Certificate

After DNS update, SSL certificate will need to be reissued for new server.

Options:

  1. Let's Encrypt (free, auto-renewal via cPanel)
  2. Existing certificate (if portable)
  3. New commercial certificate

cPanel AutoSSL: Should auto-detect and issue Let's Encrypt cert within hours of DNS propagation.


Rollback Plan

If issues occur after DNS cutover:

  1. Immediate: Revert DNS A record to 208.109.235.224
  2. Wait: 5-10 minutes for DNS to propagate back
  3. Investigate: Fix issues on IX server
  4. Retry: Update DNS again when ready

Keep GoDaddy VPS active for at least 1 week after successful migration.


Server Access

GoDaddy VPS (Source)

ssh -i ~/.ssh/id_ed25519 root@208.109.235.224

IX Server (Target)

ssh root@ix.azcomputerguru.com
# OR
ssh root@172.16.3.10  # Internal IP

WebSvr (DNS Management)

ssh root@websvr.acghosting.com

Useful Commands

Database Operations

# Export database
mysqldump -u USER -pPASS DATABASE > backup.sql

# Import database
mysql -u USER -pPASS DATABASE < backup.sql

# Show database size
mysql -u USER -pPASS -e "SELECT table_schema AS 'Database',
  ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
  FROM information_schema.tables
  WHERE table_schema='grabblaw_gdapp'
  GROUP BY table_schema;"

File Transfer

# Rsync with progress
rsync -avz --progress SOURCE/ DEST/

# SCP single file
scp file.sql root@server:/tmp/

# Check transfer size before rsync
du -sh /path/to/files

DNS Verification

# Check current DNS
dig data.grabbanddurando.com +short

# Check from specific nameserver
dig @8.8.8.8 data.grabbanddurando.com +short

# Trace DNS path
dig data.grabbanddurando.com +trace

Timeline

Estimated Duration: 2-4 hours

Breakdown:

  • Preparation: 30 minutes
  • Data transfer: 1-2 hours (depending on GoDaddy → IX network speed)
  • Testing: 30 minutes
  • DNS cutover: 15 minutes
  • Monitoring: 1-4 hours (DNS propagation)

Recommended Time: Off-hours (evening/weekend) to minimize user impact


Contacts

Client: Grabb & Durando Law Firm Primary Contact: [Pending] Email: [Pending] Phone: [Pending]

Technical Support:


Session Logs:

  • ~/claude-projects/session-logs/2025-12-15-data-grabbanddurando-complete.md
  • ~/claude-projects/session-logs/2025-12-15-data-grabbanddurando-mariadb-fix.md
  • ~/claude-projects/session-logs/2025-12-15-grabbanddurando-calendar-fix.md

Additional Notes:

  • ~/claude-projects/grabb-website-move/email-to-jason-data-app.md
  • ~/claude-projects/grabb-website-move/ix-security-hardening-notes.md

Post-Migration Enhancements (Optional)

After successful migration, consider:

  1. Performance Optimization:

    • Enable OPcache for PHP
    • Configure MariaDB query cache
    • Implement Redis for session storage
  2. Security Hardening:

    • Update PHP to 8.x (test compatibility first)
    • Implement Wordfence or similar WAF
    • Enable CSP headers
    • Regular security audits
  3. Backup Strategy:

    • Daily database backups
    • Weekly full application backups
    • Offsite backup storage (S3, etc.)
  4. Monitoring:

    • Uptime monitoring
    • Performance metrics
    • Error tracking (Sentry, etc.)

Project Status: Planning Phase - Ready to Execute Next Step: Create cPanel account on IX and schedule migration window with client Priority: URGENT - Source server critically low on disk space