Introduction
rTorrent is a popular command line based bittorrent client. It provides very powerful features yet it is very light on the system – contrary to other bittorrent clients like Vuze. There are a couple of webinterfaces for it but they are not truly need. SSH access combined with the “screen” program provide you all the tools you need.
In addition to the previous compilation guides of rTorrent, this one will also feature ruTorrent on a force Apache SSL connection with password protection.
This howto works for Ubuntu 10.10 Maverick Meerkat and for Debian 6 Squeeze. The difference is that commands that contain sudo must be executed as root.
In this howto I assume you download and compile the sources from your ~/svn/rtorrent folder.
1. Remove current rtorrent installation
sudo apt-get remove rtorrent libtorrent*
2. Install necessary packages
sudo apt-get install build-essential autoconf apache2 automake libtool libncurses5-dev libncursesw5-dev libcurl4-openssl-dev screen openssl php5 php5-cli libapache2-mod-php5 curl libcppunit-dev libsigc++-2.0-dev subversion php5-cgi libapache2-mod-scgi
3. Create svn folder
mkdir ~/svn
4. Go into the svn folder
cd ~/svn
Current location: /home/USER/svn
5. Get the xmlrpc sources by svn
svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced/ xmlrpc-c
Current xmlrcp reversion is 2090.
6. Go into xmlrpc-c folder
cd xmlrpc-c
Current location: /home/USER/svn/xmlrpc-c
7. Configure xmlrpc-c
./configure –disable-cplusplus
8. Compile xmlrpc-c
make
9. Install xmlrpc-c
sudo make install
10. Create rtorrent folder
mkdir ~/svn/rtorrent
11. Go into rtorrent folder
cd ~/svn/rtorrent
Current location: /home/USER/svn/rtorrent
12. Get the rtorrent sources by svn
svn co svn://rakshasa.no/libtorrent/trunk
Current rtorrent revision is 1191.
13. Go into the trunk folder
cd trunk
Current location: /home/USER/svn/rtorrent/trunk
14. Download the patches
Colour support for rtorrent:
wget http://www.simplylinux.ch/rtorrent/canvas-color_1191.patch
This patch enables you to colorize the rtorrent cli interfaces. It differentiaties between completed/uncompleted torrents and active/inactive ones. I first had to get used to it also but meanwhile I think it’s really a good enhancement. The patch was originally supplied here: http://libtorrent.rakshasa.no/ticket/1382. However that patch does not work with the current rev. anymore. Because of that I fixed it and supply it also from my server.
Torrent Tracker Stats:
wget http://www.simplylinux.ch/rtorrent/trackerinfo.patch
This patch shows the number of seeders/leechers/completed as supplied by the tracker in the tracker view. Often it’s not accurate however it’s usefull for me to check if a tracker has any peers at all listed for a given torrent.
15. Apply the patches
Colour support for rtorrent:
patch -p0 < canvas-color_1191.patch
Torrent Tracker Stats:
patch -p0 < trackerinfo.patch
16. Get into the libtorrent folder
cd libtorrent
Current location: /home/USER/svn/rtorrent/trunk/libtorrent
17. Run the autogen.sh script
./autogen.sh
18. Configure libtorrent
./configure
19. Compile libtorrent
make
20. Install libtorrent
sudo make install
21. Extend /etc/ld.so.conf
echo “include /usr/local/lib” | sudo tee -a /etc/ld.so.conf
22. Updated ld.so cache
sudo ldconfig
23. Go into the rtorrent folder
cd ../rtorrent
Current location: /home/USER/svn/rtorrent/trunk/rtorrent
24. Run the autogen.sh script
./autogen.sh
25. Configure rtorrent
./configure –with-xmlrpc-c
26. Compile rtorrent
make
27. Install rtorrent
sudo make install
28. Copy and extend rtorrent configuration
If you have no .rtorrent.rc file yet in your homefolder, copy the default one first:
cp ~/subversion/rtorrent/trunk/rtorrent/doc/rtorrent.rc ~/.rtorrent.rc
In order to make ruTorrent and the colours work, you have to add a few options to the .rtorrent.rc file. Add them at the end of the file:
http_capath=/etc/ssl/certs
scgi_port = 127.0.0.1:5000
encoding_list = UTF-8
# Color / Canvas patch
done_fg_color = 2
#done_bg_color = 2
active_fg_color = 1
#active_bg_color = 4
In addition I would also add the following items:
schedule = filter_active,10,10,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""
view_sort_new = seeding,less=d.get_message=
schedule = filter_seeding,30,30,"view_filter = seeding,d.get_message=; view_sort = seeding"
The first schedule command alters view 9 in such a way that only active torrents are being shown. The view_sort and the second schedule command alter view 8 in such a way, that “unusual” tracker replies are being displayed there. This makes it easier to find misbehaving torrents in rtorrent.
It is important to create the download and session directories. Set them in the .rtorrent.rc config and create the directories.
More info on rTorrent can be found on the Common Tasks page. Especially the section about watch dirs and move on completion are interesting.
29. Run rtorrent
Now that rtorrent is ready, run it in a screen session:
screen rtorrent
30. Create SSL Certificate
sudo openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem
31. Go to the webfolder
cd /var/www
Current location: /var/www
32. Download ruTorrent
wget http://rutorrent.googlecode.com/files/rutorrent-3.2.tar.gz
33. Unpack ruTorrent
tar xvzf rutorrent-3.2.tar.gz
34. Go into ruTorrent folder
cd rutorrent
Current location: /var/www/rutorrent
35. Create .htaccess file
touch .htaccess
36. Chmod .htaccess file
chmod 0755 .htaccess
36. Edit .htaccess file
Add the following content to the .htaccess file:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
34. Go into ruTorrent config folder
cd conf
Current location: /var/www/rutorrent/conf
35. Edit config.php
Replace
$XMLRPCMountPoint = "/RPC2";
with
$XMLRPCMountPoint = "/rutorrent/RPC2";
36. Chown ruTorrent to Apache
sudo chown -R www-data:www-data /var/www/rutorrent
37. Enable Apache Modules
sudo a2enmod ssl auth_digest scgi rewrite
38. Extend apache2.conf
echo “SCGIMount /rutorrent/RPC2 127.0.0.1:5000″ | sudo tee -a /etc/apache2/apache2.conf
echo “servername localhost” | sudo tee -a /etc/apache2/apache2.conf
39. Go into the Apache sites enabled folder
cd /etc/apache2/sites-enabled
Current location: /etc/apache2/sites-enabled
40. Edit 000-default
Insert after
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
this:
<Directory /var/www/rutorrent/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
This makes sure that the .htaccess in the rutorrent folder is being called and hence a redirect of to https will take place.
41. Edit 000-default
Still editing the 000-default file, add at the end this:
<VirtualHost *:443>
ServerAdmin webmaster@localhost
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
<Location /rutorrent>
AuthType Digest
AuthName "rtorrent"
AuthDigestDomain /var/www/rutorrent/ http://SERVER_IP/rutorrent
AuthDigestProvider file
AuthUserFile /etc/apache2/passwords
Require valid-user
SetEnv R_ENV "/var/www/rutorrent"
</Location>
</VirtualHost>
Replace SERVER_IP with the ip of your server
42. Add yourself to authdigest
sudo htdigest -c /etc/apache2/passwords rtorrent USER
Replace USER with your desired username and after that you will be prompted to enter the password and verify it.
43. Restart Apache
sudo service apache2 restart
Debian users have to issue:
/etc/init.d/apache2 restart
44. Try it
rTorrent should already be running, if not then start it. Then enter the server and rutorrent folder in your browser:
http://SERVER_IP/rutorrent
You will be auto-redirected to the HTTPS site and you’ll get a warning about the ssl certificate. Since you created it yourself you can ignore this warning and proceed (or add it to your browser for the next time). After that you are asked to enter username and password (see step 42). If you enter them correctly, you’ll get to ruTorrent web interface.
Enjoy