In this article we will see how to run docker containers for Plex, Sonarr, Radarr, Jackett and Transmission. Together these technologies make a complete suit. Let’s see how we can run individual docker commands for each of them as well as one docker-compose file.
Plex
It’s a free media streaming software where you can watch movies, tv serials and 100s of free tv channels. There is no need of buying any kind of subscription. You may connect your OTT accounts and get all the content at one place.
To run a docker image of plex, you can use this command –
docker run -d \ --name=plex \ --net=host \ -e PUID=1000 \ -e PGID=1000 \ -e VERSION=docker \ -e PLEX_CLAIM= `#optional` \ -v /path/to/library:/config \ -v /path/to/tvseries:/tv \ -v /path/to/movies:/movies \ --restart unless-stopped \ lscr.io/linuxserver/plex:latest
In this command you need to replace data according to your use case. Like, the volume paths, claimtoken, timezone, hostipaddress etc. Here we are going to simply use the paths of container and store everything inside it. But you should always use some host directories. This is because if you delete the container, all the data will be deleted too.
On my machine, I am running plex container using this –
docker run -d \ --name=plex \ --net=host \ -e PUID=1000 \ -e PGID=1000 \ -e VERSION=docker \ --restart unless-stopped \ lscr.io/linuxserver/plex:latest
Sonarr
Sonarr is a PVR for newsgroup and bittorrent users. Basically, it tracks the feeds of various media websites and manages the list. It updates the quality of media whenever a better one is available.
To run docker image of Sonarr, use this command –
docker run -d \ --name=sonarr \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -p 8989:8989 \ -v /path/to/data:/config \ -v /path/to/tvseries:/tv `#optional` \ -v /path/to/downloadclient-downloads:/downloads `#optional` \ --restart unless-stopped \ lscr.io/linuxserver/sonarr:latest
Similar to plex, you need to set the correct volume paths. I am omitting it for simplicity and using this command –
docker run -d \ --name=sonarr \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -p 8989:8989 \ --restart unless-stopped \ lscr.io/linuxserver/sonarr:latest
It is running on port 8989. If we open http://localhost:8989
we can see sonarr running –
Radarr
Just like Sonarr, we have another utility known as Radarr. To run docker image of Radarr use this code –
docker run -d \ --name=radarr \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -p 7878:7878 \ -v /path/to/data:/config \ -v /path/to/movies:/movies `#optional` \ -v /path/to/downloadclient-downloads:/downloads `#optional` \ --restart unless-stopped \ lscr.io/linuxserver/radarr:latest
We will simplify it for our use –
docker run -d \ --name=radarr \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -p 7878:7878 \ --restart unless-stopped \ lscr.io/linuxserver/radarr:latest
Radarr runs on port 7878. If we open localhost:7878
, we will see this page –
Jackett
Jackett acts as a compatibility maker for sonarr and tracker-sites. It converts the queries to make them compatible to both.
To run Jackett on docker, use this command –
docker run -d \ --name=jackett \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -e AUTO_UPDATE=true `#optional` \ -e RUN_OPTS=<run options here> `#optional` \ -p 9117:9117 \ -v <path to data>:/config \ -v <path to blackhole>:/downloads \ --restart unless-stopped \ lscr.io/linuxserver/jackett:latest
We will use the simplified command –
docker run -d \ --name=jackett \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -p 9117:9117 \ --restart unless-stopped \ lscr.io/linuxserver/jackett:latest
It works on 9117 port. If you open localhost:9117
, you will get this –
Transmission
Transmission is a bittorrent client with lots of additional features like encryption, peer exchange, magnet links, per-torrent speed limits etc.
To run Transmission container, use this command –
docker run -d \ --name=transmission \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -e TRANSMISSION_WEB_HOME=/combustion-release/ `#optional` \ -e USER=username `#optional` \ -e PASS=password `#optional` \ -e WHITELIST=iplist `#optional` \ -e PEERPORT=peerport `#optional` \ -e HOST_WHITELIST=dnsname list `#optional` \ -p 9091:9091 \ -p 51413:51413 \ -p 51413:51413/udp \ -v /path/to/data:/config \ -v /path/to/downloads:/downloads \ -v /path/to/watch/folder:/watch \ --restart unless-stopped \ lscr.io/linuxserver/transmission:latest
The simplified command is –
docker run -d \ --name=transmission \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -p 9091:9091 \ -p 51413:51413 \ -p 51413:51413/udp \ --restart unless-stopped \ lscr.io/linuxserver/transmission:latest
It will run at 9091 port. If we open at localhost:9091
we will see this –
Docker-compose for Plex, Sonarr, Radarr, Jackett and Transmission
Here is the final docker-compose file for Plex, Sonarr, Radarr, Jackett and Transmission (remember to replace volumes) –
version: "2.1" services: transmission: image: lscr.io/linuxserver/transmission:latest container_name: transmission environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - TRANSMISSION_WEB_HOME=/combustion-release/ #optional - USER=username #optional - PASS=password #optional - WHITELIST=iplist #optional - PEERPORT=peerport #optional - HOST_WHITELIST=dnsname list #optional volumes: - /path/to/data:/config - /path/to/downloads:/downloads - /path/to/watch/folder:/watch ports: - 9091:9091 - 51413:51413 - 51413:51413/udp restart: unless-stopped radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/London volumes: - /path/to/data:/config - /path/to/movies:/movies #optional - /path/to/downloadclient-downloads:/downloads #optional ports: - 7878:7878 restart: unless-stopped sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/London volumes: - /path/to/data:/config - /path/to/tvseries:/tv #optional - /path/to/downloadclient-downloads:/downloads #optional ports: - 8989:8989 restart: unless-stopped jackett: image: lscr.io/linuxserver/jackett:latest container_name: jackett environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - AUTO_UPDATE=true #optional - RUN_OPTS=<run options here> #optional volumes: - <path to data>:/config - <path to blackhole>:/downloads ports: - 9117:9117 restart: unless-stopped plex: image: lscr.io/linuxserver/plex:latest container_name: plex network_mode: host environment: - PUID=1000 - PGID=1000 - VERSION=docker - PLEX_CLAIM= #optional volumes: - /path/to/library:/config - /path/to/tvseries:/tv - /path/to/movies:/movies restart: unless-stopped
If you are having troubles in deciding the volume paths, then use our ready-to-use docker-compose file. But you need to decide the directory path according to your operating system. Here I am considering the linux OS –
version: "2.1" services: transmission: image: lscr.io/linuxserver/transmission:latest container_name: transmission environment: - PUID=1000 - PGID=1000 - TZ=Europe/London volumes: - /var/transmission-config:/config - /var/transmission/completed:/downloads - /var/transmission/watch:/watch ports: - 9091:9091 - 51413:51413 - 51413:51413/udp restart: unless-stopped radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/London volumes: - /var/radarr-config:/config - /var/plex/movies:/movies - /var/transmission/completed:/downloads ports: - 7878:7878 restart: unless-stopped sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/London volumes: - /var/sonarr-config:/config - /var/plex/tv:/tv - /var/transmission/completed:/downloads ports: - 8989:8989 restart: unless-stopped jackett: image: lscr.io/linuxserver/jackett:latest container_name: jackett environment: - PUID=1000 - PGID=1000 - TZ=Europe/London volumes: - /var/jackett-config:/config - /var/jackett/downloads:/downloads ports: - 9117:9117 restart: unless-stopped plex: image: lscr.io/linuxserver/plex:latest container_name: plex network_mode: host environment: - PUID=1000 - PGID=1000 - VERSION=docker volumes: - /var/plex-config:/config - /var/plex/tv:/tv - /var/plex/movies:/movies restart: unless-stopped
Conclusion
In this article we saw how plex, sonarr, radarr, jackett, transmission docker container can be created individually as well as using docker-compose file. This complete suit can communicate with each other using shared volumes.
Kubernetes Series
- Introduction to Kubernetes
- Introduction to Docker, Containers, Images & Repository
- Install and Run Docker Images
- Docker Image – FROM, RUN, COPY, ENTRYPOINT, CMD, EXPOSE explained
- Why docker run or start command not running my container?
- How to list all docker images in system?
- How to list all docker containers?
- How to start/stop a docker container?
- Difference between docker run and docker start
- How to bind docker container port with host?
- How to get logs of docker container?
- How to live stream logs of docker container?
- Set custom name to a docker container
- Access docker container filesystem & terminal
- Getting docker details using docker inspect
- Kyverno – Installation, Policies, Testing, Reporting, Monitoring, Security
- Complete Kubernetes Project Step By Step
- Introduction to Kubernetes Objects