Slackblog

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

Projekt Homeserver: Torrent Client mit Web Interface und Email /Jabber Benachrichtigung

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

Screenshot: Delube Web UIZunä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:

Deluge-WebUI-Plugin Remote Notify

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.

Projekt Homeserver: Torrent Client mit Web Interface und Email /Jabber Benachrichtigung

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:

Deluge-Config Autoadd Dropbox

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.

No TweetBacks yet. (Be the first to Tweet this post)
:, , ,

1 Tweet

15 Kommentare für diesen Eintrag

  • sintec

    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?

    • sl[A]cker

      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”?

  • sintec

    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?

  • sintec

    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 ;)

  • sintec

    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.

  • sintec

    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

Kommentar hinterlassen




* = Pflichtfelder


Additional comments powered by BackType

Suchst du etwas?

Immer noch nicht fündig geworden? Hinterlasse einen Kommentar oder kontaktiere mich, damit ich mich drum kümmern kann!

Archive

Alle Einträge, chronologisch...