Run and Compose
Run
If using Docker, please still read the previous page of instructions as the configurations will be the same except you'll be setting the variables through env vars instead of the Config.json files (except for the pathTranslators as those can't be set through env vars).
There are amd64 containers (most users will need these) and armv8 containers (for Raspberry Pi, Apple M1 etc):
ghcr.io/haveagitgat/tdarr
ghcr.io/haveagitgat/tdarr_node
The 'tdarr' container contains Tdarr_Server and a Tdarr_Node
Set internalNode=true to enable the Node in the Server container.
The 'tdarr_node' container contains a Tdarr_Node
For the examples, if on Windows replace the \ at the end of each line with a ^
If running on Raspberry Pi, you may need to add --privileged
The following shows an example Docker run command for the 'tdarr' container:
docker run -ti \
-v /docker/tdarr/server:/app/server \
-v /docker/tdarr/configs:/app/configs \
-v /docker/tdarr/logs:/app/logs \
-v /media:/media \
-v /transcode_cache:/temp \
-e "serverIP=0.0.0.0" \
-e "serverPort=8266" \
-e "webUIPort=8265" \
-e "internalNode=true" \
-e "inContainer=true" \
-e "ffmpegVersion=6" \
-e "nodeName=MyInternalNode" \
--network bridge \
-p 8265:8265 \
-p 8266:8266 \
-e "TZ=Europe/London" \
-e PUID=1000 \
-e PGID=1000 \
-e "NVIDIA_DRIVER_CAPABILITIES=all" \
-e "NVIDIA_VISIBLE_DEVICES=all" \
--gpus=all \
--device=/dev/dri:/dev/dri \
--log-opt max-size=10m \
--log-opt max-file=5 \
ghcr.io/haveagitgat/tdarr
As of 2.00.17, nodeIP and nodePort variables are no longer needed.
Where setting internalNode=true/false enables or disables the Tdarr Node running in the Server container.
The following shows an example Docker run command for the 'tdarr_node' container (includes extra options for enabling GPUs):
docker run -ti \
-v /docker/tdarr/configs:/app/configs \
-v /docker/tdarr/logs:/app/logs \
-v /media:/media \
-v /transcode_cache:/temp \
-e "nodeName=MyExternalNode" \
-e "serverIP=0.0.0.0" \
-e "serverPort=8266" \
-e "inContainer=true" \
-e "ffmpegVersion=6" \
--network bridge \
-p 8268:8268 \
-e "TZ=Europe/London" \
-e PUID=1000 \
-e PGID=1000 \
-e "NVIDIA_DRIVER_CAPABILITIES=all" \
-e "NVIDIA_VISIBLE_DEVICES=all" \
--gpus=all \
--device=/dev/dri:/dev/dri \
--log-opt max-size=10m \
--log-opt max-file=5 \
ghcr.io/haveagitgat/tdarr_node
The Server data (database, samples, plugins etc) is now stored in '/app/server'.
As mentioned above, both the Server and the Node need to have access to the same media and transcode cache paths.
To make configuration easier and to set pathTranslators (if required), you can map the configs folder on both the Server and Node:
-v /tdarr_configs:/app/configs \
When viewing '/tdarr_configs', on the host machine, you'll be able to see the Server and Node configuration files:
Tdarr_Node_Config.json
Tdarr_Server_Config.json
Note: Env vars take precedence over the JSON configs. Also, the following folders are chowned on start-up:
/home/Tdarr
/temp
/logs
/app
Please use the Docker config tool if you need help configuring the Docker run command. If you are new to Docker, have a look at the Docker Guide on the left
Compose
The following shows a docker-compose example
version: "3.4"
services:
tdarr:
container_name: tdarr
image: ghcr.io/haveagitgat/tdarr:latest
restart: unless-stopped
network_mode: bridge
ports:
- 8265:8265 # webUI port
- 8266:8266 # server port
environment:
- TZ=Europe/London
- PUID=${PUID}
- PGID=${PGID}
- UMASK_SET=002
- serverIP=0.0.0.0
- serverPort=8266
- webUIPort=8265
- internalNode=true
- inContainer=true
- ffmpegVersion=6
- nodeName=MyInternalNode
- NVIDIA_DRIVER_CAPABILITIES=all
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- /docker/tdarr/server:/app/server
- /docker/tdarr/configs:/app/configs
- /docker/tdarr/logs:/app/logs
- /media:/media
- /transcode_cache:/temp
devices:
- /dev/dri:/dev/dri
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
# node example
tdarr-node:
container_name: tdarr-node
image: ghcr.io/haveagitgat/tdarr_node:latest
restart: unless-stopped
network_mode: service:tdarr
environment:
- TZ=Europe/London
- PUID=${PUID}
- PGID=${PGID}
- UMASK_SET=002
- nodeName=MyExternalNode
- serverIP=0.0.0.0
- serverPort=8266
- inContainer=true
- ffmpegVersion=6
- NVIDIA_DRIVER_CAPABILITIES=all
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- /docker/tdarr/configs:/app/configs
- /docker/tdarr/logs:/app/logs
- /media:/media
- /transcode_cache:/temp
devices:
- /dev/dri:/dev/dri
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]