Torrent Guide – Install ruTorrent Seedbox to Ubuntu / Debian VPS

Share on Facebook0Tweet about this on TwitterShare on Google+0Share on StumbleUpon0Share on Reddit0Digg this


This guide assumes you have already found a VPS provider and chosen and installed Debian or Ubuntu to your node.

ruTorrent BitTorrent Client

Upload a Torrent

Upload a Torrent

ruTorrent has quickly become the #1 go to front end / bitTorrent client for operating on seedboxes. It is extremely light weight, supports plugins with a strong development following and is extremely simple to use.

ruTorrent itself is actually just a front-end for rTorrent which is a console based bittorrent application. Although ruTorrent is not required for functionality, it certainly makes maintaining a seedbox 1000x easier with it’s slick web interface.

Install rTorrent to Your VPS

This guide assumes you already have a VPS and have installed a Debian based release to your server. I recommend Ubuntu 12.04 LTS for compatibility and long term support of security patches.

Login to your VPS. The following guide will need to be executed as root, so either modify the following commands to use sudo or switch to your super user account by entering:

sudo su

Preparing Directories

In my tutorial I will be setting my seedbox up using the /var/www (public internet) folder. This is a basic design that assumes this is a single user seedbox and eliminates the need to do any web server configuration aside from the installs.

mkdir ~/install
mkdir /var/www/files
mkdir /var/www/watch
mkdir /var/www/.temp
chown -R www-data:www-data /var/www

Install / Update Pre-Requisites

apt-get update
apt-get -y upgrade
apt-get -y install apache2 apache2-utils autoconf build-essential ca-certificates comerr-dev libapache2-mod-php5 libcloog-ppl-dev libcppunit-dev libcurl3 libcurl4-openssl-dev libncurses5-dev ncurses-base ncurses-term libterm-readline-gnu-perl libsigc++-2.0-dev libssl-dev libtool libxml2-dev ntp openssl patch libperl-dev php5 php5-cli php5-dev php5-fpm php5-curl php5-geoip php5-mcrypt php5-xmlrpc pkg-config python-scgi dtach ssl-cert subversion zlib1g-dev pkg-config unzip htop irssi curl cfv nano unrar-free mediainfo libapache2-mod-scgi
ln -s /etc/apache2/mods-available/scgi.load /etc/apache2/mods-enabled/scgi.load

Compile and Install XMLRPC from SVN Repositories

This is a communication framework which is required for ruTorrent to access rTorrent.

cd ~/install
svn checkout xmlrpc-c
cd xmlrpc-c
./configure --disable-cplusplus
make install

Compile and Install libTorrent

This is the framework required for the rTorrent bittorrent client.

cd ~/install
tar xvf libtorrent-0.13.2.tar.gz
cd libtorrent-0.13.2
make install

Compile and Install rTorrent

Install rTorrent itself.

cd ~/install
tar xvf rtorrent-0.9.2.tar.gz
cd rtorrent-0.9.2
./configure --with-xmlrpc-c
make install

rTorrent Configuration File

rTorrent requires a configuration file (.rtorrent.rc) to be added for the home directory of user running the application.

You will find this configuration file in it’s default form in your ~/install/rtorrent-0.9.2/doc/ folder. This however would require you to configure it manually. Instead, assuming you have followed our defaults here, simply copy and paste our .rtorrent.rc file into your home directory.

nano ~/.rtorrent.rc

Paste the following:

# Configuration file created for for single user rutorrent seedbox
# Maximum and minimum number of peers to connect to per torrent.
# min_peers = 25
max_peers = 100
# Same as above but for seeding completed torrents (-1 = same as downloading)
min_peers_seed = -1
max_peers_seed = -1
# Maximum number of simultanious uploads per torrent.
max_uploads = 100
# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 0
upload_rate = 0
# Default directory to save the downloaded torrents.
directory = /var/www/files
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /var/www/.temp
# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=/var/www/watch/*.torrent
schedule = untied_directory,5,5,stop_untied=
# Close torrents when diskspace is low.
schedule = low_diskspace,5,60,close_low_diskspace=100M
# The ip address reported to the tracker.
#ip =
#ip =
# The ip address the listening socket and outgoing connections is
# bound to.
#bind =
#bind =
# Port range to use for listening.
port_range = 6890-6999
# Start opening ports at a random position within the port range.
#port_random = no
# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#check_hash = no
# Set whetever the client should try to connect to UDP trackers.
#use_udp_trackers = yes
# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa
# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
encryption = allow_incoming,enable_retry,prefer_plaintext
# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
dht = disable
# UDP port to use for DHT.
# dht_port = 6881
# Enable peer exchange (for torrents not marked private)
peer_exchange = no
# Do not modify the following parameters unless you know what you're doing.
# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10
# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100
# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10
scgi_port =

Test & Run rTorrent

First off, lets run rTorrent straight from the console and ensure it launches without errors.


