Skip to content

Validate Command

The validate command performs comprehensive pre-deployment and system health checks with automatic fix suggestions and intelligent troubleshooting to ensure your media stack runs optimally.

Usage

bash
usenet validate [options]

Options

OptionDescriptionExample
--fixAutomatically fix issues where possibleusenet validate --fix
--category <name>Validate specific category onlyusenet validate --category hardware
--service <name>Validate specific serviceusenet validate --service jellyfin
--strictEnable strict validation modeusenet validate --strict
--exportExport validation reportusenet validate --export report.json

Validation Categories

System Requirements

bash
usenet validate --category system

Validation checks:

  • Operating system compatibility
  • Minimum hardware requirements
  • Available disk space
  • Memory allocation
  • CPU capabilities
  • Network connectivity

Docker Environment

bash
usenet validate --category docker

Validation checks:

  • Docker installation and version
  • Docker Compose availability
  • Container runtime status
  • Image availability
  • Registry connectivity
  • Volume mount permissions

Hardware Configuration

bash
usenet validate --category hardware

Validation checks:

  • GPU detection and drivers
  • Hardware acceleration capabilities
  • Temperature and thermal throttling
  • Power management settings
  • Performance optimization status

Storage Configuration

bash
usenet validate --category storage

Validation checks:

  • Drive accessibility and permissions
  • Filesystem health and compatibility
  • Mount point configuration
  • Cross-platform compatibility (exFAT)
  • Storage pool integrity

Network Configuration

bash
usenet validate --category network

Validation checks:

  • Port availability
  • Firewall configuration
  • DNS resolution
  • Cloudflare tunnel status
  • SSL certificate validity

Service Configuration

bash
usenet validate --category services

Validation checks:

  • Service definitions syntax
  • API connectivity
  • Configuration file integrity
  • Service dependencies
  • Quality profiles and indexers

Comprehensive Validation

Full System Validation

bash
usenet validate

Example validation report:

bash
🔍 SYSTEM VALIDATION REPORT

📊 Overall Status: 87% (Good) - 3 issues require attention

 SYSTEM REQUIREMENTS (6/6 checks passed)
 OS: Ubuntu 22.04.3 LTS (supported)
 Kernel: 6.5.0-41-generic (compatible)
 CPU: AMD Ryzen 7 7840HS (16 threads, adequate)
 RAM: 30GB total, 24GB available (excellent)
 Disk: 798GB available on / (sufficient)
 Network: Internet connectivity confirmed

 DOCKER ENVIRONMENT (5/5 checks passed)
 Docker: 24.0.7 (latest stable)
 Compose: 2.21.0 (v2 syntax supported)
 Runtime: runc (healthy)
 Storage: overlay2 driver (optimal)
 Registry: hub.docker.com accessible

⚠️  HARDWARE CONFIGURATION (2/3 checks passed)
 GPU: AMD Radeon 780M detected (VAAPI capable)
 Drivers: AMDGPU 23.20 installed
 Hardware acceleration: Not configured for containers
      └─ Fix: usenet hardware optimize --auto

 STORAGE CONFIGURATION (4/4 checks passed)
 Pool: 2 drives accessible (12TB total)
 Permissions: All drives writable by UID 1000
 Filesystems: exFAT and ext4 compatible
 Mount points: Stable and persistent

⚠️  NETWORK CONFIGURATION (3/4 checks passed)
 Ports: All required ports (8080-9696) available
 Firewall: UFW configured correctly
 DNS: Cloudflare DNS responding
 SSL certificates: Expired certificate for jellyfin.local
      └─ Fix: usenet tunnel setup --renew-certs

⚠️  SERVICE CONFIGURATION (16/17 checks passed)
 Syntax: All compose files valid
 Dependencies: Service order correct
 Environment: All required variables set
 APIs: 16/17 services responding
 bazarr: Subtitle provider 'OpenSubtitles' API key invalid
      └─ Fix: Update API key in bazarr web interface

🔧 RECOMMENDED ACTIONS:
   1. Configure hardware acceleration: usenet hardware optimize --auto
   2. Renew SSL certificates: usenet tunnel setup --renew-certs  
   3. Update bazarr API key: http://localhost:6767/settings/providers

💡 OPTIMIZATION OPPORTUNITIES:
 Enable GPU transcoding for 10x performance improvement
 Consider upgrading to dedicated performance profile
 Set up automated SSL certificate renewal

