How To Run Transmission Torrent Web Client in Docker

Most people who used the internet before the streaming sites era are probably aware of torrents. This is because many people used torrents to download ripped movies, video games, music albums e.t.c.

A torrent is a file distributed over the internet through a decentralized, BitTorrent protocol known as a peer-to-peer (P2P) sharing network. Torrenting is the process of downloading or uploading the component torrent files from several peer computers. This shared nature makes the torrenting process faster than downloading or uploading large files to a central server. The files are split into smaller manageable bits that are transmitted to and from multiple computers.

There are many benefits associated with Torrents. The main advantage is that files can be uploaded by multiple other users simultaneously and downloads made from several users at once. However, torrenting is risky at times. By itself, it is not danger-ingrained, but unless the source of the files is trusted, you can end up downloading files with malware or those uploaded without proper legal permission.

Torrenting only requires torrent software to connect to the BitTorrent network. Those downloading/uploading the files are collectively referred to as a swarm. There are several torrent software in the market, the most popular ones are uTorrent, qBittorrent, Vuze, BitTorrent exatorrent e.t.c

In this guide, we will go through how to run the Transmission Torrent Web Client in Docker. Transmission is an easy-to-use and powerful BitTorrent client that offers tracker editing, a web interface, encryption, peer exchange, magnet links, DHT, µTP, UPnP and NAT-PMP port forwarding, web seed support, watch directories, global and per-torrent speed limits e.t.c

The features provided by Transmission Torrent Web Client are:

  • Sleek & Feature Rich: It provides an easy-to-use interface yet is feature-rich. The nifty features include full peer communications, tracker editing, speed limits e.t.c
  • Open Source & Privacy Focused: This is an open-source, volunteer-based project that doesn’t’ bundle toolbars, pop-up ads, flash ads, twitter tools, or anything else
  • Lightweight & Lightning Fast: It has the lowest memory and resource footprints of any major BitTorrent client. It is also compatible with almost any hardware.
  • News & Updates: There are continued updates with features included from the community contributors and the dedicated lead developers of the project.

Setup Pre-requisites

For this guide, you need to have Docker installed on your system. The guides below can be used to achieve this:

After installing Docker, ensure that your system user is added to the docker group:

sudo usermod -aG docker $USER
newgrp docker

Start and enable the service:

sudo systemctl enable --now docker

You might also need to install Docker Compose on your system.

curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url  | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -
chmod +x docker-compose-linux-x86_64
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

Verify the installation:

$ docker-compose version
Docker Compose version vx.y.z

1 – Create Persistent Volumes For Transmission Torrent

For Transmission Torrent data to persist, we need to configure persistent volumes. For this case, we need 3 volumes i.e config, downloads, and watch.

The directories can be created on your system with the command:

sudo mkdir -p /transmission/downloads /transmission/config /transmission/watch

Set the required permissions:

sudo chmod 775 -R /transmission

On RHEL-based systems, set SELinux in permissive mode for the paths to be accessible:

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

2 – Run Transmission Torrent Web Client in Docker

Transmission Torrent Web Client requires several ports on your system. These are:

  • 9091: WebUI
  • 51413: Torrent Port TCP
  • 51413/udp: Torrent Port UDP

There are also other environment variables defined using the -e. These include:

  • PUID and PGID define the user and group permissions to avoid errors that arise between the host OS and the container due to persistent volumes/path
    • -e PUID=1000
    • -e PGID=1000
  • -e TZ=Africa/Nairobi for timezone
  • -e TRANSMISSION_WEB_HOME=/combustion-release/: you can specify an alternative UI. The options available are /combustion-release/, /transmission-web-control/, /kettu/, /flood-for-transmission/, and /transmissionic/
  • -e USER=admin: optional username for the interface
  • -e PASS=Password!: optional password for the interface
  • -e WHITELIST=iplist: Specify an optional list of comma-separated IP whitelists. Fills RPC-whitelist setting.
  • -e PEERPORT=peerport: Specify an optional port for torrent TCP/UDP connections. Fills peer-port setting.
  • -e HOST_WHITELIST=dnsname list: Specify an optional list of comma-separated DNS name whitelist. Fills RPC-host-whitelist setting.

For this guide, we will provide two methods of running the Transmission Torrent Web Client container. These are:

  • Using Docker CLI
  • Using Docker Compose

Choose one of the options that best works for you.

Method 1 – Using Docker CLI

You can start the Transmission Torrent Web Client directly using Docker CLI as shown:

docker run -d \
  --name=transmission \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Africa/Nairobi \
  -e USER=admin \
  -e PASS=Password \
  -p 9091:9091 \
  -p 51413:51413 \
  -p 51413:51413/udp \
  -v  /transmission/data:/config \
  -v  /transmission/downloads:/downloads \
  -v  /transmission/watch:/watch \
  --restart unless-stopped \
lscr.io/linuxserver/transmission:latest

Replace where required. Once started, the container should be available as shown:

admin@cloudspinx:~$ docker ps
CONTAINER ID   IMAGE                                     COMMAND   CREATED              STATUS              PORTS                                                                                                                                     NAMES
f569c168efd5   lscr.io/linuxserver/transmission:latest   "/init"   About a minute ago   Up About a minute   0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:51413->51413/tcp, :::51413->51413/tcp, 0.0.0.0:51413->51413/udp, :::51413->51413/udp   transmission
admin@cloudspinx:~$

