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>
This commit is contained in:
441
clients/grabb-durando/website-migration/README.md
Normal file
441
clients/grabb-durando/website-migration/README.md
Normal file
@@ -0,0 +1,441 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user