söndag 30 september 2012

ruTorrent i Ubuntu server

Uppdatering: Jag rekommenderar att du installerar rTorrent tillsammans med c-ares för att det inte ska frysa när många torrentar körs. För instruktioner om c-ares se mitt nya inlägg.

ruTorrent är en webbaserad frontend till rtorrent. Tanken är att den ska vara extremt lik uTorrent. ruTorrent är huvudsakligen skriven i php och kommunicerar med rtorrent genom xmlrpc-c.

Jag har installerat ruTorrent tillsammans med lighttpd, vilket är något ovanligare än Apache.

Vi börjar med att installera lighttpd och php
sudo apt-get install lighttpd php5 php5-common php5-cli php5-cgi php5-curl
Då de flesta distributioner inte kompilerar in rpc-stöd i rTorrent blir nästa steg att ladda hem och kompilera libtorrent samt rtorrent.

Vi börjar med att installera nödvändiga paket.

sudo apt-get g++ install automake make libcppunit-dev libcurl4-nss-dev libncurses5-dev libsigc++-2.0-dev libtool libxmlrpc-c3-dev pkg-config

Dags för att kompilera och installera libtorrent.
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.13.2.tar.gz
tar zxf libtorrent-0.13.2.tar.gz
cd libtorrent-0.13.2
./autogen.sh
./configure
make
sudo make install

Vi fortsätter mer att installera rTorrent.
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.9.2.tar.gz
tar zxf rtorrent-0.9.2.tar.gz
cd rtorrent-0.9.2
./autogen.sh
./configure --with-xmlrpc-c
make
sudo make install

Nu behöver vi konfigurera lighttpd att använda php, lägg till följande i /etc/lighttpd/lighttpd.conf

fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket",
"max-procs" => 2,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "16",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
)))


Vi fortsätter med att lägga in rpc-stödet som krävs för att ruTorrent ska kunna kommunicera med rtorrent.
server.modules += ( "mod_scgi")

scgi.server = (
"/RPC2" =>
( "127.0.0.1" =>
(
"socket" => "/tmp/rpc.socket",
"check-local" => "disable",
"disable-time" => 0, # don't disable scgi if connection fails
)
)
)

Nu har vi kommit till att lägga ruTorrent på plats.
wget http://rutorrent.googlecode.com/files/rutorrent-3.4.tar.gz
tar zxf rutorrent-3.4.tar.gz
wget http://rutorrent.googlecode.com/files/plugins-3.4.tar.gz
tar zxf plugins-3.4.tar.gz
mv plugins rutorrent/
Dags att flytta in ruTorrent till webservern.
sudo mv rutorrent /var/www/
sudo chown -r www-data:www-data /var/www/rutorrent

ruTorrent behöver konfigureras, konfigurationsfilen finns här:
/var/www/rutorrent/conf/config.php
Ställ följande parametrar:
$scgi_port = 0;
$scgi_host = "unix:///tmp/rpc.socket";
$XMLRPCMountPoint = "/RPC2";
Om du kommer ha din download-mapp någon annanstans än på din huvudpartition (sda1) behöver du ändra $topDirectory till att peka på rätt mapp.

Skapa filstruktur för rtorrent, förslagsvis i din hemmapp
cd
mkdir rtorrent
cd rtorrent
mkdir download
mkdir watch
mkdir .session

Konfiguration av rTorrent:
cd
wget https://rtgui.googlecode.com/files/.rtorrent.rc
nano .rtorrent.rc

Parametrar som behöver ändras är:
encoding_list = UTF-8
scgi_local = /tmp/rpc.socket
schedule = chmod,0,0,"execute=chmod,777,/tmp/rpc.socket"
directory = ~/rtorrent/download

De flesta övriga inställningar går att konfigurera från ruTorrent, men det som sätts i .rtorrent.rc kommer användas som default.

Om ruTorrent ska vara öppet utifrån behöver den adressen säkras upp. Detta kan göras på följande sätt:
sudo apt-get install apache2-utils
sudo htdigest -c /etc/lighttpd/.auth "Authorized users only" mittUserName

Lägg sedan till följande i /etc/lighttpd/lighttpd.conf
server.modules += ( "mod_auth" )
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.auth"
auth.debug = 2
auth.require = ( "/rutorrent/" => ( "method" => "digest", "realm" => "Authorized users only", "require" => "valid-user" ) )

Dags att ladda om lighttpd
sudo service lighttpd force-reload

Har allt gått vägen ska du nu kunna nå ruTorrent med användarnamn och lösenord på http://mitthostname/rutorrent

Källa:
http://filesharefreak.com/2010/02/13/how-to-install-rtorrent-rutorrent-using-socket-ssl-authentication-on-ubuntu-or-debian