Latest

Torrent Guide – Install ruTorrent Seedbox to RedHat / CentOS

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

rtorrent-logo-197x133

This guide assumes you have already found a VPS provider and chosen and installed CentOS 6 or other RHEL release 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 a Web Server to Your VPS

This guide assumes you already have a VPS and have installed CentOS / RHEL to your server. I have written this guide using CentOS 6.5 and recommend this to ensure compatibility with the guide.

Start by installing a web server stack to your server using your preferred software. I will not be covering this in my guide. However, if you want assistance with this I suggest using VestaCP which I have created a short guide for. This will help you automatically install an Apache/Nginx stack and has a nice slick and minimal front end for managing your server.

Install rTorrent to Your VPS

Login to your VPS. The following guide will assume you are root.

Assuming we have followed my suggestion of installing VestaCP, go ahead and create a new user now as well as creating a domain you intend to use for the seedbox. This guide will follow the assumption that I have created a user named “seedbox” and a site called “seedbox.fsgdev.ml”.

Preparing Directories

Create a set of folders to host the torrents. We will need a download folder called “files”, a .torrent file watch folder called “watch”, and lastly a session or temp folder called “.session”.

cd /home/seedbox
mkdir files
mkdir watch
mkdir .session
chown -R seedbox:seedbox *

We’ll also want a directory for downloading our install files and compiling libtorrent & rtorrent.

cd ~
mkdir install

Install / Update Pre-Requisites

yum update
yum -y groupinstall "Development tools" "Server Platform Development" && yum -y install cppunit-devel libsigc++20-devel.i686 libsigc++20-devel.x86_64 libcurl-devel xmlrpc-c-devel.i686 xmlrpc-c-devel.x86_64 openssl-devel ncurses-devel

Ensure Environment Variables Set for Compiling

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

Compile and Install libTorrent

This is the framework required for the rTorrent bittorrent client.

cd ~/install
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.13.2.tar.gz
tar xvf libtorrent-0.13.2.tar.gz
cd libtorrent-0.13.2
./autogen.sh
./configure
make
make install

Compile and Install rTorrent

Install rTorrent itself.

cd ~/install
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.9.2.tar.gz
tar xvf rtorrent-0.9.2.tar.gz
cd rtorrent-0.9.2
./autogen.sh
./configure --with-xmlrpc-c
make
make install
ldconfig

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. You may want to tinker in settings afterwards but we can do that via ruTorrent graphically later on.

The config file will utilize the current users home directory so it is portable and will not require modifications for your chosen username.

nano /home/seedbox/.rtorrent.rc

Paste the following:

# Configuration file created for www.filesharingguides.com
# 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 = ~/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 = ~/.session
# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=~/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 = 127.0.0.1
#ip = rakshasa.no
# The ip address the listening socket and outgoing connections is
# bound to.
#bind = 127.0.0.1
#bind = rakshasa.no
# 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 = 127.0.0.1:5000

Test & Run rTorrent

First off, lets run rTorrent straight from the console and ensure it launches without errors. Remember to run it as your seedbox user!

su seedbox -c "rtorrent"

If successful our terminal should look something like:

rtorrent_running

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.

screen
su seedbox -c "rtorrent"

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

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 server, but you could alter the commands below if you would prefer this in a sub-directory. Of course, the following commands will need to be altered to ensure you are using your own user’s home directory and appropriate web folders.

cd ~/install
wget http://rutorrent.googlecode.com/files/rutorrent-3.5.tar.gz
tar xvf rutorrent-3.5.tar.gz
mv rutorrent /home/seedbox/web/seedbox.fsgdev.ml/public_html
wget http://rutorrent.googlecode.com/files/plugins-3.5.tar.gz
tar xvf plugins-3.5.tar.gz
mv plugins /home/seedbox/web/seedbox.fsgdev.ml/public_html/rutorrent
mv /home/seedbox/web/seedbox.fsgdev.ml/public_html/rutorrent/* /home/seedbox/web/seedbox.fsgdev.ml/public_html
rm -rf /home/seedbox/web/seedbox.fsgdev.ml/public_html/rutorrent
chown -R seedbox:seedbox /home/seedbox/web/seedbox.fsgdev.ml

That’s all, it is installed! Let’s test it out:

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.

As we are using VestaCP I know that our server will obey .htaccess files, but if you built your own server you may need to make some configuration changes here first.

Once ready, we can create our .htaccess file

nano /home/seedbox/web/seedbox.fsgdev.ml/public_html/.htaccess

Paste this code in

AuthType Basic
AuthName "Protected Area"
AuthUserFile /home/seedbox/passwd/.seedbox
Require valid-user

Make sure our new file is owned correctly.

chown -R seedbox:seedbox /home/seedbox/web/seedbox.fsgdev.ml

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

mkdir /home/seedbox/passwd
htpasswd -c /home/seedbox/passwd/.seedbox [username]
chown -R seedbox:seedbox /home/seedbox/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 su seedbox -c "rtorrent"

Try a reboot and confirm working.

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

6 Comments on Torrent Guide – Install ruTorrent Seedbox to RedHat / CentOS

  1. Can I install seedbox in my vps with out inssues? I ask because I have cpanel installation? thanks a lot.
    Alex

    • For sure, no problem installing this with cpanel. It is just an app that will run on your server the same way a forum software or wordpress would.

      Just skip the section about creating a web server with the recommendation for VestaCP. Because you already have cpanel you have that part covered.

  2. i am getting this error !
    how to resolve it ?? (me newbie in Linux đŸ˜€ )
    [root@ssx seedbox]# sudo chown -R seedbox:seedbox *
    chown: changing ownership of `conf’: Operation not permitted

    • I am not sure exactly why this isn’t working for you, but I suggest just changing ownership of each of the directories to the “seedbox” user one by one.

      ie:
      sudo chown -R seedbox:seedbox files
      sudo chown -R seedbox:seedbox watch
      etc…

  3. Sorry to say, but this guide is not 100% working under RHEL7.

    Alot of the stuffs that needs to be installed is not longer there, and the mod_scgi for rutorrent to work is not to be found yet for RHEL7.

    Just wanted to inform you about that. đŸ™‚

  4. I was able to get it all setup – basic LAMP and followed your steps and rtorrent is confirmed working (pulled a torrent already successfully). But every time I go to ruTorrent it says “No connection to rTorrent. Check if it is really running. ” – confirmed scgi ports are identical in php.conf and in .rtorrent.rc – can’t figure out what else is wrong….. any help would be greatly appreciated!

Leave a comment

Your email address will not be published.


*