NetVision-Technik

NetVision-Technik (http://www.netvision-technik.de/forum/index.php)
-   Webanwendungen (http://www.netvision-technik.de/forum/forumdisplay.php?f=13)
-   -   [Tutorial] rTorrent mit WebUI unter Debian (http://www.netvision-technik.de/forum/showthread.php?t=6281)

bl0bb 25.04.2011 18:10

[Tutorial] rTorrent mit WebUI unter Debian
 
Liste der Anh?nge anzeigen (Anzahl: 1)
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
Code:

su root
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.
Code:

ldconfig
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.

Code:

port_random = yes
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
Code:

$log_file = '';
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:
Code:

which php
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
Code:

$useExternal = '';
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
Code:

_PATH_RT
Ersetze mit dem richtigen Pfad

Suche
Code:

_PATH_RUT
Ersetze mit dem richtigen Pfad

Suche
Code:

_USER
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
Code:

$scgi_port = 5000;
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:
Code:

crontab -e
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*

Thunder™ 16.09.2011 23:06

Nette Anleitung aber irgendwie haut das bei mir nicht so ganz hin...:wacko:

Ab Punkt 6 fängt er an zu spinnen das er kein make && make install nimmt und so weiter...

SP4C3 17.09.2011 11:03

Was heißt "nicht nimmt".
Das ist ungefähr so präzise wie "funktioniert nicht".
Ohne genau Fehlermeldung muss hier jeder in seine beschlagene Glaskugel gucken.

Meine zeigt mir dann so sachen wie:
-make nicht installiert
-./configure schiefgelaufen
-problem zwischen stuhllehne und bildschirm bzw. layer 8 fehler

bl0bb 17.09.2011 15:24

Jup, er gibt ja entsprechende Fehlermeldungen aus, z.B. "ich finde das nicht", "das und das ist nicht installiert" usw.
Also einfach mal die Ausgabe durchlesen ;)

Thunder™ 18.09.2011 02:25

hab mein Server gestern Platt gemacht und neu aufgesetzt, jetzt funktioniert es auch :cool:

ike 25.09.2011 11:23

hxxp://c-ares.haxx.se/c-ares-1.7.4.tar.gz gibts nicht mehr.

bl0bb 25.09.2011 14:26

Na dann einfach mal auf die Website gehen und den Link suchen ;)

c-ares: downloads

ike 25.09.2011 14:36

Ach ja, jetzt wo dus sagst hätte ich auch drauf kommen können :rolleyes:

Peinlich peinlich... :o

Fluegelstuermer 14.10.2011 20:52

So Leute. Zum ersten Mal habe ich rtorrent eingerichtet. Ich bin absoluter Neuling. Also BITTE nehmt ein wenig Rücksicht ;)

