In this tutorial, we will be showing you how to set up and configure the Transmission torrent client on your Raspberry Pi.
Transmission is an excellent solution for torrenting on the Raspberry Pi. It is a relatively light client that is designed to use fewer resources than other torrent clients such as Deluge.
The lower resource usage allows Transmission to make the most out of the Raspberry Pi’s modest processing power. It’s an excellent solution if you want to run the Torrentbox 24/7.
Using this guide, you will be able to setup Transmission so that it launches at boot. As well as starting at bootup, it will also be able to download and manage torrents without permission issues.
If you require a bit of privacy while you browse the web and use Transmission, then you might want to look into setting up NordVPN or something similar.
You might also want to consider setting up some network attached storage so you can access your downloaded files from another computer.
Equipment List
Below are all the bits and pieces that I made use of for this Raspberry Pi Transmission tutorial.
Recommended
- Raspberry Pi ( Amazon )
- Micro SD Card ( Amazon )
- Power Supply ( Amazon )
- Ethernet Cable ( Amazon ) or Wi-Fi ( Amazon )
Optional
- Raspberry Pi Case ( Amazon )
- External Hard drive ( Amazon ) or USB Drive ( Amazon )
- USB Keyboard ( Amazon )
- USB Mouse ( Amazon )
- HDMI Cable ( Amazon )
- Monitor ( Amazon )
Video
I have put together a video that goes through all the steps in this tutorial, you can find it right below. If you’re not interested in the video, then there are text instructions directly underneath the video.
If you love the video, then please let us know. Your feedback helps us dedicate the time to the things that matter most to you.
Setting up Transmission on the Raspberry Pi
In this tutorial, we will be making use of the Raspbian operating system. The following steps may still work on other operating systems but be prepared to run into issues.
1. The first thing we do before we install the Transmission torrent client to our Raspberry Pi is to update and upgrade our package list.
We can run these updates by running the following two commands on the Raspberry Pi.
sudo apt update
sudo apt upgrade
2. With the Raspberry Pi now up to date, let’s now go ahead and install the transmission torrent daemon to the Raspberry Pi.
Run the command below to install transmission to the Raspberry Pi.
sudo apt install transmission-daemon
Configuring the Transmission Software
1. As the Raspberry Pi Transmission software is automatically started, we will need to stop the service temporarily by running the command below.
sudo systemctl stop transmission-daemon
2. Next, we will go ahead and create two different folders. The first is where we will store the in-progress torrents, and the second is where we will store complete torrents.
The folders will be called “torrent-inprogress
” and “torrent-complete
“.
We will be creating these two folders on a drive we have mounted at “/media/NASHDD1/
“. This folder is on an external hard drive and is accessible via a Samba file server.
sudo mkdir -p /media/NASHDD1/torrent-inprogress
sudo mkdir -p /media/NASHDD1/torrent-complete
3. We need to go ahead and give your user access to the two folders we just created. Providing your user access will stop permission issues later on in the tutorial.
Run the following two chown commands to give your user access over the folders. We use the “$USER
” environment variable as it references the current user.
sudo chown -R $USER:$USER /media/NASHDD1/torrent-inprogress
sudo chown -R $USER:$USER /media/NASHDD1/torrent-complete
4. Before we start using Transmission on our Pi, we need to make changes to its config file.
Begin editing Transmission’s config file using the nano text editor by running the following command.
sudo nano /etc/transmission-daemon/settings.json
5. Within this file, we will need to go ahead and modify the following configuration options.
"incomplete-dir": "/media/NASHDD1/torrent-inprogress",
For this option, we define the directory that we want to use for our incomplete torrents. In our example this is “/media/NASHDD1/torrent-inprogress/
“.
"download-dir": "/media/NASHDD1/torrent-complete",
Next, we need to define the directory where we will store all our completed torrent downloads. In this example, the directory will be “/media/NASHDD1/torrent_complete
“.
"incomplete-dir-enabled": true,
Set “incomplete-dir-enabled
” to true
so that Transmission uses our “torrent-inprogress
” directory.
"rpc-password": "Your_Password",
Here we need to define the password for Transmissions remote control ability. Make sure this is something memorable but secure as its what you will use to access the web interface.
This value will be automatically hashed when Transmission starts up again.
"rpc-username": "Your_Username",
Next, we define the username we want to use to connect to Transmission.
"rpc-whitelist": "192.168.*.*",
Here we set the whitelist for Transmission. By default, this is set only to allow the localhost to connect.
Instead, we will change this to allow anyone on your local network to connect. If you need more information on all these settings, be sure to hit up transmissions GitHub.
3. Once you have finished editing the file you can save it by pressing CTRL + X, then Y, followed by the ENTER key.
Changing the Transmission Daemon User
1. Next, we need to edit the Transmission daemon startup script so that it uses your user instead of the default “debian-transmission
” user.
We can begin modifying the init script by running the command below.
sudo nano /etc/init.d/transmission-daemon
2. In here, we need to edit the “USER=
” line, so that the Transmission daemon will be run by your user and not the “debian-transmission
” user that is setup by default.
We do this as the folder we are going to store our torrents in is owned by your user.
If you intend on using a different user, make sure you use that instead. Replace “<YOURUSERNAME>
” with the name of your user.
USER=<YOURUSERNAME>
Once done, we need to save and quit by pressing CTRL + X then pressing Y and then ENTER.
3. We also need to change the user from “debian-transmission
” to your username in the service file
Otherwise, Transmission will be started up by the “debian-transmission
” user.
Begin modifying the service file by running the following command.
sudo nano /etc/systemd/system/multi-user.target.wants/transmission-daemon.service
4. Within this file, we need to change the “User=
” line so that it points to your user instead.
Ensure you replace, “<YOURUSERNAME>
” with your username. For example, in our case we will be using “pi
” as our user.
User=<YOURUSERNAME>
Once done, we need to save and quit by pressing CTRL + X then pressing Y and then ENTER.
5. Now we need to tell the service manager to reload all service configuration files by running the following command.
Otherwise, systemctl will try to use the older version of the service file.
sudo systemctl daemon-reload
6. As we have changed the user from “debian-transmission
” to your user we will need to go ahead and take ownership of the “/etc/transmission-daemon
” folder.
We can do this by running the following command.
sudo chown -R $USER:$USER /etc/transmission-daemon
7. Next, we need to create a directory where the transmission-daemon will access the “setting.json
” file.
We also to need to create a symbolic link back to the settings file that we edited earlier on in the tutorial. The file will exist in both directories thanks to the symbolic link.
sudo mkdir -p /home/$USER/.config/transmission-daemon/
sudo ln -s /etc/transmission-daemon/settings.json /home/$USER/.config/transmission-daemon/
sudo chown -R $USER:$USER /home/$USER/.config/transmission-daemon/
8. Now that we have finally configured everything correctly, we can go ahead and start back up the Transmission daemon service on our Raspberry Pi.
To start up the service, you need to run the following command.
sudo systemctl start transmission-daemon
Accessing Transmission’s Web Interface
1. We can finally check out Transmissions web interface by going to the Raspberry Pi’s IP address followed by the port “:9091
“.
If you don’t know what your Pi’s local IP address is, you can retrieve it by using the hostname command on your Raspberry Pi.
Replace “<IPADDRESS>
” in the URL below with your Pi’s local IP address to go to Transmission’s web interface.
http://<IPADDRESS>:9091
2. Before you can proceed to the Transmission web interface, you will be first asked to enter the username and password that you set earlier on in this guide.
Within the web interface, you can add and remove torrents, change settings, set schedules, and much more.
There are other Torrent clients that you might want to investigate installing if you decide you do not like Transmission. The range is pretty limited for the Raspberry Pi but be sure to check them out.
At this point you should now have successfully setup the Transmission torrent client on the Raspberry Pi. If you run into any issues, feel free to drop a comment below.
Hi, thanks for a great tutorial.
There is a slight error in the code where you identify the line in the transmission-daemon.service to change the user. It should have a capital U…
User=
Not a huge problem unless someone cuts and pastes the text.
Hi Diesel1,
Thank you very much for picking up that typo. I have corrected it so it should all now be correct.
Kind regards,
Emmet
Thanks a lot. This guideline is very useful.
I am using Raspberry Pi 4 B 16GB
Thanks for this tutorial. There’s a small typo in the instructions, where you’ve used an underscore instead of a hyphen, as follows:
{Next, we need to define the directory where we will store all our completed torrent downloads. In this example, the directory will be “/media/NASHDD1/torrent_complete“.}
In order to be consistent with earlier commands for creating the directory, it should read …./torrent-complete”.
Thank you for pointing this out! We have fixed the typo.
Thanks. I’m new to Raspberry Pi and to any Linux based distro and it was super helpful. Everything is running with no problem at all 🙂 Thank You again.
Excellent tutorial, I was having permission problems following instructions from other sites.
Excellent tutorial – along with setting up Nord VPN.
Works a treat.
Many Thanks
Thanks!!!
The only working tutorial on the internet.
Another suggestion: If you experience too much disk IO / CPU usage and locked system, try to drastically reduce the concurrent connections changing accordly these params in config:
“peer-limit-global”: 4,
“peer-limit-per-torrent”: 4
Try to play around between 2 and 10 connections.
If Transmission Daemon is writing to a drive you have shared via Samba or other methods, you may want to change Settings.Json:
“umask”: 18,
to
“umask”: 2,
So that the files that Transmission downloads will have permissions for public access on the shared directory.
You helped me solve my problem before I even realized it was my problem. Thanks!
Great thanks so much
Fantastic guide
it worked without any issues on my rasp 3b with lite os
thank you so much
Great guide!
I had to remove the symbolic link from a previous config, check this if you can’t make it work.
thx a lot! 3rd tutorial I tried, first one that works 🙂
for others who have had multiple tries, best is to remove previous install with –purge so you can have a clean start
many thanks i was becoming crazy with other incomplete tutorial, this work fine.
It’s worth noting that mounted drives must be formatted with a linux fs otherwise chown wont work.
Thanks for a complete write-up that addresses permission issues that I’ve spent countless hours trying to resolve. Did a clean install using these steps and it works flawlessly. Would also like instructions on installing transgui but it should be easy to do on my own.
I am eternally grateful for this guide, as it is correctly assigning permissions which is missed in many how-tos.
Grateful indeed !