How to Turn a Raspberry Pi into an Always-On BitTorrent Box

By Jason Fitzpatrick on March 23rd, 2017

2013-03-21_141205

It’s ideal to have a dedicated machine for your BitTorrent client, so you can seed 24/7. But it’s energy intensive to leave a full rig powered up and online that often. Enter the Raspberry Pi.

Most desktop PCs draw a fair amount of energy—our modest home office server, for example, consumes nearly $200 worth of electricity per year. The Raspberry Pi, on the other hand, is built around a mobile processor and sips energy like a hummingbird. The core Raspberry Pi board uses less than $3 of energy per year and even adding in a few external hard drives, you’ll still keep your yearly operating costs at less than a burger and fries.

Plus, when it comes to downloading torrents, an always-on machine is king. With torrents, the more you monitor the cloud and seed into it the better your ratio on your tracker (even if you’re leeching from public trackers, an always-on machine ensures you’ll be there when those rare files make an appearance).

If that sounds good, read on as we show you how to turn your Pi into a totally remote controlled downloading machine.

What You Need

For this tutorial, we assume that you have a Raspberry Pi unit with Raspbian installed, are able to access the device either directly via an attached monitor and keyboard or remotely via SSH and VNC, and that you have an external USB drive (or drives) attached to it. If you need to get up to speed in these areas, we strongly suggest reading the following guides in the order we have them listed here:

  1. Everything You Need to Know About Getting Started with the Raspberry Pi
  2. How to Configure Your Raspberry Pi for Remote Shell, Desktop, and File Transfer
  3. How to Turn a Raspberry Pi into a Low-Power Network Storage Device

Everything in the first tutorial is necessary. the second tutorial is optional (but remote access is incredibly handy to have for this project, as a download box is a perfect candidate for a headless build), and the most important part of the third tutorial is simply setting up the hard drive and configuring it to auto-mount on boot (as described in the third guide).

In addition, if you’re not overly familiar with the ins and outs of setting up a BitTorrent client for anonymous downloading, you should read up on it. You absolutely need some sort of anonymizing proxy or VPN system in place in order to use BitTorrent safely. The proxy mentioned in that guide is cheap and easy, but a good VPN is usually faster and more versatile, so check out this guide if you want a VPN instead.

Once you’ve reviewed all the material and have the Pi configured, it’s time to get down to the business of turning your Pi into a silent and ultra-low-power downloading beast.

Step One: Install Deluge on Raspbian

There are several BitTorrent clients for Linux worth considering, but we recommend Deluge. it’s just the right balance of features and footprint so that you won’t find yourself wishing a month from now that you had installed something more powerful.

You can go about configuring Deluge multiple ways, but not all configurations are suitable for this headless Pi download box. While most people use their torrent client on the desktop like any other app, this doesn’t work very well for our purposes, because it means every time you wanted to interact with your torrents, you would have to log in to the box over remote desktop and mess around with the desktop client. It wastes your time and it wastes resources on the Pi.

You could run the Deluge WebUI, which allows you to access the Deluge client from a browser on another machine. This still isn’t our preferred option, though it does open you up the potential of using a smartphone app to view and control Deluge (more on this later).

We recommend configuring Deluge on the remote machine to accept ThinClient connections. In this manner, we can use the actual Deluge desktop client on another computer (be it a Windows, Linux, or OS X box) to control the Raspberry Pi Deluge installation. You get all the benefits of the desktop client on your actual desktop, while the all the action happens on the remote box.

If you can’t decide between those two options, you can actually use both in tandem, though it will take a little longer to set up. Just follow the instructions in both sections below to do so.

Option One: Set up Deluge for ThinClient Access

Before you do anything, take a moment to update and upgrade your repositories. Open a Terminal and run the following two commands, one after the other:

sudo apt-get update

sudo apt-get upgrade

Once that’s done, it’s time to begin installing the necessary components for the ThinClient setup. Enter the following commands:

