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>
442 lines
11 KiB
Markdown
442 lines
11 KiB
Markdown
# 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:
|
|
```bash
|
|
/usr/local/bin/ea-php74 -v
|
|
```
|
|
3. Create MySQL database and user:
|
|
```sql
|
|
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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
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)
|
|
```bash
|
|
ssh -i ~/.ssh/id_ed25519 root@208.109.235.224
|
|
```
|
|
|
|
### IX Server (Target)
|
|
```bash
|
|
ssh root@ix.azcomputerguru.com
|
|
# OR
|
|
ssh root@172.16.3.10 # Internal IP
|
|
```
|
|
|
|
### WebSvr (DNS Management)
|
|
```bash
|
|
ssh root@websvr.acghosting.com
|
|
```
|
|
|
|
---
|
|
|
|
## Useful Commands
|
|
|
|
### Database Operations
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:**
|
|
- Arizona Computer Guru (MSP)
|
|
- Mike Swanson: mike@azcomputerguru.com
|
|
- Phone: 520.304.8300
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
**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
|