mad-lawsuit/DNS_SWITCHOVER_INSTRUCTIONS.md

224 lines
5.3 KiB
Markdown

# 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