Projekt Homeserver: Torrent Client mit Web Interface und Email-/Jabber-Benachrichtigung
von sl[A]cker am Sep.21, 2009, unter How-To, Linux, Software
Zuletzt bearbeitet am 16. Januar 2010 um 23:20
![]()
ACHTUNG! Diese Anleitung bezieht sich auf Deluge-Versionen <= 1.1.9. Neuere Versionen unterstützen einige der genannten Möglichkeiten nicht. So sind z.B. die genannten Plugins bisher noch nicht kompatibel zu Versionen >= 1.2.0. Weiterhin gibt es für V1.2.0 Änderungen bzgl. des Init-Scripts.
Da ich nun die Installation und Konfiguration eines Torrent-Clients auf meinem Homeserver abgeschlossen habe dachte ich mir, ich teile meine Erfahrungen an dieser Stelle mit der Welt … oder den zwei Leuten, die mein Blog lesen.
Folgende Software findet für die genannten Aufgaben auf meinem Ubuntu Homeserver Verwendung:
Die Aufgabe ist folgende: Ich möchte die Möglichkeit haben, aus der Ferne (wie z.B. aus dem Büro) Torrents hinzuzufügen, in der Hoffnung, dass diese fertig sind bis ich heim komme. Das ist ganz nützlich wenn die neueste Version diverser Linux-Distributionen erscheint, die zu hause gleich getestet werden wollen. Ich möchte ebenso eine Benachrichtigung erhalten, wenn ein Download abgeschlossen ist, sodass ich nicht ständig in die Weboberfläche schauen muss. Ein ebenso wichtiger Punkt ist das möglichst komfortable hinzufügen von Torrents.
Deluge Installation und Autostart
Zunächst habe ich mir die aktuelle version aus dem Launchpad-PPA installiert. Ausführliche Anleitungen hierzu findet man ebenfalls auf Launchpad.net oder auf Ubuntuusers.de. Ich habe einfach das komplette Paket installiert:
$ sudo apt-get install deluge
Deluge bietet neben einer GTK-Oberfläche auch eine Konsolen- und eine Weboberfläche [1]. Letztere ist natürlich extrem nützlich für den Zugriff aus der Ferne. Installiert wird sie über
$ sudo apt-get install deluge-webui
und gestartet über
deluge --ui web
Hierzu ist noch zu sagen, dass die Standardvariante keine Verschlüsselung mittels SSL bietet. Deluge unterstützt zwar die Nutzung eines SSL-Zertifikats, jedoch habe ich mir bisher nicht die Mühe gemacht, eines zu erstellen. Eine englischsprachige Anleitung zur Nutzung von SSL findet man HIER. Ohne SSL rate ich generell aus Sicherheitsgründen von der Nutzung über das Internet ab!
UPDATE 22.09.2009:
Ich habe nun entsprechend der genannten Anleitung ein (self-signed) SSL-Zertifikat erstellt. Man kann einfach nach der FAQ vorgehen, muss jedoch anschließend die deluge.crt in deluge.cert.pem und die deluge.key in deluge.key.pem umbenennen. Danach beide Dateien nach ~/.config/deluge/ssl/ kopieren, https in der Config unter Server aktivieren und die WebUI bzw. den Daemon (s.u.) neu starten.
Plugin-Tipp
Wer bei seiner Lieblingsserie und/oder bestimmten Distributionen immer auf dem Laufenden bleiben will, dem kann ich das Plugin (für die WebUI) Feeder empfehlen, das per RSS und RegEx vollautomatisch Torrent-Downloads startet. Auf die Installation und Einrichtung gehe ich an dieser Stelle jedoch nicht ein. Diese Schritte sollten jedoch über die dem Plugin beiliegende Readme kein Problem sein.
Init-Script
Da mein Homeserver nicht 24/7 läuft (wird bei Bedarf per WOL gestartet) möchte ich natürlich, dass Deluge direkt beim Systemstart mitstartet, was über ein Init-Script bewerkstelligt werden kann. Praktischerweise gibt es hierfür auf der Deluge-Homepage ebenfalls eine Anleitung inkl. Script zum Download, siehe HIER.
Zusammenfassung (für Debian/Ubuntu):
1. Neue Datei mit dem Namen deluge-daemon unter /etc/default/ erstellen und <username> durch den Benutzernamen, als den man den Daemon starten will, ersetzen:
# Configuration for /etc/init.d/deluge-daemon # The init.d script will only run if this variable non-empty. DELUGED_USER="" # !!!CHANGE THIS!!!! # Should we run at startup? RUN_AT_STARTUP="YES"
2. Neue Datei mit dem Namen deluge-daemon unter /etc/init.d/ erstellen und folgenden Code einfügen:
#!/bin/sh
### BEGIN INIT INFO
# Provides: deluge-daemon
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description: Starts the deluge daemon with the user specified in
# /etc/default/deluge-daemon.
### END INIT INFO
# Author: Adolfo R. Brandes
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Deluge Daemon"
NAME1="deluged"
NAME2="deluge"
DAEMON1=/usr/bin/deluged
DAEMON1_ARGS="-d"
DAEMON2=/usr/bin/deluge
DAEMON2_ARGS="-u web"
PIDFILE1=/var/run/$NAME1.pid
PIDFILE2=/var/run/$NAME2.pid
PKGNAME=deluge-daemon
SCRIPTNAME=/etc/init.d/$PKGNAME
# Exit if the package is not installed
[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]
then
log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
exit 0
fi
if [ -z "$DELUGED_USER" ]
then
log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME."
exit 0
fi
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --exec $DAEMON1 \
--chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
RETVAL1="$?"
start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --exec $DAEMON2 \
--chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
RETVAL2="$?"
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 1
start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile --exec $DAEMON1 \
--chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON1_ARGS
RETVAL1="$?"
sleep 2
start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile --exec $DAEMON2 \
--chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON2_ARGS
RETVAL2="$?"
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2
RETVAL2="$?"
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1
RETVAL1="$?"
[ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2
rm -f $PIDFILE1 $PIDFILE2
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME1"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
:
3. $ sudo chmod 755 /etc/init.d/deluge-daemon
4. $ sudo update-rc.d deluge-daemon defaults
5. $ sudo /etc/init.d/deluge-daemon start
E-Mail-/Jabber-Benachrichtigungen
Deluge bietet zwar standardmäßig für die GTK-Version eine E-Mail-Benachrichtigung, diese funktioniert jedoch nicht in der WebUI. Um hier per Mail oder Jabber benachrichtigt zu werden wenn ein Download abgeschlossen ist und um den aktuellen Status seiner Downloads per Messenger abzufragen, bietet sich das Plugin RemoteNotify an.
Voraussetzung hierfür ist die Installation von Twisted, einem Messaging-Server/Client:
$ sudo apt-get install python-twisted
Jabber-Account
Nun legt man sich auf http://register.jabber.org den Jabber-Account an, über den die Benachrichtigungen gesendet werden sollen. Anschließend loggt man sich über seinen Messenger auf diesem Account (Bot) ein. Der Jabber-User, welcher die Nachrichten erhalten und Befehle geben dürfen soll (User) muss ebenfalls eingeloggt sein. Nun fügt man auf dem Account des Users den Bot hinzu und erteilt dem User die Autorisierung. Dies ist wichtig, da nur autorisierte JabberIDs den Bot sehen, den Status abfragen und Befehle geben können.
Plugin Installation und Konfiguration
Nun wird das Plugin heruntergeladen und entpackt. Danach ruft man das Verzeichnis, in dem die entpackten Daten liegen, per Terminal auf, kompiliert sich das Plugin und kopiert dieses ins Deluge-Pluginverzeichnis:
$ cd <Verzeichnis zu den entpackten Daten> $ python setup.py bdist_egg $ cp dist/RemoteNotify-0.1-py2.5.egg ~/.config/deluge/plugins/
Ich bin mir nicht mehr sicher, ob man die Komplierung per sudo durchführen muss. Sollten hier Fehler auftreten einfach mal als root ausführen.
Damit Deluge das Plugin läd wird nun der Daemon einmal neu gestartet:
$ sudo /etc/init.d/deluge-daemon restart
Nun wird das Plugin in der Weboberfläche aktiviert:
Anschließend trägt man in der WebUI-Konfiguration die Login-Daten des Bot-Accounts ein und ergänzt ggf. die Felder für E-Mail-Benachrichtigung und JabberID, an die die Benachrichtigungen gesendet werden sollen.
Nun nochmal den Deluge-Daemon neu starten:
$ sudo /etc/init.d/deluge-daemon restart
Fertig.
Ab jetzt wird man bei abgeschlossenen Downloads per Mail- und/oder Jabber benachrichtigt. Man kann dem Jabber-Bot auch Befehle geben:
- status = Zeigt den aktuellen Status aller Downloads (werden auch in der Statusnachricht des Bots angezeigt)
- add [URL zur Torrent-Datei] = Torrent-Download hinzufügen
- del [ID des Torrents] = Torrent löschen
- help = Liste der verfügbaren Befehle
Torrents per Dropbox adden
Gelegentlich bekommt man Torrent-Downloads nur per Button und man kann somit den Link zur .torrent nicht kopieren, sondern bekommt diese vom Browser zum Download angeboten. In diesem Fall bietet sich folgende Methode für Dropbox-Nutzer (oder Nutzer eines vergleichbaren Dienstes) an:
Man legt sich in seiner Dropbox einen Ordner für Torrent-Dateien an.
Nun konfiguriert man Deluge, dieses Verzeichnis zu überwachen und Torrent-Dateien aus diesem Verzeichnis automatisch als Download hinzuzufügen:
Kleine Anmerkung: Dropbox läuft auf meinem Server ebenfalls per Init-Script. Ist dies nicht der Fall muss man es nach jedem Neustart des Rechners manuell starten. Wie man Dropbox in einer textbasierten Umgebung installiert und beim Systemstart mitladen lässt erfährt man HIER.
Nun, das sollte erstmal reichen um seinen serverseitigen Deluge-Client möglichst effektiv und komfortabel nutzen zu können. In einem meiner nächsten Beiträge werde ich die Installation, Konfiguration und Nutzung eines serverseitigen IRC-Clients beschreiben.
Irgendwelche Ergänzugen, Kritik etc.? Lasst es mich in den Kommentaren wissen.
Additional comments powered by BackType












Mai 9th, 2010 on 13:04
Hallo,
hab ‘n kleines Problem:
installation ist super gelaufen, doch beim Starten bekomme ich den Fehler:
sudo: unable to execute /etc/init.d/delung-daemon: No such file or directory
benutze Ubuntu 9.10 Server.
Rechte der datei stehen auf 755.
gibts ‘ne Lösung?
Mai 9th, 2010 on 17:50
Sieht mir nach einem Vertipper aus.
Du hast geschrieben, dass in der Fehlermeldung auf die Datei “/etc/init.d/delung-daemon” verwiesen wird.
Heißt diese sicher nicht “/etc/init.d/deluge-daemon”?
Mai 9th, 2010 on 20:30
Sorry, habe mich hier in den Kommentaren verschrieben.
Es soll natürlich “/etc/init.d/deluge-daemon” heißen.
Ist es vllt ein Problem,weil ich es auf der VirtualBox mache?
Mai 9th, 2010 on 22:07
Nö, das sollte egtl. keinen Unterschied machen.
Hau mal das Ergebnis von “ls -l /etc/init.d” bei http://pastebin.com rein und poste den Link.
Mai 10th, 2010 on 18:45
Hier das Ergebnis:
http://pastebin.com/rBpJnRVQ
Mai 10th, 2010 on 18:54
Ich denke es liegt am Besitzer, das bist du und nicht root.
mach mal
sudo chown root:root /etc/init.d/deluge-daemon
danach sollte es gehen.
Mai 10th, 2010 on 19:16
ne daran lags leider nicht.
immer noch:
sudo: unable to execute /etc/init.d/deluge-daemon: No such file or directory
Mai 10th, 2010 on 19:49
Welche Version von Deluge nutzt du?
Die Anleitung funktioniert lediglich mit Version 1.1.9, nicht mit neueren Versionen.
Ansonsten wüsste ich so aus der Ferne auch nicht mehr, woran es liegen kann.
Könnte dir höchstens anbieten, dass ich mich bei dir mal per TeamViewer oder VNC einklinke und mal drüber schau …
Mai 10th, 2010 on 21:10
ich habe die version 1.1.9
habe schon so einige seiten durchgelesen und bis jetzt auch keine lösung gefunden.
habe für dich ein account eingerichtet:
user: xxxxxx
PW:xxxxxx
da es die server version ist, habe ich keine GUI installiert. kannst über ssh rein.
meine ip heute noch: xx.xx.xx.xx:22
/EDIT Slacker
Hab mal die Login-Daten unkenntlich gemacht, muss ja net jeder auf deinem Server rumwuseln ;)
Mai 10th, 2010 on 21:45
So, ich hab mir das mal angeschaut auf deinem Server
Das Einzige was mir noch auffällt ist das Script unter /etc/default
Evtl. mal chown auf root und in deluge-daemon umbenennen
Mai 10th, 2010 on 21:45
und Doktor habe ich ne chance ;-) oder brauchst du root PW?
Mai 10th, 2010 on 21:48
Hab meine Antwort oben gepostet.
Ich klink mich jetzt aus für heute.
Ab morgen früh stehe ich gerne wieder zur Verfügung ;)
Mai 10th, 2010 on 21:51
habs geändert doch es hat nichts gebracht.
melde mich morgen wieder, falls ich bis dahin keine Lösung gefunden habe.
danke für deine Hilfe.
Mai 13th, 2010 on 17:32
Hallo sl[A]cker,
habe das gleiche auf Ubuntu 9.10 Desktop und Ubuntu 10.04 Server ausprobiert.
auf der Desktop-Version funktioniert es wunderbar, aber auf den Server-Versionen will es einfach nicht starten.
werde mal auf ubuntuusers.de anfragen, vllt weiß jemand wie man es auf der Server-Version zum laufen bekommt.
Mai 18th, 2010 on 14:37
Hi sl[A]cker,
hab hier eine Anleitung gefunden mit der neuen Version, die auf Ubuntu 9.10 Server funktioniert (mit 10.04 noch nicht ausprobiert). Kannst ja checken wo es mit deiner Abweichungen gibt und als Hinweise in deine hizufügen.
http://havetheknowhow.com/Install-the-software/Install-Deluge-Headless-RC.html
Gruß sintec