Automatic Fixes

Fix Common Issues

bash
usenet validate --fix

Auto-fixable issues:

  • File and directory permissions
  • Missing configuration directories
  • Default configuration files
  • Docker network creation
  • Firewall rules
  • Environment variable defaults

Example auto-fix session:

bash
🔧 AUTOMATIC FIX MODE ENABLED

Fixing identified issues:

🔐 Fixing permissions:
 chmod 755 /media/external_4tb
 chown 1000:1000 /media/external_4tb
 chmod -R 755 config/

📁 Creating missing directories:
 mkdir -p config/sonarr
 mkdir -p config/radarr
 mkdir -p downloads/complete
 mkdir -p downloads/incomplete

🔧 Generating default configurations:
 Created config/jellyfin/system.xml
 Created config/tdarr/configs.json
 Generated docker-compose.storage.yml

🌐 Fixing network configuration:
 Created Docker network 'usenet-stack'
 Updated firewall rules for required ports

 Auto-fix completed: 8/10 issues resolved

 Manual intervention required:
 Update bazarr OpenSubtitles API key
 Renew SSL certificates (requires Cloudflare access)

Selective Fixes

bash
# Fix only permission issues
usenet validate --fix --category permissions

# Fix specific service
usenet validate --fix --service jellyfin

# Dry run (show what would be fixed)
usenet validate --fix --dry-run

Service-Specific Validation

Individual Service Checks

bash
# Validate Jellyfin configuration
usenet validate --service jellyfin

Jellyfin validation:

bash
🎬 JELLYFIN VALIDATION

 Configuration (5/5 checks)
 system.xml present and valid
 Hardware transcoding configured
 Media libraries defined
 User accounts configured
 Plugin compatibility verified

 Hardware Acceleration (3/3 checks)
 GPU access enabled in container
 VAAPI drivers available
 Transcoding profiles optimized

 Network Access (3/3 checks)
 Port 8096 accessible
 SSL certificate valid
 External access configured

 Storage Access (2/2 checks)
 Media directories mounted
 Transcoding cache writable

📊 Jellyfin Health: 100% (Excellent)

Media Service Validation

bash
# Validate all *arr services
usenet validate --category automation

Automation stack validation:

bash
🤖 AUTOMATION SERVICES VALIDATION

 Sonarr (8/8 checks)
 API responding (v3.0.10)
 Root folders configured (2 paths)
 Quality profiles loaded (HD-1080p, UHD-2160p)
 Indexers connected (3 active)
 Download client configured (sabnzbd)
 Notifications enabled (Discord)
 Series monitoring active (47 series)
 Disk space monitoring enabled

 Radarr (8/8 checks)
 API responding (v4.7.5)
 Root folders configured (2 paths)
 Custom formats imported (TRaSH Guide)
 Quality profiles optimized
 Indexers synchronized with Prowlarr
 Download client healthy
 Movie monitoring active (23 movies)
 Metadata downloading enabled

⚠️  Bazarr (7/8 checks)
 API responding (v1.3.1)
 Language profiles configured (English, Spanish)
 Sonarr/Radarr integration active
 Subtitle providers configured (3 active)
 Episode monitoring enabled
 Download directory writable
 Authentication configured
 OpenSubtitles provider: API limit exceeded
      └─ Recommendation: Upgrade to VIP account or reduce requests

Pre-Deployment Validation

Deployment Readiness Check

bash
# Comprehensive pre-deployment validation
usenet validate --pre-deployment

Pre-deployment checklist:

bash
🚀 PRE-DEPLOYMENT VALIDATION

📋 Deployment Readiness Checklist:

 Environment Configuration
 .env file present with all required variables
 Credentials configured (19 API keys)
 Domain names resolved
 SSL certificates valid

 Infrastructure Requirements
 Docker daemon running
 Sufficient disk space (>50GB recommended)
 Memory requirements met (>8GB available)
 Network ports available

 Hardware Optimization
 GPU detected and drivers installed
 Hardware acceleration configured
 Performance profile selected

 Storage Configuration
 Storage pool configured (2 drives)
 Media directories accessible
 Cross-platform compatibility verified

 Security Configuration
 Firewall rules configured
 Cloudflare tunnel ready
 API authentication enabled

📊 Deployment Readiness: 100%

🎉 System ready for deployment!
   Run: usenet deploy --auto

Strict Validation Mode

Enhanced Validation

bash
usenet validate --strict

