How to download torrents with transmission and docker

A simple guide to setting up Transmission in Docker for torrent downloading

January 13, 2025

Since I set up a new homelab, I wanted to separate processes that could run independently on another PC. One of those processes is downloading torrents, which previously required my PC to be running and consumed valuable space.

requirements

  • docker installed

installation

Create a file named docker-compose.yaml and add the following content:

---
services:
  transmission:
    image: lscr.io/linuxserver/transmission:latest
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - ./config:/config
      - ./downloads:/downloads
      - ./watch:/watch
    ports:
      - 9091:9091
      - 51413:51413
      - 51413:51413/udp
    restart: unless-stopped

running transmission

While in the folder containing the docker-compose.yaml file, start the container. The volumes will be automatically created.

# let's run it
docker compose up -d transmission

Now, simply add torrent files to the watch folder, and Transmission will automatically start downloading them.

settings

To make changes, such as limiting the download bandwidth, edit the settings.json file in the config folder:

"speed-limit-down": 100,
"speed-limit-down-enabled": true,

To add magnet links, save the magnet link content into a file with a .magnet extension.

For example, to save the Arch Linux magnet link as arch.magnet and start downloading it:

echo 'magnet:?xt=urn:btih:6ecfa6e78d4e63f190b9a29874b6853496432891&dn=archlinux-2025.01.01-x86_64.iso' > arch.magnet

Place the file in the watch folder, and Transmission will handle the rest.

web ui

To access the web UI, open http://localhost:9091 in your browser or use the IP address of your homelab. For example, mine is accessible at http://192.168.0.152:9091.

resources

For complete details about installation, setup, and additional features, refer to the official documentation:

https://hub.docker.com/r/linuxserver/transmission https://docs.linuxserver.io/images/docker-transmission/