Method 2 – Using Docker Compose

It is also possible to spin the container using Docker Compose. First, create the YAML file:

vim docker-compose.yml

In the opened file, add the below content and replace values where required.

---
services:
  transmission:
    image: lscr.io/linuxserver/transmission:latest
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Africa/Nairobi
      #  - TRANSMISSION_WEB_HOME=/combustion-release/ #optional
      - USER=admin #optional
      - PASS=Password #optional
        # - WHITELIST=iplist #optional
        # - PEERPORT=peerport #optional
        # - HOST_WHITELIST=dnsname_list #optional
    volumes:
      - /transmission/data:/config
      - /transmission/downloads:/downloads
      - /transmission/watch:/watch
    ports:
      - 9091:9091
      - 51413:51413
      - 51413:51413/udp
    restart: unless-stopped

Now start the container with the command:

$ docker-compose up -d

admin@cloudspinx:~$ docker-compose up -d
Creating network "root_default" with the default driver
Pulling transmission (lscr.io/linuxserver/transmission:latest)...
latest: Pulling from linuxserver/transmission
8fc9c306fc5e: Pull complete
df25a931801a: Pull complete
feae5bd8b9ac: Pull complete
9686e6c90895: Pull complete
93a4a780530c: Pull complete
36e142dfda7b: Pull complete
a207e64b0db1: Pull complete
fa19a56aa224: Pull complete
d92bae1ceeaf: Pull complete
Digest: sha256:31b283ac9f8031135db93fda4e452b32e2656f0a92a5a75f7f5a76ca98433bbb
Status: Downloaded newer image for lscr.io/linuxserver/transmission:latest
Creating transmission ... done
admin@cloudspinx:~$

Check if the container is running:

admin@cloudspinx:~$ docker ps
CONTAINER ID   IMAGE                                     COMMAND   CREATED              STATUS              PORTS                                                                                                                                     NAMES
f569c168efd5   lscr.io/linuxserver/transmission:latest   "/init"   About a minute ago   Up About a minute   0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:51413->51413/tcp, :::51413->51413/tcp, 0.0.0.0:51413->51413/udp, :::51413->51413/udp   transmission
admin@cloudspinx:~$

3 – Access Transmission Torrent Web Interface

To be able to access the transmission Torrent Web Interface, we need to allow the ports through the firewall.

##For UFW
sudo ufw allow 9091
sudo ufw allow 51413

##Firewalld
sudo firewall-cmd --add-port={9091/tcp,51413/tcp,51413/udp} --permanent
sudo firewall-cmd --reload

Now access the web interface using the URL http://your_server_ip:9091. Once authenticated, you will see the below dashboard.

You are now set to download and upload the Torrents. I will demonstrate how to download a Torrent using Transmission Torrent. To add a torrent, click on the folder icon on the far left.

Provide the URL and select the folder to proceed. The download can be paused and resumed if need to.

You can also make adjustments using the icons on the lower part of the page. This includes limiting the download/upload speed e.t.c

To delete a torrent, use the icon shown below:

Once downloaded successfully, the files will be available in the set folder and can be viewed as shown.

admin@cloudspinx:~$ ls -al /transmission/downloads/complete/
total 3900524
drwxr-xr-x 2 ubuntu ubuntu       4096 Oct 18 23:17 .
drwxrwxr-x 4 ubuntu ubuntu       4096 Oct 18 22:32 ..
-rw-rw-r-- 1 ubuntu ubuntu 3994091520 Oct 18 23:17 debian-12.7.0-amd64-DVD-1.iso
admin@cloudspinx:~$

That marks the end of this guide on how to run the Transmission Torrent Web Client in Docker. This can now be used to download and upload torrents with ease.

Explore More with CloudSpinx

Looking to streamline your tech stack? At CloudSpinx, we deliver robust solutions tailored to your needs:

  • Hosting Services: Web Hosting, VPS, and Email Hosting
  • Development Services: Custom Web & Mobile Apps, UI/UX Design
  • Consultancy Services: Cloud, DevOps, Cybersecurity, and Kubernetes Experts
  • Managed Services: End-to-end infrastructure support
  • Dedicated Servers: Power and control, fully managed

Learn more about how we can support your journey with CloudSpinx.

Your IT Journey Starts Here!

Ready to level up your IT skills? Our new eLearning platform is coming soon to help you master the latest technologies.

Be the first to know when we launch! Join our waitlist now.

Join our Linux and open source community. Subscribe to our newsletter for tips, tricks, and collaboration opportunities!

Recent Post

Leave a Comment

Your email address will not be published. Required fields are marked *

Related Post

The web browser is the key arsenal that we use to browse the internet. If you want to access information […]

In this guide,we will look at how you can install Java 11 on Oracle Linux 8. Java is a widely […]

The adoption of Containers and microservice architectures has been amazing and speedy in the past few years. Docker is widely […]

Let's Connect

Unleash the full potential of your business with CloudSpinx. Our expert solutions specialists are standing by to answer your questions and tailor a plan that perfectly aligns with your unique needs.
You will get a response from our solutions specialist within 12 hours
We understand emergencies can be stressful. For immediate assistance, chat with us now

Contact CloudSpinx today!

Download CloudSpinx Profile

Discover the full spectrum of our expertise and services by downloading our detailed Company Profile. Simply enter your first name, last name, and email address.