Set up a torrent seedbox with Transmission Daemon

Learn how to set up a torrent seedbox at home using just Transmission daemon on a computer running Fedora

Set up a torrent seedbox with Transmission Daemon
The Transmission daemon web interface after being successfully configured.

There are various BitTorrent clients that run on your local computer, whether it be Windows, Mac, or Linux, to download and seed torrents. Transmission, Deluge, KTorrent, and qBittorent are popular free ones with no ads. These are used by the vast majority of torrenters as they serve their purposes well.

One issue with torrenting files with these clients is that it is much harder to download and seed larger files reliably. Especially with laptops, everyday computers go to sleep throughout the day, get shut down at night, and can have other demands placed on resources, such as video streaming.

A solution to this reliability and up time problem is to run an always-on computer in your home to download and seed your torrents. This seedbox computer can be hardwired to your home router and be a single place for all the other devices in your house to access files.

With an always-on seedbox, your downloads are more reliable, and you can continue seeding files back to others. With all torrents, someone needed to seed the file in order for you to download it. You should return the favour to others and provide seeding for some period of time after you’ve downloaded it!

The easiest way to set up an always-on torrent server on your home network is through using the transmission-daemon program running on a Linux computer or container. The service is an extension of the Transmission ecosystem, so you can expect the same level of quality.

Getting started

To begin this tutorial, I assume that:

  • You have an existing (or new) computer or virtual machine running Fedora 36 or newer on your local network. You could use a different variant of Linux as well, such as Ubuntu or Debian, but the guide that follows has some specific Fedora configuration.
  • Recommended: The server is configured with a static local IP address. You can do this either on your router or the computer itself. This isn’t strictly necessary, but you will need to know your local computer’s IP address in order to access it from other device on your network.

At the end of the tutorial, our goal is to have:

  • Transmission daemon running on your computer
  • Accessible web UI for adding and managing torrents from other devices on your network

Setup

Install transmission and transmission-daemon

Run the following to install `transmission` and `transmission-daemon` packages using the `dnf` package manager (the standard on Fedora):

sudo dnf install transmission transmission-daemon

Generate the configuration Transmission configuration file

In my experience, locating and editing the correct Transmission daemon configuration file is the hardest part of setting up the service. The actual changes are straightforward, but the file location seems to be dependent on both Linux distro and version of Transmission used.

The versions I am using for this tutorial are Fedora 37 and Transmission daemon 3.00.

The configuration file for Transmission is not created until you first start the service for the first time. We start the service, the files are automatically created, then we stop the service so the files can be modified.

Run the following commands:

sudo systemctl start transmission-daemon.service
sudo systemctl stop transmission-daemon.service

There should now be a transmission configuration folder located at path /var/lib/transmission/.config/transmission-daemon

It is important to actually shut off the service before editing the file! You will be permitted to edit it while the service is running, but your changes will be silently overwritten, which can leave you bewildered if you're not expecting it.

Update the configuration file & start the transmission-daemon

Within this folder, open and edit the settings.json file:

sudo vim /var/lib/transmission/.config/transmission-daemon/settings.json

There are two changes that we want to make in order to access the web interface of Transmission from other devices on our local network.

1. Add local devices to the whitelisted devices that can access Transmission

Change the line rpc-whitelist value to be the subnet of your local network. Typically, this is a value such as 192.168.0.* or 192.168.2.*. The subnet depends on the configuration of your router.

While this is dependent on your local network, if you know your computer's local IP address, you can take the first three octets and replace the last with a *.

For example, in my case, my local machine's IP address is 192.168.0.62 so I update the line for rpc-whitelist to be:

"rpc-whitelist": "192.168.0.*",

2. Change the download directory to be outside the library files of the system

I want to use this local computer as a file server as well, so I am changing the download directory to be a more standard location. I will be able to connect via SFTP from my local network to share files across my devices.

Update the line for the key download-dir to be:

"download-dir": "/srv/torrents",

We also need to make sure this folder exists! We do this with the following commands:

  • Create the folder
  • Give ownership to the daemon user (transmission)
  • Set permission to allow `transmission` to write files and all others to read
sudo mkdir /srv/torrents
sudo chown -R transmission:transmission  /srv/torrents/
sudo chmod 775 -R /srv/torrents/

Open the firewall

By default, Fedora has all ports closed via the standard firewall. To grant access via the web transmission server, we need to open the port 9091 (configurable in the transmission settings.json file if you really want to)

sudo firewall-cmd --add-port 9091/tcp

Now, if you navigate to the URL of the server in your web browser of another machine on your network ,you should see a transmission web interface that is ready for you to use.

Download your first torrent

Which torrents you decide to download is up to you, but let’s do an example to ensure everything is up and running. We can go to https://torrent.fedoraproject.org/ to find a Fedora ISO.

I chose the following link for Fedora 36 Server: https://torrent.fedoraproject.org/torrents/Fedora-Server-dvd-x86_64-36_Beta.torrent.

You can open the torrent by clicking the top-left folder icon on the web interface. Copy the above link (or any torrent link) into the “Or enter a URL” field and hit “Upload.”

You should see the torrent start downloading in the web UI!

If you check on the server itself, you should also see the /srv/torrents directory with the file now.

Accessing the files

I use a simple FTP client on other computers on my network to access the files via SFTP from my seedbox. My top choices are Filezilla for Windows, Cyberduck for Mac, and the built-in file manager for Linux desktops (most distros have support included by default).

If your seedbox has a monitor and keyboard attached (not just a headless server or container), you can also use a USB hard drive to pull files and move them to other devices.