sudo apt-get install deluged

sudo apt-get install deluge-console

This will download the Deluge daemon and console installation packages and run them. When prompted to continue, type Y. After Deluge has finished installing, you need to run the Deluge daemon. Enter the following commands:

deluged

sudo pkill deluged

This starts the Deluge daemon (which creates a configuration file) and then shuts down the daemon. We’re going to edit that configuration file and then start it back up. Type in the following commands to first make a backup of the original configuration file and then open it for editing:

cp ~/.config/deluge/auth ~/.config/deluge/auth.old

nano ~/.config/deluge/auth

Once inside the nano text editor, you’ll need to add a line to the bottom of the configuration file with the following convention:

user:password:level

Where user is the username you want for Deluge, password is the password you want, and thelevel is 10 (the full-access/administrative level for the daemon). So for our purposes, we used pi:raspberry:10. When you’re done editing, hit Ctrl+X on your keyboard and save your changes when prompted. Then, start up the daemon and console again:

deluged

deluge-console

If starting the console gives you an error code instead of nice cleanly formatted console interface, type “exit” and then make sure you’ve started up the daemon.

Once inside the console, you’ll need to make a quick configuration change. Enter the following:

config -s allow_remote True

config allow_remote

exit

The commands and corresponding output will look like the screenshot below.

This enables remote connections to your Deluge daemon and double checks that the config variable has been set. Now it’s time to kill the daemon and restart it one more time so that the config changes take effect:

sudo pkill deluged

deluged

At this point, your Deluge daemon is ready for remote access. Head to your normal PC (not the Raspberry Pi) and install the Deluge desktop program. You’ll find the installer for your operating system on the Deluge Downloads page. Once you’ve installed Deluge on your PC, run it for the first time; we need to make some quick changes.

Once launched, navigate to Preferences > Interface. Within the interface submenu, you’ll see a checkbox for “Classic Mode”. By default it is checked. Uncheck it.

Click OK and then restart the Deluge desktop client. This time, when Deluge starts, it will present you with the Connection Manager. Click the “Add” button and then input the IP address of the Raspberry Pi on your network, as well as the username and password you set during the earlier configuration. Leave the port at the default 58846. Click Add.

Back in the Connection Manager, you’ll see the entry for the Raspberry Pi; if all goes well, the indicator light will turn green like so:

Click Connect, and you’ll be kicked into the interface, connected to the remote machine:

It’s a fresh install, nary a .torrent in site, but our connection between the remote machine and the desktop client is a success!

Go ahead and configure the WebUI now (if you wish to do so), or skip down to the next step of this tutorial.

Option Two: Set Up Deluge for WebUI Access

Configuring the WebUI is significantly faster, and allows for using some mobile apps to access Deluge. But as we mentioned before, you’ll have access to fewer features than with the full ThinClient experience. For example, ThinClient can associate .torrent files with the Deluge ThinClient for automatic transfer to the Pi, but you can’t do this with the WebUI.

First, take a moment to update and upgrade your repositories. Open a Terminal and run the following two commands, one after the other:

sudo apt-get update

sudo apt-get upgrade

Then, to install the WebUI, run the following commands. Note: If you already installed the Deluge daemon in the ThinClient section of the tutorial, skip the first command here.

sudo apt-get install deluged

sudo apt-get install python-mako

sudo apt-get install deluge-web

deluge-web

This sequence installs the Deluge daemon (if you didn’t already install it in the last section), Mako (a template gallery for Python that the WebUI needs), the WebUI itself, and then starts the WebUI program.

The default port for the WebUI is 8112. If you wish to change it, run the following commands:

sudo pkill deluge-web

nano ~/.config/deluge/web.conf

This stops the WebUI and opens up the configuration file for it. Use nano to edit the line: “port”: 8112, and replace the 8112 with any port number above 1000 (as 1-1000 are reserved by the system).

