All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 3s
Adds title, description, type, domain, and tags frontmatter to every doc for improved KB semantic search. The description field is prepended to every search chunk, and domain/type/tags enable filtered queries. Type values: context, guide, runbook, reference, troubleshooting Domain values match directory structure (networking, docker, etc.) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
220 lines
6.8 KiB
Markdown
220 lines
6.8 KiB
Markdown
---
|
|
title: "Tdarr Scripts Operational Context"
|
|
description: "Overview of Tdarr automation scripts: gaming-aware scheduler, container management (Podman), cron-based scheduling engine, configuration presets, and unmapped node architecture with local NVMe cache."
|
|
type: context
|
|
domain: tdarr
|
|
tags: [tdarr, scripts, podman, cron, gaming-detection, scheduler, nvidia, automation]
|
|
---
|
|
|
|
# Tdarr Scripts - Operational Context
|
|
|
|
## Script Overview
|
|
This directory contains active operational scripts for Tdarr transcoding automation, gaming-aware scheduling, and system management.
|
|
|
|
## Core Scripts
|
|
|
|
### Gaming-Aware Scheduler
|
|
**Primary Script**: `tdarr-schedule-manager.sh`
|
|
**Purpose**: Comprehensive management interface for gaming-aware Tdarr scheduling
|
|
|
|
**Key Functions**:
|
|
- **Preset Management**: Quick schedule templates (night-only, work-safe, weekend-heavy, gaming-only)
|
|
- **Installation**: Automated cron job setup and configuration
|
|
- **Status Monitoring**: Real-time status and logging
|
|
- **Configuration**: Interactive schedule editing and validation
|
|
|
|
**Usage Patterns**:
|
|
```bash
|
|
# Quick setup
|
|
./tdarr-schedule-manager.sh preset work-safe
|
|
./tdarr-schedule-manager.sh install
|
|
|
|
# Monitoring
|
|
./tdarr-schedule-manager.sh status
|
|
./tdarr-schedule-manager.sh logs
|
|
|
|
# Testing
|
|
./tdarr-schedule-manager.sh test
|
|
```
|
|
|
|
### Container Management
|
|
**Start Script**: `start-tdarr-gpu-podman-clean.sh`
|
|
**Purpose**: Launch unmapped Tdarr node with optimized configuration
|
|
|
|
**Key Features**:
|
|
- **Unmapped Node Configuration**: Local cache for optimal performance
|
|
- **GPU Support**: Full NVIDIA device passthrough
|
|
- **Resource Optimization**: Direct NVMe cache mapping
|
|
- **Clean Architecture**: No media volume dependencies
|
|
|
|
**Stop Script**: `stop-tdarr-gpu-podman.sh`
|
|
**Purpose**: Graceful container shutdown with cleanup
|
|
|
|
### Scheduling Engine
|
|
**Core Engine**: `tdarr-cron-check-configurable.sh`
|
|
**Purpose**: Minute-by-minute decision engine for Tdarr state management
|
|
|
|
**Decision Logic**:
|
|
1. **Gaming Detection**: Check for active gaming processes
|
|
2. **GPU Monitoring**: Verify GPU usage below threshold (15%)
|
|
3. **Time Window Validation**: Ensure current time within allowed schedule
|
|
4. **State Management**: Start/stop Tdarr based on conditions
|
|
|
|
**Gaming Process Detection**:
|
|
- Steam, Lutris, Heroic Games Launcher
|
|
- Wine, Bottles (Windows compatibility layers)
|
|
- GameMode, MangoHUD (gaming utilities)
|
|
- GPU usage monitoring via nvidia-smi
|
|
|
|
### Configuration Management
|
|
**Config File**: `tdarr-schedule.conf`
|
|
**Purpose**: Centralized configuration for scheduler behavior
|
|
|
|
**Configuration Structure**:
|
|
```bash
|
|
# Time blocks: "HOUR_START-HOUR_END:DAYS"
|
|
SCHEDULE_BLOCKS="22-07:daily 09-17:1-5"
|
|
|
|
# Gaming detection settings
|
|
GPU_THRESHOLD=15
|
|
GAMING_PROCESSES="steam lutris heroic wine bottles gamemode mangohud"
|
|
|
|
# Operational settings
|
|
LOG_FILE="/tmp/tdarr-scheduler.log"
|
|
CONTAINER_NAME="tdarr-node-gpu"
|
|
```
|
|
|
|
## Operational Patterns
|
|
|
|
### Automated Maintenance
|
|
**Cron Integration**: Two automated systems running simultaneously
|
|
1. **Scheduler** (every minute): `tdarr-cron-check-configurable.sh`
|
|
2. **Cleanup** (every 6 hours): Temporary directory maintenance
|
|
|
|
**Cleanup Automation**:
|
|
```bash
|
|
# Removes abandoned transcoding directories
|
|
0 */6 * * * find /tmp -name "tdarr-workDir2-*" -type d -mmin +360 -exec rm -rf {} \; 2>/dev/null || true
|
|
```
|
|
|
|
### Logging Strategy
|
|
**Log Location**: `/tmp/tdarr-scheduler.log`
|
|
**Log Format**: Timestamped entries with decision reasoning
|
|
**Log Rotation**: Manual cleanup, focused on recent activity
|
|
|
|
**Log Examples**:
|
|
```
|
|
[2025-08-13 14:30:01] Gaming detected (steam), stopping Tdarr
|
|
[2025-08-13 14:35:01] Gaming ended, but outside allowed hours (14:35 not in 22-07:daily)
|
|
[2025-08-13 22:00:01] Starting Tdarr (no gaming, within schedule)
|
|
```
|
|
|
|
### System Integration
|
|
**Gaming Detection**: Real-time process monitoring
|
|
**GPU Monitoring**: nvidia-smi integration for usage thresholds
|
|
**Container Management**: Podman-based lifecycle management
|
|
**Cron Integration**: Standard system scheduler for automation
|
|
|
|
## Configuration Presets
|
|
|
|
### Preset Profiles
|
|
**night-only**: `"22-07:daily"` - Overnight transcoding only
|
|
**work-safe**: `"22-07:daily 09-17:1-5"` - Nights + work hours
|
|
**weekend-heavy**: `"22-07:daily 09-17:1-5 08-20:6-7"` - Maximum time
|
|
**gaming-only**: No time limits, gaming detection only
|
|
|
|
### Schedule Format Specification
|
|
**Format**: `"HOUR_START-HOUR_END:DAYS"`
|
|
**Examples**:
|
|
- `"22-07:daily"` - 10PM to 7AM every day (overnight)
|
|
- `"09-17:1-5"` - 9AM to 5PM Monday-Friday
|
|
- `"14-16:6,7"` - 2PM to 4PM Saturday and Sunday
|
|
- `"08-20:6-7"` - 8AM to 8PM weekends only
|
|
|
|
## Container Architecture
|
|
|
|
### Unmapped Node Configuration
|
|
**Architecture Choice**: Local cache with API-based transfers
|
|
**Benefits**: 3-5x performance improvement, reduced network dependency
|
|
|
|
**Container Environment**:
|
|
```bash
|
|
-e nodeType=unmapped
|
|
-e unmappedNodeCache=/cache
|
|
-e enableGpu=true
|
|
-e TZ=America/New_York
|
|
```
|
|
|
|
**Volume Configuration**:
|
|
```bash
|
|
# Local high-speed cache (NVMe)
|
|
-v "/mnt/NV2/tdarr-cache:/cache"
|
|
|
|
# Configuration persistence
|
|
-v "/mnt/NV2/tdarr-cache-clean:/temp"
|
|
|
|
# No media volumes (unmapped mode uses API)
|
|
```
|
|
|
|
### Resource Management
|
|
**GPU Access**: Full NVIDIA device passthrough
|
|
**Memory**: Controlled by container limits
|
|
**CPU**: Shared with host system
|
|
**Storage**: Local NVMe for optimal I/O performance
|
|
|
|
## Troubleshooting Context
|
|
|
|
### Common Issues
|
|
1. **Gaming Not Detected**: Check process names in configuration
|
|
2. **Time Window Issues**: Verify schedule block format
|
|
3. **Container Start Failures**: Check GPU device access
|
|
4. **Log File Growth**: Manual cleanup of scheduler logs
|
|
|
|
### Diagnostic Commands
|
|
```bash
|
|
# Test current conditions
|
|
./tdarr-schedule-manager.sh test
|
|
|
|
# View real-time logs
|
|
./tdarr-schedule-manager.sh logs
|
|
|
|
# Check container status
|
|
podman ps | grep tdarr
|
|
|
|
# Verify GPU access
|
|
podman exec tdarr-node-gpu nvidia-smi
|
|
```
|
|
|
|
### Recovery Procedures
|
|
```bash
|
|
# Reset to defaults
|
|
./tdarr-schedule-manager.sh preset work-safe
|
|
|
|
# Reinstall scheduler
|
|
./tdarr-schedule-manager.sh install
|
|
|
|
# Manual container restart
|
|
./stop-tdarr-gpu-podman.sh
|
|
./start-tdarr-gpu-podman-clean.sh
|
|
```
|
|
|
|
## Integration Points
|
|
|
|
### External Dependencies
|
|
- **Podman**: Container runtime for node management
|
|
- **nvidia-smi**: GPU monitoring and device access
|
|
- **cron**: System scheduler for automation
|
|
- **SSH**: Remote server access (monitoring scripts)
|
|
|
|
### File System Dependencies
|
|
- **Cache Directory**: `/mnt/NV2/tdarr-cache` (local NVMe)
|
|
- **Temp Directory**: `/mnt/NV2/tdarr-cache-clean` (processing space)
|
|
- **Log Files**: `/tmp/tdarr-scheduler.log` (operational logs)
|
|
- **Configuration**: Local `tdarr-schedule.conf` file
|
|
|
|
### Network Dependencies
|
|
- **Tdarr Server**: API communication for unmapped node operation
|
|
- **Discord Webhooks**: Optional notification integration (via monitoring)
|
|
- **NAS Access**: For final file storage (post-processing only)
|
|
|
|
This operational context provides comprehensive guidance for managing active Tdarr automation scripts in production environments. |