Ubuntu 10.10 LAN Torrent Seedbox With Avalanche-rt, Lighttpd, Rtorrent, Vsftpd And Samba
This tutorial is based on a LAN setup, but it should also be applicable for an Internet seedbox (e.g. on a vps or rootds), but some additional steps may need to be performed (firewall, securing rpc-mount, generally hardening of the server).
The best lightweight software combination for a seedbox is lighttpd with rtorrent/libtorrent and a nifty web interface. So we use avalanche-rt, an actively developed project which looks very promising.
System
First step is to install the distribution of your choice on your box. Use a minimal installation if possible. The rest of the steps are Ubuntu specific.
At the end of the installation choose the ssh-server as additional service which should be installed.
After the reboot, first thing we need to do, is to connect to the Internet (if not already).
If you, like me, use a laptop as your server, you may want or need to use a wireless connection to connect to the Internet. You can do this without a graphical interface with the neat tool wicd-curses, an ncurses frontend for wicd.
Get it with (obviously you need to be connected to the Internet to perform this step, so in most cases you need a wired connection for at least this step):
sudo apt-get install wicd-ncurses
Afterwards, you may have to manually start the wicd-daemon:
sudo /etc/init.d/wicd start
Then you should be able to use wicd-curses and connect to your wireless network. If you are connected, perform a system update:
sudo apt-get update && sudo apt-get upgrade
Next, we install some software which makes live a bit more easy:
sudo apt-get install htop mc pydf
htop lets you check you system, mc comes in kind handy when handling a lot of files and pydf gives you nice overview over the space left on your harddrive.
Let’s set up the seedbox:
Webserver
First step is to install lighttpd and php:
sudo apt-get install lighttpd php5-cgi php5-curl
Then we create a file to test if php is working:
sudo nano /var/www/phpinfo.php
Fill it with:
<?php phpinfo(); ?>
If you now go to
<yourip>/phpinfo.php
you will just see a 403 (Forbidden) error
So we have to set up php to work with lighttpd:
sudo nano /etc/php5/cgi/php.ini
Search (strg + w)) for
cgi.fix_pathinfo
and uncomment the line. Save and exit (strg + x).
Next, we configure lighttpd to use php5. Open lighttpd.conf...
sudo nano /etc/lighttpd/lighttpd.conf
and add to the
server.modules
section (right at the beginning of the file)
"mod_fastcgi"
and at the end of the file the following:
fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php5-cgi", "socket" => "/tmp/php.socket" )))
Then restart lighttpd:
sudo /etc/init.d/lighttpd restart
If we now go to
<yourip>/phpinfo.php
you should see some information about php.
rTorrent
Now we install more rtorrent and other needed software:
sudo apt-get install screen libtorrent11 rtorrent
Get the default-config for rtorrent (we're in our home-directory now):
wget "http://libtorrent.rakshasa.no/export/1135/trunk/rtorrent/doc/rtorrent.rc"
and move it to the right location:
mv rtorrent.rc .rtorrent.rc
Create needed folders:
mkdir downloads
mkdir .session
mkdir torrents-watch
mkdir torrent-files
Next, edit .rtorrent.rc:
nano .rtorrent.rc
Look for
directory =
and uncomment it and change it to your needs (in our case: directory = /home/downloads/).
Next, search for
session
and uncomment it and change it to your needs (in our case: session = /home/.session/).
Go to the end of .rtorrent.rc an insert the following:
#SCGI Server scgi_port = 127.0.0.1:5001
Save & exit nano (strg + x).
Now we can start rtorrent and check if scgi support is enabled:
rtorrent
You should see something like
"XMPLRPC initialized with 519 functions."
Next step is to enable RPC with lighttpd:
sudo nano /etc/lighttpd/lighttpd.conf
Add to the
server.modules
section the following:
"mod_scgi"
and at the end of the file the following:
#SCGI Server scgi.server = ( "/RPC2" => ( "127.0.0.1" => ( "host" => "127.0.0.1", "port" => 5001, "check-local" => "disable" ) ) )
and reload lighttpd:
sudo /etc/init.d/lighttpd restart
Because this is a LAN setup, we do not protect the RPC-mount with a username / password combination. You will find it on almost every other tutorial out there and you really should protect the RPC-mount-directory with a strong password if you intend to use your seedbox on a server exposed to the Internet. But in our case it is not necessary and just an additional point of failure.
So we now have rtorrent with xmlrpc enabled, and lighttpd with xmlrpc enabled. Now we need the avalanche-rt web interface.