Once you have the WebUI up and running, it’s time to connect to it using a web browser. You can use a browser on the Pi if you ever need to, but it’s not the most pleasant user experience and best left for emergencies. Open up a browser on your regular desktop machine and point it at the IP address of your Pi with the port you just chose (e.g. http://192.168.1.13:8112 ).

You’ll be greeted with a password prompt (the default password is “deluge”) and be immediately encouraged to change it after you enter it for the first time. After that, you’ll be able to interact with Deluge via the lightweight interface.

2013-03-24_191041

It’s not quite the same as the ThinClient, but it’s robust enough for light use and has the added benefit of serving as the point of connection for lots of torrent-control mobile apps.

Step Two: Configure Your Proxy or VPN

You might be tempted to start downloading torrents now,but wait! Don’t do that yet. It’s absolutely reckless to use a BitTorrent Client without first shuttling your connection through a proxy server or VPN.

If you didn’t read over How To Anonymize and Encrypt Your BitTorrent Traffic yet, now is the time to do so. Read over the first section (for a better understanding of why it is important to protect your BitTorrent connection), and then sign up for a proxy service or, better yet, a good VPN before continuing on.

If you’re using a VPN, it’s pretty simple: Just choose a VPN that offers a Linux client. Then, download and install the Linux client on your Pi, start it up, and connect to your desired server. (You may even want to set it to launch when the Raspberry Pi boots, so it’s always connected to the VPN.)

If you’re using a proxy, you can plug its information into Deluge under Preferences > Proxy. You need to fill out the Peer, Web Seed, Tracker, and DHT sections like so, placing your proxy username and password in the appropriate slots. Your proxy service’s Type, Host, and Port may differ, so be sure to check its documentation.

In order for the proxy settings to take effect, you need to restart the Deluge daemon. From the terminal enter the following commands:

sudo pkill deluged

deluged

After that, you should be all set.

The best way to test that you’re actively using the proxy or VPN is to download a torrent file designed expressly to report back its IP address. You can find many of these torrents online, including this one from BTGuard and this one from TorGuard. Load either or both torrents into Deluge and wait a moment.

After the torrents have had a chance to connect to their respective trackers, select the torrents in the Deluge client and check the “Tracker Status” entry as seen above. Both will report the IP address they detect from your client. If that IP address matches your public IP address, then the proxy or VPN is not configured properly and you should return to the previous section to check your configuration. If it is configured properly, you’ll see the proxy or VPN’s IP address and not your own.

Step Three: Configure Your Download Location

Next, you’ll need to configure Deluge to use your external hard drive. If you followed along with the hard drive mounting instructions in this previously mentioned guide, you’re ready with a hard drive set to auto-mount on boot.

From there, all you need to do is change the default locations in Deluge. Navigate to Deluge’s Preferences  and head to the Downloads tab. By default, Deluge directs everything to /home/pi. That little SD card is going to fill up real fast, however, so we need to change it.

First, we’re going to create some new folders in /media/USBHDD1/shares, which is the share folder we already set up in the Low-Power Network Storage tutorial. That way, we can easily access our downloaded torrents over the network and have a network accessible watch folder for auto-loading torrent files. Use the following commands to create the folder set (adjusting the pathnames accordingly for your location if you’re not using the same Pi setup from the previous tutorial like we are):

sudo mkdir /media/USBHDD1/shares/torrents/downloading
 sudo mkdir /media/USBHDD1/shares/torrents/completed
 sudo mkdir /media/USBHDD1/shares/torrents/watch
 sudo mkdir /media/USBHDD1/shares/torrents/torrent-backups

Then, turn right around and plug those four new directories into Deluge.

Click OK to set the directories. There’s no need to restart as you did with the proxy setup.

Step Four: Test Your Connection

Now it’s time to download a large enough torrent that we can really see if the system is running smoothly. For our test we grabbed the .torrent file for the current Linux Mint distribution–it weighs in at solid 1.7GB, perfect for monitoring the connection speeds.

Once you’ve confirmed that your connection is stable and the Linux torrent is humming along nicely, it’s time to move onto the next step: automating the client startup.

Step Five: Configure Deluge to Run on Startup

Before we leave the Deluge setup, there is one final detail to attend to. We need to set up the Deluge daemon and WebUI to run automatically when our Raspberry Pi boots up. To do so simply and without the fuss of editing more complicated init files and settings, we’ll simple annotate the rc.local file. Run the following command in a Terminal to do so.

sudo nano /etc/rc.local

With the rc.local file loaded, add the following lines to the end of the file. Note: you do not need to add the the second command ending in “deluge-web” if you are not using the WebGUI. This may also be a good place to add your VPN program, if you’re using one.

# Start Deluge on boot:
 sudo -u pi /usr/bin/python /usr/bin/deluged

sudo -u pi /usr/bin/python /usr/bin/deluge-web

Your rc.local file should look something like this when you’re done (possibly with the addition of that VPN):

Press Ctrl+X to exit and save your work.

At this point, we would recommend restarting your Raspberry Pi, so fire off a “sudo reboot” at the command line. Once the Pi has finished rebooting, head to your other PC and try to connect to the Deluge ThinClient and/or WebUI to make sure they both work.

There are two major errors you may encounter here. First, a failure to connect at all means that the initialization scripts didn’t work. Open up the terminal on your Pi and manually start the daemon and WebUI using the commands we learned earlier in the tutorial.  Check to see that it works now. If it does, go back up and fix your rc.local script.

Second, if you can open up the client, but it shows permission errors for your existing torrents (like the Linux torrent we used to test things earlier), that indicates that your external hard drive was not mounted, or mounted incorrectly. Review the sections on installing an external drive and setting it to auto-mount on boot in our Low-Power Network Storage tutorial.

Enhancing Your Torrenting Experience

Now that you have your torrent box configured and ready to rock, there are a few additional tools and modifications you can look into to really enhance your user experience. None of these tips and tricks are necessary, but they do make your Raspberry Pi turned Torrent Box easier to use.

Add Mobile Access: Consider downloading a mobile control app like Transdroid and Transdrone for Android. Unfortunately we don’t have any solid suggestions for iOS users, as Apple has taken a really aggressive stance towards torrent-related apps in the App Store (and has banned any apps that slipped through the submission process).

Deluge doesn’t currently have a mobile-optimized template for the WebUI, but it’s more than functional on tablets like the iPad and Kindle Fire.

Set Up a Shared Drop Folder: Although we mentioned it briefly earlier in the tutorial, ensure that the /torrents/watch/ folder you created is accessible on your network. It’s really convenient to be able to dump a pile of .torrent files into the folder and have Deluge load them up automatically.

Install Browser Plugins: There are several Deluge-centered plugins for Chrome and Firefox that improve the user experience, including:

Activate Deluge Plugins: There are a host of great plugins already included in Deluge, and even more third-party plugins. Some of the included plugins you may want to take advantage of include:

  • Notification: You receive email alerts from Deluge on torrent completion and other events
  • Scheduler: Limit bandwidth based on time of day

You can find these in Preferences > Plugins. Check the ones you want and a new entry will appear in the preferences menu (e.g. Preferences > Notifications).

For more information about third party plugins and how to install them, check out the Plugins page in the Deluge Wiki.


After configuring, testing, and tweaking enhancements and plugins, you have a more than capable torrent box that costs mere pennies a day to operate. Find a quiet and out of the way spot to plug it in, load it up with torrents, and leave it to do the heavy lifting of downloading and seeding for you.

Jason Fitzpatrick is a warranty-voiding DIYer who spends his days cracking opening cases and wrestling with code so you don't have to. If it can be modded, optimized, repurposed, or torn apart for fun he's interested (and probably already at the workbench taking it apart). You can follow him on if you'd like.

  • Published 03/23/17
More Articles You Might Like

Enter Your Email Here to Get Access for Free:

Go check your email!