hvac-kia-content/docs/DEPLOYMENT_CHECKLIST.md
Ben Reed ccdb9366db docs: Update GitHub references to point to local Forgejo server
- Updated repository URLs in PRODUCTION_GUIDE.md
- Updated project specification repository reference
- Updated rollback and deployment documentation
- All references now point to git.tealmaker.com/ben/hvac-kia-content.git
2025-08-27 16:07:07 -03:00

293 lines
No EOL
6.7 KiB
Markdown

# Production Deployment Checklist
## Pre-Deployment Verification
### Environment Setup
- [ ] Ubuntu 20.04+ or compatible Linux distribution
- [ ] Python 3.9+ installed
- [ ] 2GB+ RAM available
- [ ] 10GB+ disk space available
- [ ] Display server running (for TikTok scraping)
- [ ] Network connectivity to all target sites
### Dependencies
- [ ] Install system packages:
```bash
sudo apt update
sudo apt install python3-pip python3-venv git chromium-browser
```
- [ ] Install Python packages:
```bash
pip install -r requirements.txt
```
- [ ] Verify Chromium browser works:
```bash
chromium-browser --version
```
### Configuration Files
- [ ] `.env` file created with all required variables:
- [ ] WORDPRESS_USERNAME
- [ ] WORDPRESS_API_KEY
- [ ] YOUTUBE_CHANNEL_URL
- [ ] INSTAGRAM_USERNAME
- [ ] INSTAGRAM_PASSWORD
- [ ] TIKTOK_TARGET
- [ ] NAS_PATH
- [ ] TIMEZONE (default: America/Halifax)
- [ ] HEALTHCHECK_URL (optional)
- [ ] ALERT_EMAIL (optional)
- [ ] `.env` file permissions set to 600:
```bash
chmod 600 .env
```
### Directory Structure
- [ ] Create production directories:
```bash
sudo mkdir -p /opt/hvac-kia-content
sudo mkdir -p /var/log/hvac-content
```
- [ ] Set proper ownership:
```bash
sudo chown -R $USER:$USER /opt/hvac-kia-content
sudo chown -R $USER:$USER /var/log/hvac-content
```
### NAS Configuration
- [ ] NAS mount point exists and is accessible
- [ ] Write permissions verified:
```bash
touch /mnt/nas/hkia/test.txt && rm /mnt/nas/hkia/test.txt
```
- [ ] Sufficient space available on NAS
## Deployment Steps
### 1. Code Deployment
- [ ] Clone repository to staging location:
```bash
git clone https://git.tealmaker.com/ben/hvac-kia-content.git
cd hvac-kia-content
```
- [ ] Checkout correct branch/tag:
```bash
git checkout main # or specific version tag
```
### 2. Configuration
- [ ] Copy `.env.example` to `.env`:
```bash
cp .env.example .env
```
- [ ] Edit `.env` with production values
- [ ] Verify environment variables:
```bash
python3 -c "from run_production import validate_environment; validate_environment()"
```
### 3. Test Individual Scrapers
- [ ] Test WordPress:
```bash
python test_real_data.py --source wordpress --items 1
```
- [ ] Test YouTube:
```bash
python test_real_data.py --source youtube --items 1
```
- [ ] Test Instagram (carefully):
```bash
python test_real_data.py --source instagram --items 1
```
- [ ] Test TikTok:
```bash
DISPLAY=:0 python test_real_data.py --source tiktok --items 1
```
- [ ] Test MailChimp RSS:
```bash
python test_real_data.py --source mailchimp --items 1
```
- [ ] Test Podcast RSS:
```bash
python test_real_data.py --source podcast --items 1
```
### 4. Test Production Runner
- [ ] Dry run test:
```bash
python run_production.py --job regular --dry-run
```
- [ ] Verify output file created
- [ ] Check log files for errors
- [ ] Verify NAS sync (if enabled)
### 5. Install Systemd Services
- [ ] Run installation script:
```bash
chmod +x install_production.sh
./install_production.sh
```
- [ ] Verify services installed:
```bash
systemctl list-unit-files | grep hvac
```
### 6. Enable Services
- [ ] Enable main timer:
```bash
sudo systemctl enable hkia-content-aggregator.timer
```
- [ ] Start timer:
```bash
sudo systemctl start hkia-content-aggregator.timer
```
- [ ] Verify timer is active:
```bash
systemctl status hkia-content-aggregator.timer
```
### 7. Optional: TikTok Captions
- [ ] Only if captions are required:
```bash
sudo systemctl enable hvac-tiktok-captions.timer
sudo systemctl start hvac-tiktok-captions.timer
```
## Post-Deployment Verification
### Immediate Checks
- [ ] Timer scheduled correctly:
```bash
systemctl list-timers | grep hvac
```
- [ ] No errors in service status:
```bash
systemctl status hkia-content-aggregator.service
```
- [ ] Log files being created:
```bash
ls -la /var/log/hvac-content/
```
### First Run Verification
- [ ] Manually trigger first run:
```bash
sudo systemctl start hkia-content-aggregator.service
```
- [ ] Monitor logs in real-time:
```bash
tail -f /var/log/hvac-content/aggregator.log
```
- [ ] Verify all sources processed
- [ ] Check output file created
- [ ] Verify NAS sync completed
- [ ] Health check ping received (if configured)
### 24-Hour Verification
- [ ] Check timer fired at scheduled times (8 AM, 12 PM)
- [ ] Review metrics.json for performance data
- [ ] Check disk usage:
```bash
df -h /opt/hvac-kia-content
```
- [ ] Review error logs:
```bash
grep ERROR /var/log/hvac-content/*.log
```
- [ ] Verify incremental updates working (no duplicates)
## Monitoring Setup
### Log Monitoring
- [ ] Set up log rotation if needed:
```bash
sudo nano /etc/logrotate.d/hvac-content
```
```
/var/log/hvac-content/*.log {
daily
rotate 7
compress
missingok
notifempty
}
```
### Health Monitoring
- [ ] Configure health check service (e.g., Healthchecks.io)
- [ ] Set up email alerts for failures
- [ ] Create dashboard for metrics visualization
### Backup Configuration
- [ ] Schedule state file backups:
```bash
0 2 * * * tar -czf /backup/hvac-state-$(date +\%Y\%m\%d).tar.gz /opt/hvac-kia-content/state/
```
- [ ] Test restore procedure
## Troubleshooting Checklist
### If Scrapers Fail
- [ ] Check environment variables are set
- [ ] Verify network connectivity
- [ ] Check API rate limits
- [ ] Review authentication credentials
- [ ] Check display server (for TikTok)
### If Timer Doesn't Fire
- [ ] Check timer is enabled
- [ ] Verify system time is correct
- [ ] Check systemd timer status
- [ ] Review journal logs:
```bash
journalctl -u hkia-content-aggregator.timer
```
### If NAS Sync Fails
- [ ] Verify NAS is mounted
- [ ] Check write permissions
- [ ] Verify sufficient space
- [ ] Test rsync manually
## Rollback Procedure
### Quick Rollback
1. [ ] Stop services:
```bash
sudo systemctl stop hkia-content-aggregator.timer
```
2. [ ] Restore previous version:
```bash
cd /opt/hvac-kia-content
git checkout <previous-version>
```
3. [ ] Restart services:
```bash
sudo systemctl start hkia-content-aggregator.timer
```
### Full Rollback
1. [ ] Stop and disable all services
2. [ ] Restore backup of state files
3. [ ] Restore previous code version
4. [ ] Re-run installation script
5. [ ] Verify functionality
6. [ ] Re-enable services
## Sign-off
- [ ] Deployment completed successfully
- [ ] All verification steps passed
- [ ] Monitoring configured
- [ ] Documentation updated
- [ ] Team notified
**Deployed By:** _________________
**Date:** _________________
**Version:** _________________
**Notes:** _________________
---
*Last Updated: 2024-12-18*