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,
adding magnet links
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/