Skip to main content

Configuration Variables

Tdarr can be configured using either JSON configuration files or environment variables. This page covers all available configuration options for both Tdarr Server and Tdarr Node.

Configuration Priority

Understanding how Tdarr reads configuration is important:

  1. Environment Variables (highest priority) - Always override other settings
  2. JSON Configuration Files (medium priority) - Used if no environment variable is set
  3. Default Values (lowest priority) - Used when no other configuration exists
Quick Example

If you set serverPort=9000 as an environment variable and "serverPort": "8266" in your JSON config, Tdarr will use port 9000.


Tdarr Server Variables

VariableDefaultDescription
serverPort8266Port for server communication
webUIPort8265Port for the web UI interface
serverIP0.0.0.0IP address the server binds to
serverBindIPfalseWhether to bind to a specific IP
serverDualStackfalseEnable dual-stack (IPv4/IPv6) networking support - binds to :: when enabled and IPv6 is available
handbrakePath""Path to Handbrake executable
ffmpegPath""Path to FFmpeg executable
mkvpropeditPath""Path to mkvpropedit executable
ccextractorPath""Path to CCExtractor executable
openBrowsertrueAuto-open browser on startup
cronPluginUpdate""Cron schedule for automatic plugin updates
authfalseEnable authentication
authSecretKeyAuto-generatedSecret key for authentication
seededApiKey""Pre-create an API key on startup for automated deployments (must start with 'tapi_', be at least 14 characters, and contain only alphanumeric characters and underscores)
maxLogSizeMB10Maximum log file size in MB

Tdarr Node Variables

VariableDefaultDescription
nodeNameAuto-generatedUnique name for this node
serverURLAuto-generatedFull URL to the Tdarr server (e.g., http://192.168.1.100:8266)
serverIP0.0.0.0IP address of the Tdarr server
serverPort8266Port of the Tdarr server
handbrakePath""Path to Handbrake executable
ffmpegPath""Path to FFmpeg executable
mkvpropeditPath""Path to mkvpropedit executable
pathTranslators[]Path mappings for cross-platform access
nodeTypemappedNode type: mapped or unmapped
unmappedNodeCacheAuto-generatedCache directory for unmapped nodes, defaults to next to the Tdarr_Node application folder
priority-1Node priority (-1 is no priority, 0 is the highest priority, 1 is the next highest priority etc)
cronPluginUpdate""Cron schedule for automatic plugin updates
apiKey""API key for server authentication
maxLogSizeMB10Maximum log file size in MB
pollInterval2000How often to check server (milliseconds)
startPausedfalseStart node in paused state

Worker Configuration (Environment Variables Only)

These variables are useful for automated environments where you want a node to start up with a certain number of workers already available. These variables can ONLY be set as environment variables and can be overridden in the web UI after startup:

VariableDescription
transcodegpuWorkersNumber of GPU workers for transcoding
transcodecpuWorkersNumber of CPU workers for transcoding
healthcheckgpuWorkersNumber of GPU workers for health checks
healthcheckcpuWorkersNumber of CPU workers for health checks

Special Configuration Notes

Dual-Stack Networking

The serverDualStack configuration enables dual-stack (IPv4/IPv6) networking support:

  • When enabled: Server binds to :: (IPv6 wildcard) if IPv6 is available, allowing both IPv4 and IPv6 connections
  • When disabled: Server uses the standard IPv4 binding behavior (0.0.0.0 or specific IP based on serverBindIP)
  • IPv6 Detection: Automatically detects IPv6 availability on the system before enabling dual-stack mode
  • Use Cases: Particularly useful for Kubernetes environments and modern networking setups that require IPv6 support
Kubernetes and IPv6

This setting is especially useful in Kubernetes environments where dual-stack networking is configured, allowing Tdarr to accept connections from both IPv4 and IPv6 clients.

Server URL Configuration

The serverURL variable has special behavior:

  • Recommended: Set serverURL directly (e.g., http://192.168.1.100:8266)
  • Auto-generation: If not set, created from serverIP + serverPort
  • Environment variable behavior: If you set serverIP as env var but not serverURL, it will auto-generate
Important

Once serverURL is saved to JSON config, changing serverIP won't update it automatically. You must:

  • Set serverURL as environment variable, OR
  • Manually update the JSON config, OR
  • Delete serverURL from JSON to allow auto-generation

Path Translators

For cross-platform file access, use pathTranslators to map server paths to node paths:

In JSON config:

{
"pathTranslators": [
{
"server": "/media",
"node": "W:/media"
}
]
}

As environment variable (must be base64-encoded JSON):

# First create the JSON array
echo '[{"server":"/media","node":"W:/media"}]' | base64
# Then set as environment variable
export pathTranslators="W3sic2VydmVyIjoiL21lZGlhIiwibm9kZSI6IlcvbWVkaWEifV0="

Setting Environment Variables

Docker

Single container:

docker run -ti \
-e "serverPort=8266" \
-e "webUIPort=8265" \
-e "auth=true" \
ghcr.io/haveagitgat/tdarr

Docker Compose:

services:
tdarr:
image: ghcr.io/haveagitgat/tdarr
environment:
- serverPort=8266
- webUIPort=8265
- auth=true

Native Installation

Windows (Command Prompt):

set serverPort=8266
set auth=true

Windows (PowerShell):

$env:serverPort="8266"
$env:auth="true"

Linux/macOS:

export serverPort=8266
export auth=true

JSON Configuration Examples

Server Configuration

Create /configs/Tdarr_Server_Config.json:

{
"serverPort": "8266",
"webUIPort": "8265",
"serverIP": "0.0.0.0",
"auth": false,
"openBrowser": true,
"maxLogSizeMB": 10,
"handbrakePath": "",
"ffmpegPath": ""
}

Node Configuration

Create /configs/Tdarr_Node_Config.json:

{
"nodeName": "MyNode",
"serverURL": "http://192.168.1.100:8266",
"nodeType": "mapped",
"priority": 0,
"pathTranslators": [
{
"server": "/media",
"node": "/mnt/media"
}
]
}
Windows Users

Use forward slashes / or double backslashes \\\\ in JSON paths to avoid corruption.

Auto-Generated Values
  • authSecretKey is automatically generated when Tdarr starts
  • nodeName gets a random name if not specified
  • serverURL is auto-generated from serverIP + serverPort if not set