Hola,
hier mal ein kleines Tutorial wie man rTorrent mit libTorrent auf Debian (Lenny/Squeeze) installiert, konfiguriert und eine Multiuser-WebUI (ruTorrent) einrichtet.
Ich bin der Meinung das der Flux und BitTornado verbannt gehören. Da die Installation dieser beiden Komponenten jedoch sehr viel einfacherer ist, wird das leider nicht passieren, und diese fehlerhaften Anwendungen werden weiterhin ihr Unwesen in der Torrentwelt treiben.
Warum also ein Wechsel auf rTorrent?
Vorteile:- ressourcenschonend auch bei starker Frequentierung
- konstant hohe Bandbreitenausnutzung im Upload und Download
- leicht zu bedienende WebUI mit vielen Erweiterungen
- vielleicht nicht 100% fehlerfrei, aber 99% tuen es auch
Nachteile:- aufwendigere Installation
- keine herkömmliche Nutzerverwaltung (Nutzer anlegen und gut) sondern ein etwas komplexerer Eingriff
Im folgenden wird rTorrent 0.8.6 mit libTorrent 0.12.6 betrachtet. Wer eine andere Version nimmt, muss die jeweiligen Versionsnummern anpassen. Da diese Version allerdings zu 95% auf allen ALTs freigegeben ist, wüßte ich nicht warum. Solltet ihr dennoch eine andere Version in Betracht ziehen, nehmt die 2er oder 5er, da die 3er und 4er verbuggt sind.
Die Packages sind für Squeeze, es kann also sein das man für Lenny eine ältere Version nehmen muss, wenn denn eine genaue Version angegeben ist.
Als Webserver nehme ich den Apache2 - der reicht für einen Root völlig aus.
btw
Da dies hier keine Einsteiger FAQ für Debian ist, verzichte ich auf die Erklärung der einzelnen Befehle. Wer einen Befehl nicht kennt, kann Tante Google fragen. Allerdings sollten auch User mit wenig Linux Erfahrung klar kommen.
So dann fangen wir mal an
Legende
Da ich schreibfaul bin, werden folgende Worte stellvertretend für eure Wunschnamen/~pfade stehen.
_USER = der gewünschte Username
_PW_SHELL = das Shellpasswort des Users
_PW_WEB = das Zugriffspasswort des Users auf die WebUI
_PATH_RT = absoluter Pfad zum rTorrent Konfig Verzeichnis
_PATH_WWW_ROOT = absoluter Pfad zum WWW Root
_PATH_RUT = absoluter Pfad zur WebUI ruTorrent welche im WWW Root liegt
_PATH_FILES = absoluter Pfad zu eurem Filecontainer (Downloads)
_PATH_LIBS = absoluter Pfad zum Speichern von externen Libraries (c-ares, xmlrpc-c, ...)
_PATH_PASSWD = absoluter Pfad zur .htpasswd Datei
_SCGI_PORT = SCGI Port des _USERs (empfohlen: fortlaufend - 5001, 5002, ...)
_RPC = Prozedur des _USERS (empfohlen: fortlaufend - /RPC1, /RPC2, ...)
In einem Codeblock ist pro Zeile eine Shellanweisung. Also nicht blindlings kopieren.
Schritt 0 - Anmeldung als Root
Wenn man nicht schon als Root angemeldet ist, dann
und eine entsprechende Passworteingabe.
Schritt 1 - Installation fehlender bzw. benötigter Packages
Was welches Package macht, kann man
hier nachlesen.
Code:
apt-get install libapache2-mod-scgi php5 php5-common curl php5-curl libcurl3 libcurl3-openssl-dev libsigc++-2.0-dev openssl subversion automake build-essential libtool libncurses5-dev dtach libpcre3-dev libssl-dev libbz2-dev libevent-dev intltool unzip unrar
Dies sollten eigentlich alle Packages sein - falls dennoch eines fehlt, wird dies beim Install angezeigt. Dann einfach ergänzen. Es kommt halt immer darauf an, wie weit man das OS schon ausgerüstet hat. Wer noch keinen Apache installiert hat, fügt einfach ein
apache2 nach
apt-get install ein.
Schritt 2 - Zertifikat
Wer keinen Bedarf hat über https auf die WebUI zuzugreifen, kann diesen Schritt auslassen. Ansonsten wird erst einmal ein Serverzertifikat erstellt, falls man noch keines hat.
Code:
mkdir /etc/apache2/ssl
openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key
Schritt 3 - Modulaktivierung
Da ein paar Änderungen in der Apache-Sites Config gemacht werden müssen, werden folgende Module aktiviert. Das
ssl kann weggelassen werden, wenn man die WebUI nicht über https erreichen möchte.
Code:
a2enmod scgi suexec actions include rewrite ssl
Schritt 4 - Installation c-ares
Nun wird
c-ares installiert, um einen möglichen Multiuserbug von ruTorrent zu vermeiden. Sind alle Packages installiert, geht der Install ohne Probleme über die Bühne. Falls nicht tauchen entsprechende Fehlermeldungen bei
./configure oder
make auf.
Code:
CD _PATH_LIBS
wget http://c-ares.haxx.se/c-ares-1.7.4.tar.gz
tar xzf c-ares-1.7.4.tar.gz
rm c-ares-1.7.4.tar.gz
chown -R root c-ares-1.7.4
CD c-ares-1.7.4
./configure
make
make install
cd
Falls noch kein _PATH_LIBS existiert vorher dies machen:
Code:
mkdir -p _PATH_LIBS
Schritt 5 - Installation xmlrpc-c
Nun wird
xmlrpc-c installiert, welches für die Kompilierung von rTorrent benötigt wird.
Code:
CD _PATH_LIBS
svn co http://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/stable xmlrpc-c
chown -R root xmlrpc-c
CD xmlrpc-c
./configure
make
make install
cd
Schritt 6 - Installation libTorrent
Nun wird
libTorrent installiert...
Code:
CD _PATH_LIBS
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz
tar xzf libtorrent-0.12.6.tar.gz
rm libtorrent-0.12.6.tar.gz
chown -R root libtorrent-0.12.6
CD libtorrent-0.12.6
./autogen.sh
./configure
make
make install
cd
Schritt 7 - Installation rTorrent
Jetzt wird der eigentliche Client
rTorrent installiert.
Code:
CD _PATH_LIBS
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz
tar xzf rtorrent-0.8.6.tar.gz
rm rtorrent-0.8.6.tar.gz
chown -R root rtorrent-0.8.6
CD rtorrent-0.8.6
Bevor jetzt kompiliert wird, muss zuerst einmal ein Sicherheitsmechanismus aus der rTorrent Source entfernt werden. Ansonsten bekommt ihr Probleme mit der SSL-Announce der diversen Tracker.
Öffnet dazu die Datei
_PATH_LIBS/rtorrent-0.8.6/src/core/curl_stack.cc und sucht folgenden Code:
Code:
if (!m_httpCaCert.empty())
curl_easy_setopt(get->handle(), CURLOPT_CAINFO, m_httpCaCert.c_str());
fügt darunter folgende Zeilen ein:
Code:
curl_easy_setopt(get->handle(), CURLOPT_SSL_VERIFYPEER, 0);
if (m_httpCaPath.empty() && m_httpCaCert.empty()) {
curl_easy_setopt(get->handle(), CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(get->handle(), CURLOPT_SSL_VERIFYHOST, 0);
}
Jetzt kann rTorrent kompiliert und installiert werden.
Code:
./autogen.sh
./configure --with-xmlrpc-c
make
make install
cd
Schritt 8 - Installation Torrent Maker
Zuletzt installieren wir gleich noch ein Torrent-Creation-Tool, in diesem Fall
buildtorrent.
Code:
CD _PATH_LIBS
wget http://claudiusmaximus.goto10.org/files/coding/buildtorrent/buildtorrent-0.8.tar.gz
tar xzf buildtorrent-0.8.tar.gz
rm buildtorrent-0.8.tar.gz
chown -R root buildtorrent-0.8
CD buildtorrent-0.8
./configure
make
make install
cd
ruTorrent unterstützt noch andere Tools, aber buildtorrent hat mich überzeugt - klein, leistungsfähig und kommt auf jedem System mit allen Dateigrößen klar.
Schritt 9 - Installation beenden
Um die ganzen Installationen zu vollenden und den Library System Cache zu erneuern, wird folgendes in die
Shell eingegeben.
Schritt 10 - rTorrent Konfig vorbereiten
Jetzt wird das Konfigverzeichnis von rTorrent angelegt und vorbereitet, da hier später die einzelnen Userkonfigs aufbewahrt werden.
Code:
mkdir -p _PATH_RT/users
In das _PATH_RT Verzeichnis könnt ihr auch gleich die
rtorrent.rc aus dem Anhang ablegen.
Der Großteil der Konfigdatei ist selbsterklärend, lediglich das Ratiohandling ist etwas gewöhnungsbedürftig. Aber auf der
rTorrent HP ist alles erklärt, also bei Unklarheiten einfach vorbeischauen.
Folgende Zeilen können jetzt schon angepasst werden:
Suche
Code:
ip = XXX.XXX.XXX.XXX
XXX.XXX.XXX.XXX mit eurer Server-IP ersetzen
Code:
bind = XXX.XXX.XXX.XXX
analog
Code:
port_range = XXXXX-YYYYY
Hier die Portrange angeben. rTorrent kommt mit wenigen Ports aus, man kann auch nur einen angeben (z.B. 50000-50000). Die Ports müssen selbstverständlich in der Firewall freigegeben werden.
Wenn man keine Range hat, dann den Wert auf
no stellen.
Der Rest kann erst einmal so gelassen werden. Die Pfade werden später bei der Erstellung eines Users angepasst. Man kann natürlich auch die anderen Einstellungen anpassen. Es ist aber auch möglich diese über ruTorrent zu ändern.
Schritt 11 - Access
Um die WebUI vor unbefugtem Zugriff zu schützen, machen wir Gebrauch von der Access-Control des Apachen. Dafür legen wir eine htpasswd Datei an, welche später mit den Zugangsdaten der(des) User(s) gefüllt werden.
Code:
mkdir -p _PATH_PASSWD
touch _PATH_PASSWD/.htpasswd
chmod 0775 _PATH_PASSWD/.htpasswd
Schritt 12 - WebUI ruTorrent
Falls noch nicht vorhanden, wird zunächst ein Verzeichnis erstellt, indem die WWW Daten liegen werden (man muss nicht zwangsläufig /var/www/ nehmen).
Code:
mkdir -p _PATH_WWW_ROOT
Schritt 12a - ruTorrent herunterladen und installieren
Nun wird
ruTorrent heruntergeladen und entpackt.
Code:
CD _PATH_WWW_ROOT
wget http://code.google.com/p/rutorrent/downloads/detail?name=rutorrent-3.2.tar.gz&can=2&q=
tar xzf rutorrent-3.2.tar.gz
rm rutorrent-3.2.tar.gz
mv rutorrent-3.2 rutorrent
cd
Anmerkung: _PATH_WWW_ROOT/rutorrent === _PATH_RUT
Schritt 12b - Plugins
Jetzt kann man sich die gewünschten
Plugins herunterladen und in ruTorrent einbinden. Was welches Plugin macht, wird
hier erklärt.
Ich selber nutze folgende Plugins:
- _getdir
- cpuload
- create
- data
- diskspace
- edit
- erasedata
- rss
- seedingtime
- source
- unpack
Um z.B. das _getdir Plugin zu installieren, wechselt man zunächst in das Plugin Verzeichnis.
Code:
CD _PATH_RUT/plugins
Nun lädt man sich das Plugin herunter und entpackt es.
Code:
wget http://code.google.com/p/rutorrent/downloads/detail?name=_getdir-3.2.tar.gz&can=2&q=
tar xzf _getdir-3.2.tar.gz
rm _getdir-3.2.tar.gz
Und das war es auch schon.
Schritt 12c - Vorbereitung Multiuser
Jetzt wird ruTorrent für den Multiuserbetrieb vorbereitet. Dafür müssen folgende Verzeichnisse angelegt werden.
Code:
mkdir _PATH_RUT/conf/users _PATH_RUT/share/users
Um später nicht mehr soviel an den Konfigdateien machen zu müssen, wird jetzt die
_PATH_RUT/conf/config.php geöffnet und folgende Zeilen angepasst:
Suche
Code:
$log_file = '/tmp/errors.log';
Ersetze mit
Falls ihr das Logging aktivieren möchtet, dann den entsprechenden Pfad zu Logdatei eintragen.
Suche
Code:
$saveUploadedTorrents = true;
Ersetze mit
Code:
$saveUploadedTorrents = false;
Suche
Code:
$pathToExternals = array(
"php" => '', // Something like /usr/bin/php. If empty, will be founded in PATH.
"curl" => '', // Something like /usr/bin/curl. If empty, will be founded in PATH.
"gzip" => '', // Something like /usr/bin/gzip. If empty, will be founded in PATH.
"id" => '', // Something like /usr/bin/id. If empty, will be founded in PATH.
"stat" => '', // Something like /usr/bin/stat. If empty, will be founded in PATH.
);
Ersetze mit
Code:
$pathToExternals = array(
"php" => '/usr/bin/php', // Something like /usr/bin/php. If empty, will be founded in PATH.
"curl" => '/usr/local/bin/curl', // Something like /usr/bin/curl. If empty, will be founded in PATH.
"gzip" => '/bin/gzip', // Something like /usr/bin/gzip. If empty, will be founded in PATH.
"id" => '/usr/bin/id', // Something like /usr/bin/id. If empty, will be founded in PATH.
"stat" => '/usr/bin/stat', // Something like /usr/bin/stat. If empty, will be founded in PATH.
);
Die Pfade können bei eurem System abweichen. Um den Pfad z.B. für PHP zu finden, einfach das in die Konsole tippen:
Die anderen Konfigdateien können so belassen werden. Über diese kann man je nach Bedarf Plugins konfigurieren und für bestimmte User freigeben/sperren (
weiterführende Infos).
Schritt 12d - Einbinden von buildtorrent
Um über die WebUI Torrents erstellen zu können, muss das Plugin
create installiert sein. Nun wird die
_PATH_RUT/plugins/create/conf.php geöffnet, und folgende Zeilen verändert:
Suche
Ersetze mit
Code:
$useExternal = 'buildtorrent';
Suche
Code:
$pathToCreatetorrent = '';
Ersetze mit
Code:
$pathToCreatetorrent = '/usr/local/bin/buildtorrent';
Suche
Code:
$pathToExternals["pgrep"] = '';
Ersetze mit
Code:
$pathToExternals["pgrep"] = '/usr/bin/pgrep';
Auch hier gilt wieder -> die Pfade können bei euch abweichen.
Schritt 12e - Unpack Plugin konfigurieren
Möchte man Archive per WebUI entpacken, muss das Plugin
unpack installiert sein. Um es nutzen zu können, müssen ein paar Zeilen in der
_PATH_RUT/plugins/unpack/conf.php geändert werden.
Suche
Code:
$pathToExternals['unzip'] = '';
Ersetze mit
Code:
$pathToExternals['unzip'] = '/usr/bin/unzip';
Suche
Code:
$pathToExternals['unrar'] = '';
Ersetze mit
Code:
$pathToExternals['unrar'] = '/usr/bin/unrar';
Schritt 12f - Andere Plugins
Die anderen erwähnten Plugins benötigen keine Änderungen der Konfigdateien.
Schritt 12g - Besitzer ändern
Alle WWW Daten sollten dem User www-data gehören. Daher kurz folgendes eingeben:
Code:
chown -R www-data:www-data _PATH_WWW_ROOT
Schritt 13 - User anlegen und zur WebUI hinzufügen
So, jetzt das eigentliche Kernstück - die Userverwaltung.
Schritt 13a - Passwörter
Wir brauchen zwei Passwörter, eins für die
Shell und eins für die WebUI. Dafür bietet sich folgende
Seite an. Erstellt ein benutzerdefiniertes mit
Sonderzeichen und mindestens 16 Zeichen.
Schritt 13b - User erstellen
Nun wird ein Systemuser erstellt, über den später der rTorrent Client läuft.
Code:
useradd -M _USER
passwd _USER
Jetzt 2x das _PW_SHELL eingeben.
Schritt 13c - Ordner erstellen
Jetzt den Ordner erstellen, indem die Downloads des Users gespeichert werden und die Rechte anpassen.
Code:
mkdir -p _PATH_FILES/_USER
chown _USER _PATH_FILES/_USER
chmod 1777 _PATH_FILES/_USER
Schritt 13d - rTorrent Konfig
Zunächst muss das Konfig Verzeichnis von rTorrent erweitert werden.
Code:
mkdir -p _PATH_RT/users/_USER/session
Nun wird die halbfertige
rtorrent.rc in das Userverzeichnis kopiert.
Code:
CP _PATH_RT/rtorrent.rc _PATH_RT/users/_USER
Jetzt die Rechte neu setzen.
Code:
chmod -R 0777 _PATH_RT
Zum Schluss noch die kopierte rtorrent.rc öffnen und Folgendes ändern:
Suche
Ersetze mit dem richtigen Pfad
Suche
Ersetze mit dem richtigen Pfad
Suche
Ersetze mit dem richtigen Usernamen
Suche
Code:
scgi_port = localhost:5000
Ersetze die 5000 mit einem eigenen _SCGI_PORT. Ihr könnt die 5000 auch behalten, allerdings brauch jeder User einen eigenen Port. Wenn ihr den ändert, empfehle ich im 5000er Bereich zu bleiben.
Schritt 13e - Anpassen des Apache
In die Datei
/etc/apache2/httpd.conf muss folgendes eingefügt werden:
Code:
SCGIMount _RPC localhost:_SCGI_PORT
Danach neu starten.
Code:
/etc/init.d/apache2 restart
Schritt 13f - ruTorrent Konfig
Auch hier muss die Verzeichnisstruktur erweitert werden.
Code:
CD _PATH_RUT
mkdir -p conf/users/_USER share/users/_USER/settings
cd
Jetzt folgende Konfigdateien in den Konfigordner des Users kopieren:
Code:
CD _PATH_RUT/conf
CP access.ini config.php plugins.ini users/_USER
cd
Nun muss die
_PATH_RUT/conf/users/_USER/config.php noch leicht angepasst werden.
Suche
Code:
$topDirectory = '/';
Ersetze mit
Code:
$topDirectory = '_PATH_FILES/_USER/';
Suche
Ersetze mit
Code:
$scgi_port = _SCGI_PORT;
Suche
Code:
$XMLRPCMountPoint = "/RPC0";
Ersetze mit
Code:
$XMLRPCMountPoint = "_RPC";
Jetzt die Rechte erneuern.
Code:
chown -R www-data:www-data _PATH_WWW_ROOT
Zum Schluss noch einen Softlink zum Downloadverzeichnis setzen, damit ruTorrent und rTorrent wissen wohin.
Code:
ln -s _PATH_FILES/_USER _PATH_RUT/share/users/_USER/torrents
Schritt 13g - .htpasswd erweitern
Damit sich der User auch in die WebUI einloggen kann, muss die .htpasswd Datei erweitert werden.
Code:
htpasswd -bm _PATH_PASSWD/.htpasswd _USER _PW_WEB
Falls es zu einem Break kommt, liegt es an einem Zeichen im Passwort. In dem Fall schauen, ob ein ', ", /, % oder $ vorkommt und ersetzen. Wenn das nicht hilft die anderen Sonderzeichen/Umlaute durchgehen.
Schritt 14 - Endkonfiguration des Apachen
Um die WebUI vor unbefugtem Zugriff zu schützen, muss der Apache angepasst werden. Im Anhang liegt eine
default welche in
/etc/apache2/sites-available gehört. Läuft bei euch bereits ein Apache, dann müssen nur die entsprechenden
Directory/
Location Einträge ergänzt werden.
Kurz etwas zu der
default
Ich verzichte gänzlich auf einen http Zugriff und leite diesen immer weiter. Das wichtige steht also in der SSL Sektion. Da müssen nur noch die entsprechenden Pfade angepasst werden. Ist dies geschehen, einmal den Apache restarten.
Code:
/etc/init.d/apache2 restart
Hat alles geklappt, sollte beim Aufruf von
h**ps://_SERVER_IP/ nach einer Authentifizierung gefragt werden. Falls nicht, schaut in der Apache Error Log nach.
Schritt 15 - rTorrent starten und überwachen
Um rTorrent einfach zu starten und zu überwachen hier einmal 2 Skripte.
Schritt 15a - Init
Im Anhang liegt ein
rtorrent Init-Skript, mit dem ein rTorrent Prozess für einen User gestartet werden kann.
Start
Code:
/etc/init.d/rtorrent start _USER
Stop
Code:
/etc/init.d/rtorrent stop _USER
Es müssen lediglich _PATH_RT und _PATH_LOG ersetzt werden.
Falls folgende Binary Pfade falsch sind, müssen die korrigiert werden: /usr/local/bin/rtorrent und /usr/bin/dtach
Überprüft werden kann dies mit:
Code:
which rtorrent
which dtach
Das Init-Skript braucht chmod 755.
Code:
chmod 0775 /etc/init.d/rtorrent
Schritt 15b - Teststart
Um zu schaun, ob rTorrent auch wirklich startet, einfach mal
Code:
/etc/init.d/rtorrent start _USER
eingeben.
Wenn ja, dann sollte dies erscheinen: "Starting daemon-ized dtach session for: rtorrent."
Um zu kontrollieren ob auch wirklich ein Prozess läuft, folgendes eingeben:
Code:
ps aux | grep _USER | grep rtorrent
Es sollten zwei Prozesse ausgegeben werden (ein dtach und ein rtorrent).
Ist dem widererwarten nicht so, sind irgendwelche Rechte falsch gesetzt, ein Pfad ist falsch oder es fehlt eine Datei.
Um den Fehler genauer zu lokalisieren folgendes eingeben:
Code:
/usr/local/bin/rtorrent -n -o import=_PATH_RT/users/_USER/rtorrent.rc
Danach kommt dann eine entsprechende Fehlermeldung (kann rtorrent nicht finden / kann Config nicht finden / kann nicht auf Config zugreifen / und und und), welche man beseitigen kann.
Schritt 15c - Überwachung
rTorrent schmiert sehr sehr selten ab, wenn dies aber passiert, ist es ganz gut, wenn es automatisch neu gestartet wird. Dafür liegt das Cron Skript
.cron_rt im Anhang.
Im Skript selber muss nur _USER ersetzt werden. Wenn weitere User hinzukommen, werden diese mit Leerzeichen voneinander getrennt eingefügt.
Wo das Skript liegt ist egal, hauptsache die Rechte stimmen.
Code:
chmod 0775 _PATH_TO/.cron_rt
Um den cron zu erweitern, wird folgendes eingegeben:
Dann diese Zeile einfügen
Code:
*/1 * * * * TERM=xterm _PATH_TO/.cron_rt >/dev/null 2>&1
und speichern.
Weitere User
Um User zu ergänzen muss einfach Schritt 13 wiederholt werden und der Username in das .cron_rt Skript eingefügt werden. Der rTorrent Prozess wird durch den cron automatisch gestartet.
ENDE
So, das sollte es gewesen sein. Ich hoffe mal ich habe nichts vergessen. Wer Probleme hat und Fehlermeldungen bekommt, sollte sich diese einfach mal anschaun. In den meißten Fällen sind es mangelnde Rechte. Und bei wem es absolut nicht klappen will, der kann sich hier in dem Thread melden. Vielleicht hat sich ja doch ein Fehler meinerseits eingeschlichen, trotz mehrmaliger Kontrolle.
*hf*