Production Readiness Improvements: - Fixed scheduling to match spec (8 AM & 12 PM ADT instead of 6 AM/6 PM) - Enabled NAS synchronization in production runner with error handling - Fixed file naming convention to spec format (hvacknowitall_combined_YYYY-MM-DD-THHMMSS.md) - Made systemd services portable (removed hardcoded user/paths) - Added environment variable validation on startup - Moved DISPLAY/XAUTHORITY to .env configuration Systemd Improvements: - Created template service file (@.service) for any user - Changed all paths to /opt/hvac-kia-content - Updated installation script for portable deployment - Fixed service dependencies and resource limits Documentation: - Created comprehensive PRODUCTION_TODO.md with 25 tasks - Added PRODUCTION_GUIDE.md with deployment instructions - Documented spec compliance gaps (65% complete) Remaining work includes retry logic, connection pooling, media downloads, and pytest test suite as documented in PRODUCTION_TODO.md 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
95 lines
No EOL
3.4 KiB
Markdown
95 lines
No EOL
3.4 KiB
Markdown
# HVAC Know It All - Deployment Strategy
|
|
|
|
## Summary
|
|
|
|
After thorough testing and implementation, the content aggregation system has been successfully built with 6 scrapers. However, deployment strategy has been revised due to technical constraints with TikTok scraping requirements.
|
|
|
|
## Source Status
|
|
|
|
### ✅ Working Sources (5/6)
|
|
- **WordPress Blog**: REST API - ✅ Working
|
|
- **MailChimp RSS**: RSS Feed - ✅ Working
|
|
- **Podcast RSS**: Libsyn Feed - ✅ Working
|
|
- **YouTube**: yt-dlp - ✅ Working
|
|
- **Instagram**: instaloader with session persistence - ✅ Working
|
|
|
|
### ⚠️ TikTok Constraints
|
|
- **TikTok**: Requires headed browser with DISPLAY=:0 for bot detection avoidance
|
|
- **Cannot be containerized** due to GUI browser requirement
|
|
- **Not suitable for Kubernetes deployment**
|
|
|
|
## Deployment Decision
|
|
|
|
### Original Plan: Kubernetes Container
|
|
- ❌ **Not viable** due to TikTok headed browser requirement
|
|
- ❌ Running GUI applications in containers adds significant complexity
|
|
- ❌ Display forwarding in Kubernetes is not practical for production
|
|
|
|
### Revised Plan: Direct System Service
|
|
|
|
**Deploy as systemd service on control plane node:**
|
|
|
|
1. **Installation Location**: `/opt/hvac-kia-content/`
|
|
2. **Service Management**: systemd units for scheduling
|
|
3. **Environment**: Direct execution on control plane with DISPLAY access
|
|
4. **Scheduling**: cron-like scheduling via systemd timers
|
|
|
|
## Benefits of Direct Deployment
|
|
|
|
### ✅ Advantages
|
|
- **Simple deployment** - no container complexity
|
|
- **Full system access** - DISPLAY, browsers, sessions
|
|
- **Reliable TikTok scraping** - headed browser support
|
|
- **Easy maintenance** - direct file access and logging
|
|
- **Resource efficiency** - no container overhead
|
|
|
|
### ⚠️ Considerations
|
|
- **Host dependency** - requires control plane node
|
|
- **Manual updates** - no container image versioning
|
|
- **Environment coupling** - tied to specific system
|
|
|
|
## Implementation Plan
|
|
|
|
### Phase 1: Service Setup
|
|
1. Install Python environment at `/opt/hvac-kia-content/`
|
|
2. Configure environment variables and credentials
|
|
3. Set up logging directory with rotation
|
|
4. Create systemd service unit
|
|
|
|
### Phase 2: Scheduling
|
|
1. Create systemd timer units for 8AM and 12PM ADT
|
|
2. Configure NAS sync via rsync
|
|
3. Set up monitoring and alerting
|
|
|
|
### Phase 3: Monitoring
|
|
1. Log rotation and archival
|
|
2. Health checks and status reporting
|
|
3. Error notification system
|
|
|
|
## File Structure
|
|
|
|
```
|
|
/opt/hvac-kia-content/
|
|
├── src/ # Source code
|
|
├── logs/ # Application logs
|
|
├── data/ # Scraped content and state
|
|
├── .env # Environment configuration
|
|
├── requirements.txt # Python dependencies
|
|
└── systemd/ # Service configuration
|
|
├── hvac-scraper.service
|
|
├── hvac-scraper-morning.timer
|
|
└── hvac-scraper-afternoon.timer
|
|
```
|
|
|
|
## NAS Integration
|
|
|
|
**Sync to**: `/mnt/nas/hvacknowitall/`
|
|
- Markdown files with timestamped archives
|
|
- Organized by source and date
|
|
- Incremental sync to minimize bandwidth
|
|
|
|
## Conclusion
|
|
|
|
While the original containerized approach is not viable due to TikTok's GUI requirements, the direct deployment approach provides a robust and maintainable solution for the HVAC Know It All content aggregation system.
|
|
|
|
The system successfully aggregates content from 5 major sources with the option to include TikTok when needed, providing comprehensive coverage of the HVAC Know It All brand across digital platforms. |