Strict mode additional checks:

  • Security best practices compliance
  • Performance optimization verification
  • Configuration file syntax validation
  • API rate limiting compliance
  • Resource usage optimization
  • Backup system functionality

Health Monitoring

Continuous Validation

bash
# Set up continuous monitoring
usenet validate --monitor --interval 300

# Alert on validation failures
usenet validate --alert --webhook https://hooks.slack.com/...

# Log validation results
usenet validate --log /var/log/usenet-validation.log

Validation Scheduling

bash
# Schedule daily validation
usenet validate --schedule daily --time 06:00

# Run validation before deployment
usenet validate --pre-hook deployment

# Validate after configuration changes
usenet validate --watch-config

Troubleshooting Assistance

Issue Resolution

bash
# Get detailed troubleshooting for specific issue
usenet validate --troubleshoot "port 8096 in use"

# Show resolution steps
usenet validate --help-fix --issue "gpu-not-detected"

# Generate support bundle
usenet validate --support-bundle

Common Issues Database

Port conflicts:

bash
 Port 8096 already in use
💡 Solutions:
 Check existing service: sudo netstat -tlnp | grep 8096
 Stop conflicting service: sudo systemctl stop jellyfin
 Change port in .env: JELLYFIN_PORT=8097
 Use port range: JELLYFIN_PORT=8096-8100

Permission issues:

bash
 Permission denied: /media/external_drive
💡 Solutions:
 Fix ownership: sudo chown -R 1000:1000 /media/external_drive
 Fix permissions: sudo chmod -R 755 /media/external_drive
 Check mount options: mount | grep external_drive
 Remount with correct options

GPU not detected:

bash
 GPU hardware acceleration not available
💡 Solutions:
 Install drivers: usenet hardware install-drivers
 Verify installation: nvidia-smi (NVIDIA) or vainfo (AMD)
 Check Docker integration: docker run --gpus all nvidia/cuda nvidia-smi
 Update Docker daemon: sudo systemctl restart docker

Validation Reports

Export Validation Results

bash
# Export detailed report
usenet validate --export validation-report.json

# Export summary report
usenet validate --export-summary report.txt

# Export with system info
usenet validate --export-full system-report.tar.gz

Report Formats

JSON format:

json
{
  "validation": {
    "timestamp": "2024-01-15T14:30:22Z",
    "version": "2.0",
    "overall_score": 87,
    "status": "good"
  },
  "categories": {
    "system": {"score": 100, "issues": 0},
    "docker": {"score": 100, "issues": 0},
    "hardware": {"score": 67, "issues": 1},
    "storage": {"score": 100, "issues": 0},
    "network": {"score": 75, "issues": 1},
    "services": {"score": 94, "issues": 1}
  },
  "issues": [
    {
      "category": "hardware",
      "severity": "warning",
      "message": "Hardware acceleration not configured",
      "fix": "usenet hardware optimize --auto"
    }
  ]
}

Examples

bash
# Basic validation
usenet validate

# Check specific issue
usenet validate --category hardware

# Auto-fix simple issues
usenet validate --fix
bash
# Comprehensive pre-deployment check
usenet validate --pre-deployment --strict

# Fix all auto-fixable issues
usenet validate --fix --all

# Export readiness report
usenet validate --export deployment-readiness.json
bash
# Diagnose service issues
usenet validate --service jellyfin --verbose

# Get troubleshooting help
usenet validate --troubleshoot "transcoding not working"

# Generate support bundle
usenet validate --support-bundle --include-logs
bash
# Enable continuous monitoring
usenet validate --monitor --interval 300

# Set up alerting
usenet validate --alert --email admin@example.com

# Schedule regular validation
usenet validate --schedule daily --time 06:00

Integration with Other Commands

Validation in Deployment

bash
# Deploy with validation
usenet deploy --validate

# Skip validation (not recommended)
usenet deploy --skip-validation

# Validate after deployment
usenet deploy && usenet validate

Validation in Backup/Restore

bash
# Validate before backup
usenet backup create --validate

# Validate after restore
usenet backup restore backup.tar.gz --validate

# Include validation in backup metadata
usenet backup create --include-validation
  • deploy - Deploy with validation checks
  • hardware - Hardware optimization validation
  • storage - Storage configuration validation
  • services - Service health validation
  • backup - Configuration backup validation

Built with ❤️ following Bell Labs standards. Dedicated to Stan Eisenstat.