If successful our terminal should look something like:


Press ctrl-q to get out of this screen.

Now, with it up on our screen we can’t really do much so this isn’t a great way to run it. Instead we’ll use a screen instance to run rTorrent in the background of our server.


That should start a fresh shell login for us, and issue the rtorrent command as per above again. Once rtorrent comes up we can detatch from our Screen session via “ctrl-a” (action), then press “d” (detatch).

The backend installation is complete. Now…

Install ruTorrent to Your VPS

Next we download the Web UI packages, as well as a set of plugins and install them to our web server.

For my seedbox I will be installing rutorrent right at the root of my web server, but you could alter the commands below if you would prefer this in a sub-directory. In a later guide I will go over creating user slots and using multiple instances of ruTorrent/rTorrent per user.

cd ~/install
tar xvf rutorrent-3.5.tar.gz
mv rutorrent /var/www
tar xvf plugins-3.5.tar.gz
mv plugins /var/www/rutorrent
mv /var/www/rutorrent/* /var/www
chown -R www-data:www-data /var/www/rutorrent

That’s all, it is installed! Now let’s access ruTorrent by visiting it in our browser and running a test file through!

Securing ruTorrent

ruTorrent doesn’t have any built in authentication so let’s create an .htaccess and .htpasswd file for our server to lock the directory down.

First, we’ll need to ensure our server obeys .htaccess files.

nano /etc/apache2/sites-available/default

Find where it says “AllowOverride None” under /var/www and change it to “AllowOverride All”


Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

Now we can create our .htaccess file

nano /var/www/.htaccess

Paste this code in

AuthType Basic
AuthName "Protected Area"
AuthUserFile /var/passwd/.htpasswd
Require valid-user

Make sure our new file is accessible by www-data group.

chown -R www-data:www-data /var/www/.htaccess

Now we need a password file. We can do this with Apache’s htpasswd utility. Enter the following commands to create a www-data accessible directory to store our passwords and then create a password file. Input your user’s password when requested.

mkdir /var/passwd
htpasswd -c /var/passwd/.htpasswd testuser
chown -R www-data:www-data /var/passwd

Test to confirm working!

Run On Boot

You probably don’t want to have to worry about running rtorrent in screen everytime your system needs a reboot. We can implement a really simple fix for this by using the rc.local script to run our screen process on boot.

nano /etc/rc.local

You should see some code already in there, but most likely all comments if you are have not already touched the file otherwise. Make sure to leave the header of the file in tact and add this command to the bottom, but before the exit 0.

screen -S rtorrent -d -m rtorrent

Try a reboot and confirm working.

Share on Facebook0Tweet about this on TwitterShare on Google+0Share on StumbleUpon0Share on Reddit0Digg this

10 Comments on Torrent Guide – Install ruTorrent Seedbox to Ubuntu / Debian VPS

  1. Hello,,i had little bit confused to install Rutorrent on my vps using vestacp 🙁
    i had 2 IPv4,main IP i used for rapidleech site and 1 ip for rutorrent site, both on same vps and using add domain on vestacp..
    how can i put the web directory to 1 ip that used to be torrent site.??
    warm regards,

    • Should be pretty easy. Just create separate “Web” entries for each service. When you create it, there is an IP address drop down so you can assign 1 IP to your rapidleech and 1 to rutorrent.

      If you have a domain you could assign a subdomain to each service. But, I don’t think that’s necessary and you could just use the IP’s as long as you set it up as above.

  2. yuuppp..the problem is, when i execute the command from main IP it belong to rapidleech IP..and i still confused a lot how to put the command so it belong to Torrent IP/Domain Public html..
    Could u please make tutorial like this but more spesific for Debian using vestacp and install in different domain public html in 1 VPS..
    Thanks a lot for your reply and kindness 🙂
    Best Regards,

    • Sorry, these tutorials are a bit time consuming so I won’t be able to rewrite another whole guide for this case.

      You just need to change all the places it says /var/www to your /home/[user]/web/[website] folder. And all the places where we change ownership (chown) to www-data, change those to [user]:[user]. Obviously change all those [user] and [website] to what you setup in VestaCP.

  3. Hello,

    My rtorrent doesn’t start automically
    i used the code screen -S rtorrent -d -m rtorrent in /etc/rc.local

  4. Hi,
    Great Guide!
    As one mentioned I cant make it automated.

    screen -S rtorrent -d -m rtorrent in /etc/rc.local doesnt seem to work.

    Everything else works but it just ignores the commando on reboot, so I have to start it manually.

    Any ideas?

  5. How to stop(quit,exit,close) the rtorrent?

  6. I have followed step by step in this tutorial, everything is describe, how to install and configure ruTorrent and rtorrent on Ubuntu.

  7. Did it’s work for Linux Ubuntu User ? not Administrator.
    i can’t fing Root manager

Leave a comment

Your email address will not be published.