| # BackgroundFX Pro Scripts | |
| Utility scripts for setup, deployment, maintenance, and monitoring of BackgroundFX Pro. | |
| ## Available Scripts | |
| ### setup.sh | |
| Complete environment setup script that handles: | |
| - System requirements checking | |
| - Virtual environment creation | |
| - Dependency installation | |
| - Model downloading | |
| - Configuration creation | |
| - CLI installation | |
| **Usage:** | |
| ```bash | |
| chmod +x scripts/setup.sh | |
| ./scripts/setup.sh | |
| ``` | |
| ### deploy.sh | |
| Deployment automation script supporting multiple environments and methods: | |
| - Docker deployment | |
| - Kubernetes deployment | |
| - Server deployment | |
| - Health checks and rollback | |
| **Usage:** | |
| ```bash | |
| # Deploy to production with Docker | |
| ./scripts/deploy.sh --env production --method docker | |
| # Deploy to staging with specific version | |
| ./scripts/deploy.sh --env staging --version 1.2.0 --registry myregistry.com | |
| # Deploy to Kubernetes | |
| ./scripts/deploy.sh --env production --method kubernetes | |
| # Deploy to server (requires DEPLOY_HOST and DEPLOY_USER env vars) | |
| export DEPLOY_HOST=server.example.com | |
| export DEPLOY_USER=deploy | |
| ./scripts/deploy.sh --method server | |
| ``` | |
| ### benchmark.py | |
| Performance benchmarking script for testing various aspects: | |
| - Image processing speed | |
| - Model loading times | |
| - Video processing performance | |
| - Batch processing throughput | |
| **Usage:** | |
| ```bash | |
| # Run all benchmarks | |
| python scripts/benchmark.py | |
| # Run specific benchmarks | |
| python scripts/benchmark.py --tests image model | |
| # Save results to specific file | |
| python scripts/benchmark.py --output results.json --iterations 10 | |
| ``` | |
| ### monitor.py | |
| System monitoring script for production environments: | |
| - Resource usage tracking | |
| - Processing statistics | |
| - Error monitoring | |
| - Performance metrics | |
| **Usage:** | |
| ```bash | |
| # Start monitoring | |
| python scripts/monitor.py | |
| # Monitor with custom interval | |
| python scripts/monitor.py --interval 30 | |
| # Export metrics to Prometheus | |
| python scripts/monitor.py --export prometheus | |
| ``` | |
| ### backup.sh | |
| Backup and restore script for data and configurations: | |
| - Model backups | |
| - Configuration backups | |
| - Database backups | |
| - Volume backups (Docker) | |
| **Usage:** | |
| ```bash | |
| # Create backup | |
| ./scripts/backup.sh create | |
| # Restore from backup | |
| ./scripts/backup.sh restore --file backup_20240101_120000.tar.gz | |
| # Schedule automatic backups | |
| ./scripts/backup.sh schedule --cron "0 2 * * *" | |
| ``` | |
| ### update.sh | |
| Update script for upgrading BackgroundFX Pro: | |
| - Git pull latest changes | |
| - Update dependencies | |
| - Download new models | |
| - Database migrations | |
| - Rolling restart | |
| **Usage:** | |
| ```bash | |
| # Update to latest version | |
| ./scripts/update.sh | |
| # Update to specific version | |
| ./scripts/update.sh --version 2.0.0 | |
| # Update without restart | |
| ./scripts/update.sh --no-restart | |
| ``` | |
| ### clean.sh | |
| Cleanup script for maintenance: | |
| - Remove temporary files | |
| - Clear cache | |
| - Clean old logs | |
| - Remove unused Docker images | |
| - Free disk space | |
| **Usage:** | |
| ```bash | |
| # Basic cleanup | |
| ./scripts/clean.sh | |
| # Aggressive cleanup | |
| ./scripts/clean.sh --aggressive | |
| # Dry run (show what would be deleted) | |
| ./scripts/clean.sh --dry-run | |
| ``` | |
| ## Environment Variables | |
| Many scripts use environment variables for configuration: | |
| ```bash | |
| # Deployment | |
| export DEPLOY_HOST=server.example.com | |
| export DEPLOY_USER=deploy | |
| export DEPLOY_KEY=/path/to/key.pem | |
| # Docker Registry | |
| export REGISTRY=myregistry.com | |
| export REGISTRY_USER=username | |
| export REGISTRY_PASS=password | |
| # Backup | |
| export BACKUP_DIR=/backups | |
| export S3_BUCKET=my-backups | |
| export AWS_ACCESS_KEY_ID=xxx | |
| export AWS_SECRET_ACCESS_KEY=xxx | |
| # Monitoring | |
| export PROMETHEUS_PUSHGATEWAY=http://prometheus:9091 | |
| export SLACK_WEBHOOK=https://hooks.slack.com/xxx | |
| ``` | |
| ## Cron Jobs | |
| Example crontab entries for automated tasks: | |
| ```cron | |
| # Daily backup at 2 AM | |
| 0 2 * * * /opt/backgroundfx/scripts/backup.sh create | |
| # Hourly monitoring export | |
| 0 * * * * /opt/backgroundfx/scripts/monitor.py --export prometheus | |
| # Weekly cleanup on Sunday at 3 AM | |
| 0 3 * * 0 /opt/backgroundfx/scripts/clean.sh | |
| # Daily model updates at 4 AM | |
| 0 4 * * * /opt/backgroundfx/scripts/update_models.py | |
| ``` | |
| ## Docker Integration | |
| Running scripts in Docker containers: | |
| ```bash | |
| # Run setup in container | |
| docker run --rm -v $(pwd):/app backgroundfx-pro:latest ./scripts/setup.sh | |
| # Run benchmark | |
| docker run --rm --gpus all backgroundfx-pro:latest python scripts/benchmark.py | |
| # Backup Docker volumes | |
| docker run --rm \ | |
| -v backgroundfx_data:/data \ | |
| -v $(pwd)/backups:/backups \ | |
| backgroundfx-pro:latest ./scripts/backup.sh create | |
| ``` | |
| ## CI/CD Integration | |
| ### GitHub Actions | |
| ```yaml | |
| name: Deploy | |
| on: | |
| push: | |
| branches: [main] | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: Deploy to production | |
| env: | |
| DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} | |
| DEPLOY_USER: ${{ secrets.DEPLOY_USER }} | |
| run: | | |
| ./scripts/deploy.sh --env production --method server | |
| ``` | |
| ### GitLab CI | |
| ```yaml | |
| deploy: | |
| stage: deploy | |
| script: | |
| - ./scripts/deploy.sh --env production --method kubernetes | |
| only: | |
| - main | |
| ``` | |
| ## Troubleshooting | |
| ### Permission Issues | |
| ```bash | |
| # Make scripts executable | |
| chmod +x scripts/*.sh | |
| # Fix ownership | |
| sudo chown -R $USER:$USER scripts/ | |
| ``` | |
| ### Path Issues | |
| ```bash | |
| # Add scripts to PATH | |
| export PATH=$PATH:/opt/backgroundfx/scripts | |
| # Or create symlinks | |
| sudo ln -s /opt/backgroundfx/scripts/bgfx-deploy /usr/local/bin/ | |
| ``` | |
| ### Python Scripts Not Found | |
| ```bash | |
| # Ensure virtual environment is activated | |
| source venv/bin/activate | |
| # Or use full Python path | |
| /opt/backgroundfx/venv/bin/python scripts/benchmark.py | |
| ``` | |
| ## Development | |
| ### Adding New Scripts | |
| 1. Create script in `scripts/` directory | |
| 2. Add shebang line (`#!/bin/bash` or `#!/usr/bin/env python3`) | |
| 3. Make executable: `chmod +x scripts/your_script.sh` | |
| 4. Add documentation to this README | |
| 5. Test in Docker environment | |
| ### Script Template | |
| ```bash | |
| #!/bin/bash | |
| # Script description | |
| # Usage: script.sh [options] | |
| set -e # Exit on error | |
| # Configuration | |
| SCRIPT_DIR=$(dirname $(realpath $0)) | |
| PROJECT_ROOT=$(dirname $SCRIPT_DIR) | |
| # Colors | |
| RED='\033[0;31m' | |
| GREEN='\033[0;32m' | |
| NC='\033[0m' | |
| # Functions | |
| show_help() { | |
| cat << EOF | |
| Usage: $0 [OPTIONS] | |
| Description of what the script does | |
| Options: | |
| --help Show this help message | |
| EOF | |
| } | |
| # Main logic | |
| main() { | |
| echo "Running script..." | |
| # Your code here | |
| } | |
| # Parse arguments | |
| while [[ $# -gt 0 ]]; do | |
| case $1 in | |
| --help) | |
| show_help | |
| exit 0 | |
| ;; | |
| *) | |
| echo "Unknown option: $1" | |
| show_help | |
| exit 1 | |
| ;; | |
| esac | |
| done | |
| # Run main function | |
| main | |
| ``` | |
| ## Security Considerations | |
| - Never commit sensitive data in scripts | |
| - Use environment variables for secrets | |
| - Validate all user inputs | |
| - Use `set -e` to exit on errors | |
| - Implement proper error handling | |
| - Log actions for audit trail | |
| - Restrict script permissions appropriately |