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:
447
clients/dataforth/dos-test-machines/README.md
Normal file
447
clients/dataforth/dos-test-machines/README.md
Normal file
@@ -0,0 +1,447 @@
|
||||
# Dataforth DOS Test Machines Project
|
||||
|
||||
**Client:** Dataforth Corporation
|
||||
**Status:** 90% Complete, Working
|
||||
**Project Start:** 2025-12-14
|
||||
**Last Updated:** 2026-01-22
|
||||
|
||||
## Project Overview
|
||||
|
||||
Automated update and management system for approximately 30 DOS 6.22 test stations running QuickBASIC 4.5 data acquisition software at Dataforth's engineering facility.
|
||||
|
||||
**Primary Challenge:** Legacy DOS machines require SMB1 protocol, Windows Kerberos authentication incompatible with DOS networking.
|
||||
|
||||
**Solution:** D2TESTNAS (TrueNAS) acts as SMB1-to-SMB2 proxy with bidirectional sync to AD2 production server.
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ DOS Machines │◄──SMB1─►│ D2TESTNAS │◄──SMB2─►│ AD2 │
|
||||
│ (TS-XX) │ │ (192.168.0.9) │ │ (192.168.0.6) │
|
||||
│ DOS 6.22 │ │ TrueNAS/proxy │ │ Production Svr │
|
||||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||||
│
|
||||
│ Sync every 15 min
|
||||
▼
|
||||
[Bidirectional Sync]
|
||||
/root/sync-to-ad2.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Network Configuration
|
||||
|
||||
| Device | IP | Role | OS | Credentials |
|
||||
|--------|-----|------|-----|-------------|
|
||||
| D2TESTNAS | 192.168.0.9 | NAS/SMB1 proxy | TrueNAS | admin / Paper123!@#-nas |
|
||||
| AD2 | 192.168.0.6 | Production server | Windows Server 2008 R2 | INTRANET\sysadmin / Paper123!@# |
|
||||
| UDM | 192.168.0.254 | Gateway/Router | UniFi Dream Machine | admin / [see credentials.md] |
|
||||
| DOS Stations | 192.168.0.x | Test stations (TS-XX) | DOS 6.22 | N/A |
|
||||
|
||||
**Network:** 192.168.0.0/24 (Dataforth engineering network)
|
||||
|
||||
---
|
||||
|
||||
## Key Components
|
||||
|
||||
### 1. SMB Shares
|
||||
|
||||
#### D2TESTNAS Shares (SMB1)
|
||||
- **test:** `/data/test/` - Main working share for DOS machines
|
||||
- **datasheets:** `/data/datasheets/` - Engineering documentation and configs
|
||||
|
||||
#### AD2 Shares (SMB2)
|
||||
- **\\AD2\test** - C:\Shares\test\ (production working directory)
|
||||
- **\\AD2\datasheets** - PENDING (waiting on Engineering input)
|
||||
|
||||
### 2. UPDATE.BAT - Remote Management Utility
|
||||
|
||||
**Location:**
|
||||
- NAS: `/data/test/UPDATE.BAT`
|
||||
- AD2: `C:\Shares\test\UPDATE.BAT`
|
||||
- DOS: `T:\UPDATE.BAT` (via mapped drive)
|
||||
|
||||
**Usage:**
|
||||
```batch
|
||||
REM Update all components for station TS-27
|
||||
T:\UPDATE TS-27 ALL
|
||||
|
||||
REM Update specific component
|
||||
T:\UPDATE TS-27 GPIB
|
||||
T:\UPDATE TS-27 AUTOEXEC
|
||||
```
|
||||
|
||||
**Functions:**
|
||||
- Deploys configuration files from central location
|
||||
- Updates AUTOEXEC.BAT, CONFIG.SYS
|
||||
- Syncs GPIB drivers and QuickBASIC modules
|
||||
- Creates station-specific directories
|
||||
|
||||
### 3. TODO.BAT - Automated Task Execution
|
||||
|
||||
**Location:** `T:\TS-XX\TODO.BAT` (created by admin on AD2)
|
||||
|
||||
**Behavior:**
|
||||
- Placed in station-specific folder: `\\AD2\test\TS-XX\TODO.BAT`
|
||||
- Sync copies to NAS (every 15 min)
|
||||
- DOS machine runs on boot via AUTOEXEC.BAT
|
||||
- Automatically deletes after execution
|
||||
- Results logged to `TS-XX\TODO.LOG`
|
||||
|
||||
**Example Use Cases:**
|
||||
- Remote diagnostic commands
|
||||
- Configuration updates
|
||||
- File collection
|
||||
- System information gathering
|
||||
|
||||
### 4. Bidirectional Sync System
|
||||
|
||||
**Script:** `/root/sync-to-ad2.sh` on D2TESTNAS
|
||||
|
||||
**Credentials:** `/root/.ad2creds`
|
||||
```
|
||||
username=sysadmin
|
||||
password=Paper123!@#
|
||||
domain=INTRANET
|
||||
```
|
||||
|
||||
**Log:** `/var/log/ad2-sync.log`
|
||||
|
||||
**Schedule:** Every 15 minutes via cron
|
||||
```cron
|
||||
*/15 * * * * /root/sync-to-ad2.sh >> /var/log/ad2-sync.log 2>&1
|
||||
```
|
||||
|
||||
**Sync Strategy:**
|
||||
- **NAS → AD2:** rsync with --update (newer files win)
|
||||
- **AD2 → NAS:** rsync with --update (newer files win)
|
||||
- **Deletions:** Not synced (safety measure)
|
||||
- **Conflicts:** Newer timestamp wins
|
||||
|
||||
**Monitoring:**
|
||||
```bash
|
||||
# View recent sync activity
|
||||
ssh root@192.168.0.9 'tail -50 /var/log/ad2-sync.log'
|
||||
|
||||
# Check sync status file
|
||||
smbclient //192.168.0.6/test -U sysadmin%'Paper123!@#' -c 'get _SYNC_STATUS.txt -'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DOS Machine Configuration
|
||||
|
||||
### Network Setup
|
||||
Each DOS station uses Microsoft Network Client 3.0:
|
||||
|
||||
**AUTOEXEC.BAT:**
|
||||
```batch
|
||||
@ECHO OFF
|
||||
C:\NET\NET START
|
||||
NET USE T: \\D2TESTNAS\TEST
|
||||
IF EXIST T:\TS-XX\TODO.BAT CALL T:\TS-XX\TODO.BAT
|
||||
```
|
||||
|
||||
**PROTOCOL.INI:**
|
||||
- Workgroup: WORKGROUP
|
||||
- ComputerName: TS-XX
|
||||
- Protocol: NetBEUI over SMB1 CORE
|
||||
|
||||
### WINS Configuration
|
||||
**Critical:** WINS server (192.168.0.254) required for NetBIOS name resolution.
|
||||
|
||||
Without WINS, DOS machines cannot resolve `\\D2TESTNAS` to 192.168.0.9.
|
||||
|
||||
---
|
||||
|
||||
## File Locations
|
||||
|
||||
### On D2TESTNAS (192.168.0.9)
|
||||
```
|
||||
/data/test/
|
||||
├── UPDATE.BAT # Central management utility
|
||||
├── TS-XX/ # Per-station folders
|
||||
│ ├── TODO.BAT # Remote task (if present)
|
||||
│ └── TODO.LOG # Task execution log
|
||||
├── CONFIGS/ # Master config templates
|
||||
├── GPIB/ # GPIB driver files
|
||||
└── _SYNC_STATUS.txt # Last sync timestamp
|
||||
|
||||
/data/datasheets/
|
||||
└── CONFIGS/ # Full DOS image from TS-27
|
||||
└── [1790 files, 44MB]
|
||||
```
|
||||
|
||||
### On AD2 (192.168.0.6)
|
||||
```
|
||||
C:\Shares\test\
|
||||
├── UPDATE.BAT
|
||||
├── TS-XX\
|
||||
│ ├── TODO.BAT
|
||||
│ └── TODO.LOG
|
||||
├── CONFIGS\
|
||||
├── GPIB\
|
||||
└── _SYNC_STATUS.txt
|
||||
```
|
||||
|
||||
### On DOS Machines
|
||||
```
|
||||
C:\
|
||||
├── AUTOEXEC.BAT # Network startup + TODO execution
|
||||
├── CONFIG.SYS # Device drivers
|
||||
├── NET\ # Network client files
|
||||
├── GPIB\ # GPIB ISA card drivers
|
||||
└── QB45\ # QuickBASIC 4.5
|
||||
|
||||
T:\ (mapped to \\D2TESTNAS\TEST)
|
||||
├── UPDATE.BAT
|
||||
├── TS-XX\
|
||||
│ └── TODO.BAT (if present)
|
||||
└── [shared files]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Common Operations
|
||||
|
||||
### Accessing Infrastructure
|
||||
|
||||
#### SSH to NAS
|
||||
```bash
|
||||
ssh root@192.168.0.9
|
||||
# Uses ed25519 key from ~/.ssh/id_ed25519
|
||||
```
|
||||
|
||||
#### SMB to NAS (from Windows)
|
||||
```bash
|
||||
# Via PowerShell
|
||||
New-SmbMapping -LocalPath T: -RemotePath \\192.168.0.9\test -UserName admin -Password Paper123!@#-nas
|
||||
|
||||
# Via Command Prompt
|
||||
net use T: \\192.168.0.9\test /user:admin Paper123!@#-nas
|
||||
```
|
||||
|
||||
#### SMB to AD2
|
||||
```bash
|
||||
# Via PowerShell (from GuruRMM/Jupiter)
|
||||
$password = ConvertTo-SecureString 'Paper123!@#' -AsPlainText -Force
|
||||
$cred = New-Object System.Management.Automation.PSCredential('INTRANET\sysadmin', $password)
|
||||
New-PSDrive -Name AD2 -PSProvider FileSystem -Root "\\192.168.0.6\C$" -Credential $cred
|
||||
```
|
||||
|
||||
### Deploying Updates to DOS Machines
|
||||
|
||||
#### Method 1: UPDATE.BAT (Normal Operation)
|
||||
```batch
|
||||
REM Edit UPDATE.BAT on AD2
|
||||
\\192.168.0.6\test\UPDATE.BAT
|
||||
|
||||
REM Wait for sync (every 15 min) or trigger manually:
|
||||
ssh root@192.168.0.9 '/root/sync-to-ad2.sh'
|
||||
|
||||
REM On DOS machine:
|
||||
T:\UPDATE TS-XX ALL
|
||||
```
|
||||
|
||||
#### Method 2: TODO.BAT (Remote Execution)
|
||||
```batch
|
||||
REM Create TODO.BAT on AD2
|
||||
echo DIR C:\ > \\192.168.0.6\test\TS-27\TODO.BAT
|
||||
|
||||
REM Wait for sync
|
||||
REM DOS machine runs on next boot, then deletes TODO.BAT
|
||||
|
||||
REM Check results
|
||||
type \\192.168.0.6\test\TS-27\TODO.LOG
|
||||
```
|
||||
|
||||
### Monitoring Sync
|
||||
|
||||
```bash
|
||||
# View sync log
|
||||
ssh root@192.168.0.9 'tail -50 /var/log/ad2-sync.log'
|
||||
|
||||
# Check last sync status
|
||||
smbclient //192.168.0.6/test -U sysadmin%'Paper123!@#' -c 'get _SYNC_STATUS.txt -'
|
||||
|
||||
# Manual sync trigger
|
||||
ssh root@192.168.0.9 '/root/sync-to-ad2.sh'
|
||||
```
|
||||
|
||||
### Testing DOS Machine
|
||||
|
||||
```batch
|
||||
REM From DOS machine:
|
||||
C:\NET\NET VIEW
|
||||
C:\NET\NET USE
|
||||
DIR T:\
|
||||
|
||||
REM Test UPDATE.BAT
|
||||
T:\UPDATE TS-XX ALL
|
||||
|
||||
REM Check for TODO.BAT
|
||||
IF EXIST T:\TS-XX\TODO.BAT TYPE T:\TS-XX\TODO.BAT
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Tested Machines
|
||||
|
||||
| Station | Status | Last Test | Notes |
|
||||
|---------|--------|-----------|-------|
|
||||
| TS-27 | ✅ Working | 2025-12-14 | Reference machine, full config captured |
|
||||
| TS-8L | ✅ Working | 2025-12-14 | Network config updated |
|
||||
| TS-8R | ✅ Working | 2025-12-14 | Network config updated |
|
||||
| TS-XX (others) | ⏳ Pending | N/A | ~27 machines need config updates |
|
||||
|
||||
---
|
||||
|
||||
## Remaining Tasks
|
||||
|
||||
### High Priority
|
||||
- [ ] Create `\\AD2\datasheets` share (waiting on Engineering input for folder location)
|
||||
- [ ] Update network configuration on remaining ~27 DOS machines
|
||||
- [ ] Document QuickBASIC application details (if Engineering provides info)
|
||||
|
||||
### Medium Priority
|
||||
- [ ] Create comprehensive DOS machine inventory
|
||||
- [ ] Test TODO.BAT on all stations
|
||||
- [ ] Set up automated health monitoring
|
||||
|
||||
### Low Priority
|
||||
- [ ] Explore VPN access for remote management
|
||||
- [ ] Investigate modern DOS alternatives (FreeDOS, etc.)
|
||||
- [ ] Create backup/restore procedures for DOS machine images
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### DOS Machine Cannot Access T: Drive
|
||||
|
||||
**Check:**
|
||||
1. Network cable connected?
|
||||
2. WINS server reachable? `ping 192.168.0.254`
|
||||
3. NetBIOS name resolution? Try IP: `NET USE T: \\192.168.0.9\TEST`
|
||||
4. NAS share accessible? Test from Windows: `\\192.168.0.9\test`
|
||||
|
||||
**Common Fixes:**
|
||||
- Restart network client: `C:\NET\NET STOP` then `C:\NET\NET START`
|
||||
- Check PROTOCOL.INI for typos
|
||||
- Verify WINS server setting in UDM
|
||||
|
||||
### Sync Not Working
|
||||
|
||||
**Check:**
|
||||
1. Cron running? `ssh root@192.168.0.9 'ps aux | grep cron'`
|
||||
2. Credentials valid? `cat /root/.ad2creds`
|
||||
3. SMB mount successful? `ssh root@192.168.0.9 'mount | grep /mnt/ad2-test'`
|
||||
4. Recent errors? `ssh root@192.168.0.9 'tail -50 /var/log/ad2-sync.log'`
|
||||
|
||||
**Common Fixes:**
|
||||
- Re-mount AD2 share: Run sync script manually
|
||||
- Check AD2 reachability: `ping 192.168.0.6`
|
||||
- Verify sysadmin credentials
|
||||
|
||||
### UPDATE.BAT Fails
|
||||
|
||||
**Check:**
|
||||
1. Batch file has DOS line endings (CR+LF)?
|
||||
2. Paths correct for DOS (8.3 format if needed)?
|
||||
3. Files exist on T: drive?
|
||||
4. Sufficient disk space on C: drive?
|
||||
|
||||
**Common Fixes:**
|
||||
- Convert line endings: `unix2dos UPDATE.BAT`
|
||||
- Test manually: Run commands one by one
|
||||
- Check sync: Files may not be on NAS yet
|
||||
|
||||
---
|
||||
|
||||
## Technical Details
|
||||
|
||||
### DOS 6.22 Limitations
|
||||
- **Filenames:** 8.3 format only (FILENAME.EXT)
|
||||
- **Line Endings:** CR+LF (\\r\\n) required for batch files
|
||||
- **Networking:** SMB1 CORE protocol only
|
||||
- **Authentication:** No Kerberos, plaintext passwords
|
||||
- **Memory:** 640KB conventional + extended via HIMEM.SYS
|
||||
|
||||
### SMB Protocol Versions
|
||||
- **SMB1 CORE:** DOS machines (1985, insecure)
|
||||
- **SMB1:** Windows XP / Server 2003
|
||||
- **SMB2:** Windows Vista / Server 2008+
|
||||
- **SMB3:** Windows 8 / Server 2012+
|
||||
|
||||
### TrueNAS Configuration
|
||||
- SMB service enabled with SMB1 support
|
||||
- Guest access disabled
|
||||
- User: admin with password authentication
|
||||
- Shares: test, datasheets
|
||||
|
||||
---
|
||||
|
||||
## Documentation
|
||||
|
||||
### Original Implementation
|
||||
**Session Log:** `~/claude-projects/session-logs/2025-12-14-dataforth-dos-machines.md`
|
||||
**Implementation Time:** ~11 hours
|
||||
**Date:** 2025-12-14
|
||||
|
||||
### Additional Documentation
|
||||
- **CREDENTIALS.md** - All access credentials
|
||||
- **NETWORK_TOPOLOGY.md** - Network diagram and IP addresses
|
||||
- **SYNC_SCRIPT.md** - Bidirectional sync documentation
|
||||
- **DOS_BATCH_FILES.md** - UPDATE.BAT and TODO.BAT details
|
||||
- **GITEA_ACCESS.md** - Repository access instructions
|
||||
- **PROJECT_INDEX.md** - Quick reference guide
|
||||
|
||||
### Source Repository
|
||||
```bash
|
||||
git clone --no-checkout https://git.azcomputerguru.com/azcomputerguru/claude-projects.git
|
||||
cd claude-projects
|
||||
git sparse-checkout init --cone
|
||||
git sparse-checkout set dataforth-dos
|
||||
git checkout main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Project History
|
||||
|
||||
**2025-12-14:** Initial implementation, sync system created, TS-27/TS-8L/TS-8R tested
|
||||
**2025-12-20:** VPN access configured for remote management
|
||||
**2026-01-13:** Dataforth DOS project recalled for additional work
|
||||
**2026-01-19:** DOS deployment verification, AD2-NAS sync enhancements
|
||||
**2026-01-20:** DOS Update System comprehensive documentation created
|
||||
**2026-01-22:** Project documentation imported to ClaudeTools
|
||||
|
||||
---
|
||||
|
||||
## Support Contacts
|
||||
|
||||
**Client:** Dataforth Corporation
|
||||
**Engineering Contact:** [Pending]
|
||||
**Network Administrator:** [Pending]
|
||||
|
||||
**Technical Support:**
|
||||
- Arizona Computer Guru (MSP)
|
||||
- Phone: 520.304.8300
|
||||
- Email: support@azcomputerguru.com
|
||||
|
||||
---
|
||||
|
||||
## Related Projects
|
||||
|
||||
- **GuruRMM:** Remote monitoring system (AD2 has agent installed)
|
||||
- **ClaudeTools:** Project tracking and documentation system
|
||||
- **Session Logs:** Complete work history in claude-projects/session-logs/
|
||||
|
||||
---
|
||||
|
||||
**Project Status:** 90% Complete, Operational
|
||||
**Next Steps:** Datasheets share creation, remaining machine configs
|
||||
**Maintenance:** Automated sync, minimal intervention required
|
||||
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
|
||||
346
clients/internal-infrastructure/ix-server-issues-2026-01-13.md
Normal file
346
clients/internal-infrastructure/ix-server-issues-2026-01-13.md
Normal file
@@ -0,0 +1,346 @@
|
||||
# IX Server Critical Performance Issues
|
||||
|
||||
**Server:** ix.azcomputerguru.com (172.16.3.10 / 72.194.62.5)
|
||||
**Report Date:** 2026-01-13
|
||||
**Status:** Documented - Action Required
|
||||
**Priority:** CRITICAL
|
||||
|
||||
## Executive Summary
|
||||
|
||||
Comprehensive scan of ix.azcomputerguru.com web hosting server revealed critical performance issues across multiple client sites. Primary issues: massive error logs (468MB on arizonahatters.com), database bloat (310MB on peacefulspirit.com), and Wordfence-induced memory exhaustion.
|
||||
|
||||
---
|
||||
|
||||
## Critical Priority Sites
|
||||
|
||||
### 1. arizonahatters.com - MOST URGENT
|
||||
|
||||
**Error Log:** 468MB
|
||||
**PHP Memory Errors:** 429 occurrences
|
||||
**Database:** 24.5MB (Wordfence bloat: wp_wffilemods 8.52MB, wp_wfknownfilelist 4.52MB)
|
||||
|
||||
**Issue:** Wordfence file scanning causing continuous memory exhaustion
|
||||
|
||||
**Impact:**
|
||||
- Site performance degraded
|
||||
- Server resources exhausted
|
||||
- Risk of complete service failure
|
||||
|
||||
**Action Required:**
|
||||
1. Disable Wordfence file scanning temporarily
|
||||
2. Clear Wordfence file modification tables
|
||||
3. Truncate error log: `/home/arizonahatters/public_html/wp-content/debug.log`
|
||||
4. Re-enable Wordfence with adjusted settings (scan schedule, memory limit)
|
||||
|
||||
**Commands:**
|
||||
```bash
|
||||
# Backup then truncate error log
|
||||
ssh root@172.16.3.10
|
||||
cd /home/arizonahatters/public_html/wp-content/
|
||||
cp debug.log debug.log.backup.2026-01-13
|
||||
> debug.log
|
||||
|
||||
# Database cleanup (via WP-CLI)
|
||||
wp db query "TRUNCATE TABLE wp_wffilemods;" --path=/home/arizonahatters/public_html/
|
||||
wp db query "TRUNCATE TABLE wp_wfknownfilelist;" --path=/home/arizonahatters/public_html/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. peacefulspirit.com
|
||||
|
||||
**Error Log:** 4.0MB
|
||||
**PHP Memory Errors:** 2 occurrences
|
||||
**Database:** 310MB! (wp_wpml_mails: 156MB, wp_gf_entry_meta: 96MB)
|
||||
|
||||
**Issue:** WPML email logs and Gravity Forms data bloat
|
||||
|
||||
**Impact:**
|
||||
- Slow database queries
|
||||
- Backup size excessive
|
||||
- Disk space waste
|
||||
|
||||
**Action Required:**
|
||||
1. Truncate WPML email logs table
|
||||
2. Archive or delete old Gravity Forms entries
|
||||
3. Configure WPML to limit email log retention
|
||||
4. Implement Gravity Forms entry retention policy
|
||||
|
||||
**Commands:**
|
||||
```bash
|
||||
# WPML email logs cleanup
|
||||
wp db query "TRUNCATE TABLE wp_wpml_mails;" --path=/home/peacefulspirit/public_html/
|
||||
|
||||
# Gravity Forms cleanup (entries older than 1 year)
|
||||
wp db query "DELETE FROM wp_gf_entry WHERE date_created < DATE_SUB(NOW(), INTERVAL 1 YEAR);" --path=/home/peacefulspirit/public_html/
|
||||
wp db query "DELETE FROM wp_gf_entry_meta WHERE entry_id NOT IN (SELECT id FROM wp_gf_entry);" --path=/home/peacefulspirit/public_html/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## High Priority Sites (>50MB Error Logs)
|
||||
|
||||
| Site | Error Log Size | Primary Issue |
|
||||
|------|---------------|---------------|
|
||||
| desertfox.com | 215MB | Unknown - needs investigation |
|
||||
| outaboundssports.com | 208MB | Unknown - needs investigation |
|
||||
| rrspc.com | 183MB | Unknown - needs investigation |
|
||||
| farwest.com | 100MB | Unknown - needs investigation |
|
||||
| fsgtucson.com | 64MB | Unknown - needs investigation |
|
||||
| tonystech.com | 54MB | Unknown - needs investigation |
|
||||
| phxpropane.com | 52MB | Unknown - needs investigation |
|
||||
| rednourlaw.com | 50MB | Unknown - needs investigation |
|
||||
| gurushow.com | 40MB | Unknown - needs investigation |
|
||||
| cryoweave.com | 37MB | Unknown - needs investigation |
|
||||
| bruceext.com | 31MB | Unknown - needs investigation |
|
||||
|
||||
**Recommended Action:**
|
||||
1. Rotate error logs (backup and truncate)
|
||||
2. Analyze recent errors for patterns
|
||||
3. Address root causes (plugin conflicts, PHP errors, etc.)
|
||||
4. Implement log rotation via logrotate
|
||||
|
||||
---
|
||||
|
||||
## Medium Priority Sites (Debug Logs)
|
||||
|
||||
| Site | Debug Log Size | Additional Issues |
|
||||
|------|---------------|-------------------|
|
||||
| gentlemansacres.com | debug.log: 350MB | N/A |
|
||||
| azrestaurant.com | debug.log: 181MB, itsec_logs: 53MB | iThemes Security logs |
|
||||
| rsi.com | debug.log: 166MB | N/A |
|
||||
| voicesofthewest.com | akeeba log: 106MB | Backup log bloat |
|
||||
|
||||
**Action Required:**
|
||||
- Disable WP_DEBUG in production (wp-config.php)
|
||||
- Truncate debug logs
|
||||
- Configure iThemes Security log retention
|
||||
- Clean up Akeeba backup logs
|
||||
|
||||
---
|
||||
|
||||
## Common Issues Found
|
||||
|
||||
### 1. Wordfence Database Bloat (Most Sites)
|
||||
|
||||
**Tables:**
|
||||
- wp_wffilemods: 1.4-8.52MB
|
||||
- wp_wfknownfilelist: 0.86-4.52MB
|
||||
- wp_wfconfig: Up to 3.30MB
|
||||
|
||||
**Solution:**
|
||||
```sql
|
||||
-- Run on each affected site
|
||||
TRUNCATE TABLE wp_wffilemods;
|
||||
TRUNCATE TABLE wp_wfknownfilelist;
|
||||
DELETE FROM wp_wfconfig WHERE name LIKE '%filemod%';
|
||||
```
|
||||
|
||||
### 2. Email/Form Logs
|
||||
|
||||
**Common Culprits:**
|
||||
- WPML email logs (wp_wpml_mails)
|
||||
- Gravity Forms entries (wp_gf_entry, wp_gf_entry_meta)
|
||||
- Post SMTP logs
|
||||
- Action Scheduler logs
|
||||
|
||||
**Solution:** Implement retention policies, truncate old data
|
||||
|
||||
### 3. Old Backups (Disk Space)
|
||||
|
||||
| Site | Backup Size | Age |
|
||||
|------|-------------|-----|
|
||||
| acepickupparts | 1.6GB | Various |
|
||||
| azcomputerguru | 3GB+ | Various |
|
||||
| sundanzer | 2GB | Various |
|
||||
| berman | 388MB | 2019 |
|
||||
| rrspc | 314MB | 2021 |
|
||||
|
||||
**Action Required:** Archive to offsite storage, delete from web server
|
||||
|
||||
---
|
||||
|
||||
## Scan Commands
|
||||
|
||||
### Full Site Scan
|
||||
```bash
|
||||
ssh root@172.16.3.10
|
||||
/root/scan_sites.sh
|
||||
cat /root/site_scan_report.txt
|
||||
```
|
||||
|
||||
### Database Bloat Check
|
||||
```bash
|
||||
ssh root@172.16.3.10
|
||||
/root/check_dbs.sh
|
||||
cat /root/db_bloat_report.txt
|
||||
```
|
||||
|
||||
### View Critical Issues
|
||||
```bash
|
||||
ssh root@172.16.3.10
|
||||
cat /root/URGENT_SITE_ISSUES.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Automation Recommendations
|
||||
|
||||
### 1. Log Rotation
|
||||
|
||||
**Create:** `/etc/logrotate.d/wordpress-error-logs`
|
||||
```
|
||||
/home/*/public_html/wp-content/debug.log {
|
||||
weekly
|
||||
rotate 4
|
||||
compress
|
||||
delaycompress
|
||||
missingok
|
||||
notifempty
|
||||
create 644 root root
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Database Maintenance Script
|
||||
|
||||
**Create:** `/root/wordpress-db-maintenance.sh`
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# WordPress database maintenance - run weekly
|
||||
|
||||
for site in /home/*/public_html; do
|
||||
if [ -f "$site/wp-config.php" ]; then
|
||||
echo "Cleaning $site..."
|
||||
|
||||
# Wordfence cleanup
|
||||
wp db query "TRUNCATE TABLE wp_wffilemods;" --path="$site" 2>/dev/null
|
||||
wp db query "TRUNCATE TABLE wp_wfknownfilelist;" --path="$site" 2>/dev/null
|
||||
|
||||
# Optimize all tables
|
||||
wp db optimize --path="$site" 2>/dev/null
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
### 3. Monitoring Alerts
|
||||
|
||||
**Create:** `/root/monitor-disk-usage.sh`
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Alert if any site error log >100MB
|
||||
|
||||
find /home/*/public_html/wp-content/ -name "debug.log" -size +100M -exec ls -lh {} \; | \
|
||||
mail -s "IX Server: Large error logs detected" mike@azcomputerguru.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Server Resources
|
||||
|
||||
### Current Usage
|
||||
```bash
|
||||
# Check disk space
|
||||
df -h /home
|
||||
|
||||
# Check memory usage
|
||||
free -h
|
||||
|
||||
# Check CPU load
|
||||
uptime
|
||||
```
|
||||
|
||||
### Optimization Recommendations
|
||||
|
||||
1. **OPcache:** Ensure enabled and properly configured
|
||||
2. **MariaDB:** Tune query cache and buffer pool size
|
||||
3. **PHP-FPM:** Adjust pm.max_children based on memory
|
||||
4. **Apache/LiteSpeed:** Enable HTTP/2, optimize workers
|
||||
|
||||
---
|
||||
|
||||
## Client Communication Template
|
||||
|
||||
**Subject:** Website Performance Maintenance Required
|
||||
|
||||
**Body:**
|
||||
```
|
||||
Hello [Client Name],
|
||||
|
||||
During our routine server maintenance, we identified some performance
|
||||
issues affecting your website that require attention:
|
||||
|
||||
1. Error logs have grown to [SIZE], indicating [ISSUE]
|
||||
2. Database optimization needed due to [BLOAT TYPE]
|
||||
|
||||
Recommended Actions:
|
||||
- [SPECIFIC ACTION 1]
|
||||
- [SPECIFIC ACTION 2]
|
||||
|
||||
Impact: [EXPECTED DOWNTIME/IMPROVEMENT]
|
||||
|
||||
We can schedule this work at your convenience. Please let us know
|
||||
your preferred maintenance window.
|
||||
|
||||
Best regards,
|
||||
Arizona Computer Guru Support
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Follow-Up Tasks
|
||||
|
||||
- [ ] Contact each critical priority client
|
||||
- [ ] Schedule maintenance windows
|
||||
- [ ] Execute cleanup on arizonahatters.com
|
||||
- [ ] Execute cleanup on peacefulspirit.com
|
||||
- [ ] Implement log rotation across all sites
|
||||
- [ ] Create database maintenance cron job
|
||||
- [ ] Set up monitoring alerts
|
||||
- [ ] Document lessons learned
|
||||
- [ ] Review Wordfence configuration across all sites
|
||||
- [ ] Audit backup retention policies
|
||||
|
||||
---
|
||||
|
||||
## Server Access
|
||||
|
||||
```bash
|
||||
# External SSH
|
||||
ssh root@ix.azcomputerguru.com
|
||||
|
||||
# Internal SSH
|
||||
ssh root@172.16.3.10
|
||||
|
||||
# WHM
|
||||
https://ix.azcomputerguru.com:2087
|
||||
|
||||
# cPanel (example)
|
||||
https://ix.azcomputerguru.com:2083
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
**Original Report:** `~/claude-projects/IX_SERVER_CRITICAL_ISSUES_2026-01-13.md`
|
||||
|
||||
**Session Logs:**
|
||||
- Various client work sessions documented in `~/claude-projects/session-logs/`
|
||||
|
||||
**Scripts Location:**
|
||||
- `/root/scan_sites.sh`
|
||||
- `/root/check_dbs.sh`
|
||||
- `/root/URGENT_SITE_ISSUES.txt`
|
||||
|
||||
---
|
||||
|
||||
## Project History
|
||||
|
||||
**2026-01-13:** Initial comprehensive server scan and issue documentation
|
||||
**2026-01-22:** Imported to ClaudeTools project tracking system
|
||||
|
||||
---
|
||||
|
||||
**Status:** Documented - Awaiting Action
|
||||
**Owner:** Arizona Computer Guru Operations Team
|
||||
**Next Review:** After critical issues resolved
|
||||
Reference in New Issue
Block a user