# Non-Interactive Mode for ThrillWiki Automation The ThrillWiki automation script supports a non-interactive mode (`-y` flag) that allows you to run the entire setup process without any user prompts. This is perfect for: - **CI/CD pipelines** - **Automated deployments** - **Scripted environments** - **Remote execution** ## Prerequisites 1. **Saved Configuration**: You must have run the script interactively at least once to create the saved configuration file (`.thrillwiki-config`). 2. **Environment Variables**: Set the required environment variables for sensitive credentials that aren't saved to disk. ## Required Environment Variables ### Always Required - `UNRAID_PASSWORD` - Your Unraid server password ### Required if GitHub API is enabled - `GITHUB_TOKEN` - Your GitHub personal access token (if using token auth method) ### Required if Webhooks are enabled - `WEBHOOK_SECRET` - Your GitHub webhook secret ## Usage Examples ### Basic Non-Interactive Setup ```bash # Set required credentials export UNRAID_PASSWORD="your_unraid_password" export GITHUB_TOKEN="your_github_token" export WEBHOOK_SECRET="your_webhook_secret" # Run in non-interactive mode ./setup-complete-automation.sh -y ``` ### CI/CD Pipeline Example ```bash #!/bin/bash set -e # Load credentials from secure environment export UNRAID_PASSWORD="$UNRAID_CREDS_PASSWORD" export GITHUB_TOKEN="$GITHUB_API_TOKEN" export WEBHOOK_SECRET="$WEBHOOK_SECRET_KEY" # Deploy with no user interaction cd scripts/unraid ./setup-complete-automation.sh -y ``` ### Docker/Container Example ```bash # Run from container with environment file docker run --env-file ***REMOVED***.secrets \ -v $(pwd):/workspace \ your-automation-container \ /workspace/scripts/unraid/setup-complete-automation.sh -y ``` ## Error Handling The script will exit with clear error messages if: - No saved configuration is found - Required environment variables are missing - OAuth tokens have expired (non-interactive mode cannot refresh them) ### Common Issues **❌ No saved configuration** ``` [ERROR] No saved configuration found. Cannot run in non-interactive mode. [ERROR] Please run the script without -y flag first to create initial configuration. ``` **Solution**: Run `./setup-complete-automation.sh` interactively first. **❌ Missing password** ``` [ERROR] UNRAID_PASSWORD environment variable not set. [ERROR] For non-interactive mode, set: export UNRAID_PASSWORD='your_password' ``` **Solution**: Set the `UNRAID_PASSWORD` environment variable. **❌ Expired OAuth token** ``` [ERROR] OAuth token expired and cannot refresh in non-interactive mode [ERROR] Please run without -y flag to re-authenticate with GitHub ``` **Solution**: Run interactively to refresh OAuth token, or switch to personal access token method. ## Security Best Practices 1. **Never commit credentials to version control** 2. **Use secure environment variable storage** (CI/CD secret stores, etc.) 3. **Rotate credentials regularly** 4. **Use minimal required permissions** for tokens 5. **Clear environment variables** after use if needed: ```bash unset UNRAID_PASSWORD GITHUB_TOKEN WEBHOOK_SECRET ``` ## Advanced Usage ### Combining with Reset Modes ```bash # Reset VM only and redeploy non-interactively export UNRAID_PASSWORD="password" ./setup-complete-automation.sh --reset-vm -y ``` ### Using with Different Authentication Methods ```bash # For OAuth method (no GITHUB_TOKEN needed if valid) export UNRAID_PASSWORD="password" export WEBHOOK_SECRET="secret" ./setup-complete-automation.sh -y # For personal access token method export UNRAID_PASSWORD="password" export GITHUB_TOKEN="ghp_xxxx" export WEBHOOK_SECRET="secret" ./setup-complete-automation.sh -y ``` ### Environment File Pattern ```bash # Create ***REMOVED***.automation (don't commit this!) cat > ***REMOVED***.automation << EOF UNRAID_PASSWORD=your_password_here GITHUB_TOKEN=your_token_here WEBHOOK_SECRET=your_secret_here EOF # Use it source ***REMOVED***.automation ./setup-complete-automation.sh -y # Clean up rm ***REMOVED***.automation ``` ## Integration Examples See `example-non-interactive.sh` for a complete working example that you can customize for your needs. The non-interactive mode makes it easy to integrate ThrillWiki deployment into your existing automation workflows while maintaining security and reliability.