#!/bin/bash # Tdarr Mapped Node with GPU Support - Example Script # This script starts a MAPPED Tdarr node container with NVIDIA GPU acceleration using Podman # # MAPPED NODES: Direct access to media files via volume mounts # Use this approach when you want the node to directly access your media library # for local processing without server coordination for file transfers # # Configure these variables for your setup: set -e CONTAINER_NAME="tdarr-node-gpu-mapped" SERVER_IP="YOUR_SERVER_IP" # e.g., "10.10.0.43" or "192.168.1.100" SERVER_PORT="8266" # Default Tdarr server port NODE_NAME="YOUR_NODE_NAME" # e.g., "workstation-gpu" or "local-gpu-node" MEDIA_PATH="/path/to/your/media" # e.g., "/mnt/media" or "/home/user/Videos" CACHE_PATH="/path/to/cache" # e.g., "/mnt/ssd/tdarr-cache" echo "๐Ÿš€ Starting MAPPED Tdarr Node with GPU support using Podman..." echo " Media Path: ${MEDIA_PATH}" echo " Cache Path: ${CACHE_PATH}" # Stop and remove existing container if it exists if podman ps -a --format "{{.Names}}" | grep -q "^${CONTAINER_NAME}$"; then echo "๐Ÿ›‘ Stopping existing container: ${CONTAINER_NAME}" podman stop "${CONTAINER_NAME}" 2>/dev/null || true podman rm "${CONTAINER_NAME}" 2>/dev/null || true fi # Start Tdarr node with GPU support echo "๐ŸŽฌ Starting Tdarr Node container..." podman run -d --name "${CONTAINER_NAME}" \ --gpus all \ --restart unless-stopped \ -e TZ=America/Chicago \ -e UMASK_SET=002 \ -e nodeName="${NODE_NAME}" \ -e serverIP="${SERVER_IP}" \ -e serverPort="${SERVER_PORT}" \ -e inContainer=true \ -e ffmpegVersion=6 \ -e logLevel=DEBUG \ -e NVIDIA_DRIVER_CAPABILITIES=all \ -e NVIDIA_VISIBLE_DEVICES=all \ -v "${MEDIA_PATH}:/media" \ -v "${CACHE_PATH}:/temp" \ ghcr.io/haveagitgat/tdarr_node:latest echo "โณ Waiting for container to initialize..." sleep 5 # Check container status if podman ps --format "{{.Names}}" | grep -q "^${CONTAINER_NAME}$"; then echo "โœ… Mapped Tdarr Node is running successfully!" echo "" echo "๐Ÿ“Š Container Status:" podman ps --filter "name=${CONTAINER_NAME}" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" echo "" echo "๐Ÿ” Testing GPU Access:" if podman exec "${CONTAINER_NAME}" nvidia-smi --query-gpu=name --format=csv,noheader,nounits 2>/dev/null; then echo "๐ŸŽ‰ GPU is accessible in container!" else echo "โš ๏ธ GPU test failed, but container is running" fi echo "" echo "๐ŸŒ Connection Details:" echo " Server: ${SERVER_IP}:${SERVER_PORT}" echo " Node Name: ${NODE_NAME}" echo "" echo "๐Ÿงช Test NVENC encoding:" echo " podman exec ${CONTAINER_NAME} /usr/local/bin/tdarr-ffmpeg -f lavfi -i testsrc2=duration=5:size=1920x1080:rate=30 -c:v h264_nvenc -preset fast -t 5 /tmp/test.mp4" echo "" echo "๐Ÿ“‹ Container Management:" echo " View logs: podman logs ${CONTAINER_NAME}" echo " Stop: podman stop ${CONTAINER_NAME}" echo " Remove: podman rm ${CONTAINER_NAME}" else echo "โŒ Failed to start container" echo "๐Ÿ“‹ Checking logs..." podman logs "${CONTAINER_NAME}" --tail 10 exit 1 fi