From d15a2fcb30366c3018463f565724acd70646a2c4 Mon Sep 17 00:00:00 2001 From: TheMaddax Date: Fri, 19 Dec 2025 22:10:21 -0700 Subject: [PATCH] Add comprehensive DNS switchover instructions for v2.0 deployment --- DNS_SWITCHOVER_INSTRUCTIONS.md | 224 +++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 DNS_SWITCHOVER_INSTRUCTIONS.md diff --git a/DNS_SWITCHOVER_INSTRUCTIONS.md b/DNS_SWITCHOVER_INSTRUCTIONS.md new file mode 100644 index 00000000..b12eab54 --- /dev/null +++ b/DNS_SWITCHOVER_INSTRUCTIONS.md @@ -0,0 +1,224 @@ +# DNS Switchover Instructions - MAD Lawsuit v2.0 + +## Overview +This document provides step-by-step instructions to switch `mad-lawsuit.org` from v1.0 (Next.js) to v2.0 (Laravel). + +## Pre-Switchover Checklist +- ✅ v2.0 fully tested at https://v2.mad-lawsuit.org +- ✅ All data migrated (63 entries, 63 documents, 28 subscribers) +- ✅ Admin dashboard functional +- ✅ PDF uploads working +- ✅ iOS/iPad PDF viewing fixed +- ✅ .env updated with mad-lawsuit.org URLs +- ✅ docker-compose.yml updated to use port 806 +- ✅ Caddyfile updated on server + +## Deployment Steps + +### 1. SSH to Production Server +```bash +ssh chaulmark@10.4.0.205 +``` + +### 2. Stop v1.0 Containers (Old mad-lawsuit.org) +```bash +cd ~/websites/mad-lawsuit.org +docker compose down +``` + +### 3. Pull Latest v2.0 Code +```bash +cd ~/websites/v2.mad-lawsuit.org +git pull origin main +``` + +### 4. Rebuild v2.0 Container with New Port +```bash +docker compose down +docker compose up -d --build +``` + +### 5. Verify Container is Running on Port 806 +```bash +docker compose ps +# Should show mad-lawsuit-v2 running on 0.0.0.0:806->80/tcp +``` + +### 6. Clear Laravel Cache +```bash +docker exec mad-lawsuit-v2 php artisan config:clear +docker exec mad-lawsuit-v2 php artisan cache:clear +docker exec mad-lawsuit-v2 php artisan route:clear +``` + +### 7. Reload Caddy Configuration +```bash +docker exec caddy caddy reload --config /etc/caddy/Caddyfile +``` + +### 8. Test the Switchover +```bash +# Test from command line +curl -I https://mad-lawsuit.org + +# Should return HTTP/2 200 +# Should show Laravel headers +``` + +### 9. Browser Testing +Open https://mad-lawsuit.org in multiple browsers: +- ✅ Desktop Chrome/Firefox/Safari +- ✅ Mobile Chrome/Safari +- ✅ iPad Safari (test PDF viewing) + +### 10. Verify All Functionality +- [ ] Home page loads correctly +- [ ] Docket entries display properly +- [ ] PDF documents open correctly +- [ ] iPad PDF viewing works (opens in new tab) +- [ ] Admin login works: https://mad-lawsuit.org/admin/login +- [ ] Admin dashboard accessible +- [ ] Can create/edit/delete docket entries +- [ ] Can upload PDFs +- [ ] Email subscription works + +## Configuration Details + +### Port Mapping +- **v1.0 (Old)**: Port 806 (now stopped) +- **v2.0 (New)**: Port 806 (same port, different container) + +### Caddyfile Configuration +```caddyfile +# MAD Lawsuit V2 (Production) +www.mad-lawsuit.org { + redir https://mad-lawsuit.org{uri} permanent +} + +mad-lawsuit.org { + reverse_proxy 172.18.0.6:806 +} + +# Old v2 subdomain redirects to main domain +v2.mad-lawsuit.org { + redir https://mad-lawsuit.org{uri} permanent +} + +www.v2.mad-lawsuit.org { + redir https://mad-lawsuit.org{uri} permanent +} +``` + +### Docker Network +- **Network**: `caddy_network` (external) +- **Container IP**: 172.18.0.6 +- **Container Port**: 80 (internal) +- **Host Port**: 806 (external) + +## Rollback Plan (If Needed) + +If issues arise, you can quickly rollback to v1.0: + +### 1. Stop v2.0 Container +```bash +cd ~/websites/v2.mad-lawsuit.org +docker compose down +``` + +### 2. Restore Original Caddyfile +```bash +# Download backup Caddyfile (if you made one) +# Or manually edit to point back to v1.0 +``` + +### 3. Start v1.0 Containers +```bash +cd ~/websites/mad-lawsuit.org +docker compose up -d +``` + +### 4. Reload Caddy +```bash +docker exec caddy caddy reload --config /etc/caddy/Caddyfile +``` + +## Post-Switchover Tasks + +### Immediate (Within 24 hours) +- [ ] Monitor error logs: `docker logs mad-lawsuit-v2 -f` +- [ ] Check database connections +- [ ] Verify email notifications work +- [ ] Test all admin functions + +### Within 1 Week +- [ ] Remove v1.0 containers permanently +- [ ] Clean up old v1.0 files (optional backup first) +- [ ] Update documentation +- [ ] Notify Eliza of successful switchover + +### Optional Enhancements +- [ ] Set up automated backups +- [ ] Configure monitoring/alerts +- [ ] Implement email notifications for new entries +- [ ] Add Redis caching for performance + +## Troubleshooting + +### Issue: Site not loading +**Solution**: Check container status +```bash +docker compose ps +docker logs mad-lawsuit-v2 --tail 50 +``` + +### Issue: 502 Bad Gateway +**Solution**: Verify Caddy can reach container +```bash +docker exec caddy caddy validate --config /etc/caddy/Caddyfile +docker network inspect caddy_network +``` + +### Issue: Database connection errors +**Solution**: Check PostgreSQL container +```bash +docker compose ps postgres +docker logs mad-lawsuit-v2-db --tail 50 +``` + +### Issue: PDFs not loading +**Solution**: Check file permissions and storage +```bash +docker exec mad-lawsuit-v2 ls -la storage/app/public/documents +docker exec mad-lawsuit-v2 php artisan storage:link +``` + +## Important Notes + +1. **SSL Certificates**: Caddy automatically handles SSL for mad-lawsuit.org (Let's Encrypt) +2. **Database**: PostgreSQL data persists in Docker volume `postgres_data` +3. **PDF Files**: Stored in `./storage/app/public/documents` (bind mount) +4. **No Downtime**: Switchover should be nearly instant (< 1 minute) +5. **DNS**: No DNS changes needed - same domain, different backend + +## Success Criteria + +✅ https://mad-lawsuit.org loads v2.0 application +✅ All 63 docket entries visible +✅ All 63 PDFs accessible +✅ Admin dashboard functional +✅ iPad PDF viewing works correctly +✅ No errors in logs +✅ SSL certificate valid + +## Contact + +If issues arise: +- Check logs: `docker logs mad-lawsuit-v2 -f` +- Review this document +- Rollback if necessary (see Rollback Plan above) + +--- + +**Last Updated**: December 19, 2025 +**Version**: 2.0 +**Status**: Ready for deployment