Habe folgende Fehlermeldung:
Bad response from server: (500 [error,getplugins]) Bad response from server: (500 [error,getuisettings

Ich nutze Multiple User (wenn es damit was zu tuen haben sollte). KANN es damit was zu tuen habe, das mein Anmeldename nicht dem Namen im Ordnerverzeichnis entspricht?
Habe es aber eigentlich mit Punkt 13b erklärt, das der Userloging zu dem Ordnerverzeichnis gehört. Oder ist das ein Problem?

Kann da BITTE sich jemand mir erbarmen? DANKE

bl0bb 14.10.2011 21:55

Der Anmeldename muss dem Ordernamen entsprechen, denn über die Auth wird ruTorrent gesagt, wo er suchen soll. Oder denkst du ich habe das zum Spaß so geschrieben ;)

Fluegelstuermer 14.10.2011 22:26

Verdammt dann habe ich wohl was überlesen.
Habe aber auch gelesen, das man keine Adminnamen löschen soll.
Wie kann ich das ändern? Sorry das ich so Noob Fragen stelle.

Danke

bl0bb 14.10.2011 23:12

Wo hab ich denn was mit Adminnamen geschrieben? Ich weiß jetzt nicht genau was du meinst.

Fluegelstuermer 14.10.2011 23:41

Ok. Vertue ich mich da?
Aber könnte ich den Nick einfach löschen ohne Probs?

Nebenbei..könnte es sein, das Dir hier ein Fehler passiert ist?
Code:

mkdir -p conf/users/_USER share/users/_USER/settings
Nebenbei! Danke für die Anleitung!!! So ich habe einen neuen User eingestellt, der mit dem Verzeichnis überinstimmt. Trotzdem der gleiche Fehler :( Im moment weiß ich nicht mehr weiter :(

bl0bb 15.10.2011 09:04

Natürlich kannst du User ohne Probleme löschen - einfach die "Erstellung" umdrehen und alle userspezifischen Ordner/Files/Benutzer entfernen.

Und nein, da ist mir kein Fehler passiert.

Achte einfach darauf das alle Rechte gesetzt sind und alle nötigen Dateien existieren. Dann läuft das ohne Probleme. Du scheinst jedenfalls eine Config vergessen zu haben, oder die Config ist nicht korrekt.

Fluegelstuermer 15.10.2011 10:36

Verdammt ich finde nichts auffälliges.Sitze schon seit 3 Stunden dran..

bl0bb 15.10.2011 10:36

dann fang halt nochmal von vorne an, bzw gehe die Schritte nochmal alle durch

Fluegelstuermer 15.10.2011 10:46

So habe einen Fehler gefunden. Mir fehlt das Plugin getdir 3.2 Der Link funzt nicht und habe das übersehen wget http://code.google.com/p/rutorrent/d...ar.gz&can=2&q= Leider hat dies zu meiner Lösung des Problems nicht geholfen.. Dieser Code ist mir unklar mkdir _PATH_RUT/conf/users _PATH_RUT/share/users Soll der Ordner so aussehen? _path_rut/conf/users/share/users??? oder _path_rut/conf/users _path_rut_share/users

bl0bb 15.10.2011 14:07

Der Befehl legt 2 Ordner an, einmal conf/users/... und dann noch share/users/.../settings. Ein Blick in die man von mkdir hätte dir Klarheit verschafft ;)

Code:

Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.


Zero111 15.10.2011 18:59

hab das Tut grad mal getestet und mich genau dran gehalten.

konnte das Teil zwar starten was diese Meldung die ausgabe von ps aux | grep _USER | grep rtorrent zeigt:

Code:

_USER  3761  0.0  0.0  2032  616 ?        Ss  19:16  0:00 /usr/bin/dtach -n /home/rtorrent/users/_USER/rtorrent.dtach /usr/local/bin/rtorrent -n -o import=/home/rtorrent/users/_USER/rtorrent.rc
_USER  3762  0.0  0.2  11320  4636 pts/1    Ss+  19:16  0:00 /usr/local/bin/rtorrent -n -o import=/home/rtorrent/users/_USER/rtorrent.rc

In der GUI bekomm ich jedoch folgende Meldung:
Code:

[15.10.2011 19:55:25] WebUI started.
[15.10.2011 19:55:25] Bad response from server: (500 [error,getplugins])

ich hoffe es weiß jemand Rat.. Bin in Sachen rtorrent unwissend und will das teil mal testen

bl0bb 15.10.2011 19:13

Die Plugins die ich aufgezählt habe, müssen auch installiert werden, da es untereinander Abhängigkeiten gibt. Wer das nicht möchte, der muss sich da halt mal etwas einlesen auf der ruTorrent Homepage.

Wird alles so gemacht wie beschrieben, dann klappt das auch auf Anhieb ;)

Zero111 15.10.2011 19:25

hab ich gemacht

hab sogar das komplett Packet runtergeladen ( http://rutorrent.googlecode.com/file...ent-3.2.tar.gz )
und hab das ganze im plugin ordner entpackt.

Müssen diese Plugins nicht irgendwo ein einer conf eingetragen werden damit die Gui weiß was se laden muss? oder wird einfach das komplette verzeichnis plugins gescannt

bl0bb 15.10.2011 19:54

Solange die Plugins im Pluginverzeichnis von ruTorrent sind, muss man nichts angeben. ruTorrent findet die dann alleine. Es scheint einfach so, als ob euch entweder die config.php im rutorrent/config/users/_USER fehlt oder ruTorrent einfach nicht auf die Datei zugreifen kann. Aber das ist nur wilde Spekulation meinerseits. Ohne mehr Infos kann ich da eh nichts machen. Geht das Tutorial von Anfang bis Ende sorgfältig durch. Irgendwo habt ihr was vergessen oder nicht korrekt gemacht.

Zero111 15.10.2011 20:32

es liegt wohl an der WebGui

hab mir mal die errorlog angeschaut und mehrere Fatal Error gefunden die von den Plugins ausgehen. Nach entfernen der besagten Plugins ist die GUI gestartet.

Auszug aus der Log

Code:

[Sat Oct 15 21:00:46 2011] [error] [client XXX] PHP Fatal error:  Call to undefined function makeDirectory() in /home/webroot/rutorrent/rutorrent/plugins/rss/init.php on line 5, referer: https://rutorrent.de/rutorrent/
[Sat Oct 15 21:06:15 2011] [error] [client XXX] PHP Fatal error:  Call to undefined function makeDirectory() in /home/webroot/rutorrent/rutorrent/plugins/trafic/init.php on line 6, referer: https://rutorrent.de/rutorrent/
[Sat Oct 15 21:09:23 2011] [error] [client XXX] PHP Fatal error:  Call to undefined method rTorrentSettings::getOnHashdoneCommand() in /home/webroot/rutorrent/rutorrent/plugins/seedingtime/init.php on line 9, referer: https://rutorrent.de/rutorrent/
[Sat Oct 15 21:10:18 2011] [error] [client XXX] PHP Fatal error:  Call to undefined function makeDirectory() in /home/webroot/rutorrent/rutorrent/plugins/httprpc/rpccache.php on line 41, referer: https://rutorrent.de/rutorrent/

Jedoch bekomm ich jetzt überall JS Error

Code:

[15.10.2011 21:26:25] WebUI started.
[15.10.2011 21:26:25] JS error: [https://XXX/rutorrent/ : 4323] $.support is undefined
[15.10.2011 21:26:29] JS error: [https://XXX/rutorrent/ : 1320] this.isTorrentCommandEnabled is not a function
[15.10.2011 21:27:17] torrent was successfully passed to rTorrent.
[15.10.2011 21:27:26] JS error: [https://XXX/rutorrent/ : 1320] this.isTorrentCommandEnabled is not a function

scheint als ob die GUI total verbugt ist :D

Update:
anscheinend sind die Plugins alle für die GUI V3.3 ausgelegt. In diesen TUT wird jedoch die V3.2 verwendet
Nach drüberkopieren der GUI V3.3 läuft alles ohne Probleme. Auch die Plugins die oben einen Fehler verursachten laufen jetzt

Fluegelstuermer 15.10.2011 22:24

Ich habe jetzt das Problem, das rtorrent nicht starten will. "bad link to rtorrent.Check if it really running.Check ?scgi_port and scgi_host settings in confic php and scgi port in rtorrent configuration File." 4 Std an diesem Fehler mit jemand getestet der sich damit auskennt. Aber nicht gefunden. Google bringt mir auch nicht die gewünschten Ergebnisse. BITTE habt erbarmen :( Jemand eine Idee?

Zero111 15.10.2011 23:07

ist der port in der httpd.conf auch gesetzt?

Fluegelstuermer 15.10.2011 23:49

Zitat:

Zitat von Zero111 (Beitrag 72076)
ist der port in der httpd.conf auch gesetzt?

SCGIMount RPC1 127.0.0.1:5005 So siehts bei mir aus.. RPC1 und 5005 stimmt mit den anderen Einträgen überein

Zero111 16.10.2011 00:12

der eintrage sollte so aussehen

SCGIMount /RPC1 localhost:5874

mit einen / vor dem RPC

Fluegelstuermer 16.10.2011 00:36

Hat nichts gebracht, aber laut Anleitung ist da kein "/" Beim restart vom Apache bekomme ich die Meldung: "NameVirtualHost *:80 has no VirtualHosts"

Zero111 16.10.2011 00:39

startet der client eigentlich?

Fluegelstuermer 16.10.2011 00:57

Hoffe du kannst mir irgendwie helfen....ich kann nicht mehr...seit 4 Tagen sitze ich daran .... Ja rutorrent startet...und darin bekomme ich die oben beschriebene fehlermeldung mit dem port und rtorrent

Zero111 16.10.2011 01:00

wenn du lust und zeit hast können wir uns morgen mal zusammensetzen und mal drüber schauen..

Fluegelstuermer 16.10.2011 01:08

Wäre super....ich bin am Ende und brauche dringend schlaf... Mit https kann es nix zu tuen haben, oder?

Zero111 16.10.2011 01:45

eigentlich nicht

Fluegelstuermer 16.10.2011 08:55

Guten Morgen...so mehr als 10 Stunden mit de Problem befasst, weiter gehts :( Hier vielleicht ein Fehler zu entdecken? $scgi_port = 5005; $scgi_host = "127.0.0.1"; Path: /var/www/rutorrent/conf/users/xxxxxxxxx.config.php

Code:

# Maximum and minimum number of peers to connect to per torrent.
min_peers = 5
max_peers = 20

# Same as above but for seeding completed torrents (-1 = same as downloading)
min_peers_seed = 5
max_peers_seed = 20

# Maximum number of simultanious uploads per torrent.
max_uploads = 5

# Global upload and download rate in KiB. "0" for unlimited.
upload_rate = 50000
download_rate = 50000

# Default directory to save the downloaded torrents.
directory = /var/www/rutorrent/share/users/MEINNAME/torrents

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /root/_PATH_LIBS/rtorrent-0.8.6/users/MEINNAME/session

# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=/var/www/rutorrent/share/users/MEINNAME/torrents/*.torrent
schedule = untied_directory,5,5,close_untied=/var/www/rutorrent/share/users/MEINNAME/torrents/*.torrent
schedule = tied_directory,5,5,start_tied=/var/www/rutorrent/share/users/MEINNAME/torrents/*.torrent
#on_finished = move_complete,"execute=mv,-u,$d.get_base_path=/var/www/rutorrent/share/users/MEINNAME/torrents/ ;d.set_directory=/var/www/rutorrent/share/users/MEINNAME/torrents/"
on_start    = link1,"create_link=tied,,.started"
on_stop    = link1,"delete_link=tied,,.started"
on_finished = link1,"create_link=tied,,.finished"
on_erase    = link1,"delete_link=tied,,.finished"

# SCGI
scgi_port = localhost:5005
umask = 000

# Close torrents when diskspace is low.
schedule = low_diskspace,5,60,close_low_diskspace=100M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"
schedule = ratio,30,30,"stop_on_ratio=500"

# The ip address reported to the tracker.
ip = (habe ich meine Server IP eingefügt)
   
# The ip address the listening socket and outgoing connections is
# bound to.
bind = XXX.XXX.XXX.XXX

# Port range to use for listening.
port_range = 50001-50001

# 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 = yes

# Set whetever the client should try to connect to UDP trackers.
use_udp_trackers = no

# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=XXX.XXX.XXX.XXX
#schedule = bind_tick,0,1800,bind=XXX.XXX.XXX.XXX

# 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
encryption = allow_incoming,try_outgoing,enable_retry


# 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 = 49300

# Enable peer exchange (for torrents not marked private)
peer_exchange = yes

#
# 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

#http_capath=/etc/ssl/certs

_PATH_LIBS ist wirklich ein Verzeichnnis bei mir...nicht wundern...
Ist da ein fehler zu sehen?

Zero111 16.10.2011 11:25

Das erste was mir auffällt ist

bind = XXX.XXX.XXX.XXX

da muss deine serverip stehen

Fluegelstuermer 16.10.2011 11:53

Kann mir jemand sagen, wie ich alles deinstallieren kann?
Welche Ordner gelöscht werden müssten damit ich alles nochmal von neu machen kann?



Zero111 16.10.2011 17:40

Ich möchte noch was annmerken

Der Link zu c-ares ist ein deadlink..
Im schritt 8 fehlt das ./configure vor dem make
der wget link zu rutorrent und _getdir sind ungültig (das sind html files auf die wget zugreift)
umbennen des rutorrent verzeichnis nach den entpacken ist nicht nötig da das verzeichnis bereits den namen rutorrent trägt

Darüberhinaus ist mir aufgefallen dass es probleme gibt wenn _USER großbuchstaben enthält. also kleinbuchstaben nehmen

Und wie ich oben bereits erwähnte sollten die Links zu rutorrent alle auf die neue V3.3 angepasst werden

Anleitung kann man sonst 1:1 auf Ubuntu 10.4 x86/x64 (mit installierter lib32) anwenden

Fluegelstuermer 17.10.2011 15:58

Habe folgendes Problem mit Schritt 15. /ect/init.d/rtorrent

Code:

[/# the full path to the filename where you store your rtorrent configuration
config="/home/${user}/_PATH_LIBS/rtorrent-0.8.6/_PATH_RT/users/${user}/rtorrent.rc"

Soll der link jetzt zur config.php führen, oder zur rtorrent.rc?
zwischen "home" und "_PATH_LIBS" ist dieser User befehl...muss der weg?
und was ist mit dem "userstring"?
Also nach meinem home=root verzeichnis kommt keine Userabfrage...wie soll ich den Link jetzt editieren?

bl0bb 17.10.2011 20:25

In der angehängten rtorrent Datei steht das:
config="_PATH_RT/users/${user}/rtorrent.rc"

Da muss nur _PATH_RT ersetzt werden, also der Pfad zum rTorrent Verzeichnis, wo die Verzeichnisse der einzelnen User und deren rtorrent.rc Dateien liegen.
Wo das bei dir ist, und wie du auf dieses Konstrukt in deinem Beitrag kommst, vermag ich nicht zu sagen. Und ${user} ist eine Variable, da im Aufruf neben der Aktion auch der Username enthalten sein muss. Das sollte also nicht entfernt werden... Zudem steht das alles im Schritt 15a - einfach mal genau lesen.


@Zero111
Zitat:

Der Link zu c-ares ist ein deadlink.. & der wget link zu rutorrent und _getdir sind ungültig
Links ändern sich mit der Zeit. Ich denke jeder sollte es alleine schaffen, veraltete Links gegen neue zu ersetzen ;)

Zitat:

Im schritt 8 fehlt das ./configure vor dem make
Fehlt... da unnötig.

Zitat:

umbennen des rutorrent verzeichnis nach den entpacken ist nicht nötig da das verzeichnis bereits den namen rutorrent trägt
Mag sein, habe ich nie wirklich drauf geachtet, da ich mir eher selten die Ordnerstruktur anschaue.

Zitat:

Darüberhinaus ist mir aufgefallen dass es probleme gibt wenn _USER großbuchstaben enthält
Stimmt. Ist mir bis jetzt noch nie aufgefallen, da ich nie Großbuchstaben im Namen nutze. Scheint wohl ein Bug im ruTorrent zu sein.

Fluegelstuermer 18.10.2011 12:16

Ok.Danke. Bekomme beim Start der rtorrent (/etc/init.d/rtorrent) folgende fehlermeldung:
Could not read resource file: ~/.rtorrent.rc

So sieht meine rtorrent.rc (/root/_PATH_LIBS/rtorrent-0.8.6/users/obrauer) aus
Code:

# Maximum and minimum number of peers to connect to per torrent.
min_peers = 5
max_peers = 20

# Same as above but for seeding completed torrents (-1 = same as downloading)
min_peers_seed = 5
max_peers_seed = 20

# Maximum number of simultanious uploads per torrent.
max_uploads = 5

# Global upload and download rate in KiB. "0" for unlimited.
upload_rate = 50000
download_rate = 50000

# Default directory to save the downloaded torrents.
directory = /var/www/rutorrent/share/users/obrau/torrents

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /root/_PATH_LIBS/rtorrent-0.8.6/users/obrau/session

# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=/var/www/rutorrent/share/users//obrau/torrents/*.torrent
schedule = untied_directory,5,5,close_untied=/var/www/rutorrent/share/users/obrau/torrents/*.torrent
schedule = tied_directory,5,5,start_tied=/var/www/rutorrent/share/users/obrau/torrents/*.torrent
#on_finished = move_complete,"execute=mv,-u,$d.get_base_path=/var/www/rutorrent/share/users/obrau/torrents/ ;d.set_directory=/var/www/rutorrent/share/users/obrau/torrents/"
on_start    = link1,"create_link=tied,,.started"
on_stop    = link1,"delete_link=tied,,.started"
on_finished = link1,"create_link=tied,,.finished"
on_erase    = link1,"delete_link=tied,,.finished"

# SCGI
scgi_port = xxx.xxx.xxx.xxx:5005
umask = 000

# Close torrents when diskspace is low.
schedule = low_diskspace,5,60,close_low_diskspace=100M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"
schedule = ratio,30,30,"stop_on_ratio=500"

# The ip address reported to the tracker.
ip = xxx.xxx.xxx.xxx
   
# The ip address the listening socket and outgoing connections is
# bound to.
bind = xxx.xxx.xxx.xxx.

# Port range to use for listening.
port_range = 50001-50001

# 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 = yes

# Set whetever the client should try to connect to UDP trackers.
use_udp_trackers = no

# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=XXX.XXX.XXX.XXX
#schedule = bind_tick,0,1800,bind=XXX.XXX.XXX.XXX

# 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
encryption = allow_incoming,try_outgoing,enable_retry


# 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 = 49300

# Enable peer exchange (for torrents not marked private)
peer_exchange = yes

#
# 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

#http_capath=/etc/ssl/certs

_PATH_LIBS= dieses Verzeichnis habe ich wirklich erstellt!!!!!
xxx.xxx.xxx.xxx=habe ich durch meine server IP ersetzt.

Kann da jemand einen Fehler finden? Warum kann er die rtorrent.rc nicht starten?
Hier ein Screenpic:
Free Storage for your Image Files | Upload Your Image Files | Free Tool for Image files
http://www.pichost.co.za/v/d6L5c


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.

Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.