BitTorent клиент для сервера


Zeboton
Deluge — full-featured BitTorrent client for Linux, Unix and Windows

Deluge — full-featured BitTorrent client for Linux, Unix and Windows

Когда у меня возникла необходимость установить на сервер, который находится под управлением Ubuntu 9.04 «Jaunty Jackalope», BitTorent клиент, то я сразу подумал о rtorrent. Но пока я искал инструкцию по его настройке (точнее по настройке самого rtorrent, screen и web-интерфейса к rtorrent) я узнал о том что мой любимый Deluge (которым я пользовался раньше на компьютере с DE GNOME) может работать и в консольном режиме и в режиме с Web-интерфейсом. Меня это заинтересовало.В результате я раскопал официальный сайт Deluge и нашёл на нём инструкцию по установке Deluge на сервер. Всё намного проще, нежели в случае с rtorrent.

1. Для начала я бы порекомендовал обзавестись пакетами, которые понадобятся для работы:

sudo apt-get install g++ make python-all-dev python-all python-dbus python-gtk2 python-notify python-setuptools librsvg2-common python-xdg python-support subversion libboost-dev libboost-python-dev libboost-iostreams-dev libboost-thread-dev libboost-date-time-dev libboost-filesystem-dev libboost-serialization-dev libssl-dev zlib1g-dev

2. Теперь установим сам Deluge:

sudo apt-get install deluge-common deluge-console deluge-core deluge-torrent deluge-webui

3. Нужно создать для него демона, который будет его запускать. Для этого создадим файл /etc/default/deluge-daemon:

sudo nano /etc/default/deluge-daemon

Содержимое файла должно быть таким (ВНИМАНИЕ!!! Обязательно замените <username> на имя вашего пользователя в системе!):

# Configuration for /etc/init.d/deluge-daemon

# The init.d script will only run if this variable non-empty.
DELUGED_USER="<username>"             # !!!CHANGE THIS!!!!

# Should we run at startup?
RUN_AT_STARTUP="YES"

Для выхода из nano и сохранения файла используйте сочетание Ctrl+x + ответ на вопрос о необходимости сохранения файла.

4. Создадим исполняемый скрипт /etc/init.d/deluge-daemon:

sudo nano /etc/init.d/deluge-daemon

Его содержимое должно быть следующим:

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

:

5. Разрешим пользователю root исполнять этот скрипт:

sudo chmod 755 /etc/init.d/deluge-daemon

6. Добавим выполнение этого скрипта при старте системы:

sudo update-rc.d deluge-daemon defaults

7. Теперь осталось либо запустить скрипт

sudo /etc/init.d/deluge-daemon start

либо перезапустить сервер

sudo shutdown -r now

Всё, программой можно пользоваться обратившись к серверу через браузер на порт 8112. К примеру, http://198.162.1.25:8112. Пароль по-умолчанию «deluge».

Web-интерфейс системы очень удобный и продуманный. За сутки работы с ним ошибок и недочётов не обнаружено. Выглядит он вот так:

WEB-user interface Deluge

WEB-user interface Deluge

На мой взгляд установка Deluge в разы проще и понятнее, нежели установка rtorrent. А так как для моих задач Deluge хватает выше крыши, то я остановился именно на нём.

P.S.
Если коды скриптов не сработали, то попробуйте взять их с официального сайта с документацией, вдруг при копирование какие-нибудь символы на что-нибудь заменились.

Обновление от 20 июля 2009 05:00
Я советую устанавливать deluge не из репозитория Ubuntu, а собирать из SVN разработчиков. Так как версия из SVN стабильнее и у меня намного реже вылетает с ошибкой Segmentation fault (segfault), нежели версия из репозитория.

Установка не многим сложнее. Ниже приведу процесс удаления версии установленной из репозитория и установки версии из SVN

1. Удалим имеющийся deluge

sudo apt-get remove deluge

2. Удаляем конфигурационные файлы deluge, предварительно сделав копию (на всякий случай, так как в папке ~/.config/deluge/state находится список торентов которые были в deluge до его удаления)

cp ~/.config/deluge ~/.config/deluge-backup
rm -rf ~/.config/deluge

3. Устанавливаем последний стабильный deluge из SVN

svn co http://svn.deluge-torrent.org/branches/1.1.0_RC deluge
cd deluge
sudo rm  -fr /usr/lib/python2.5/site-packages/deluge-1.1*
python setup.py build
sudo python setup.py install

Подробнее на сайте разработчиков (англ.).

40 комментариев для “BitTorent клиент для сервера”

  1. Softovick9 июля 2009 ~ 08:16

    Я так понимаю, что для его работы необходимо чтобы на сервере и графическая оболочка стояла?

  2. Zeboton9 июля 2009 ~ 11:43

    В том-то и дело, что она не нужна! Я же написал: «…может работать и в консольном режиме и в режиме с Web-интерфейсом…»
    В конце статьи приведён снимок экрана браузера в котором показан WEB-интерфейс Deluge.

  3. Softovick9 июля 2009 ~ 12:07

    Я и уточнил, при этом Иксы ставятся на сервере или нет? То, что через WEB-интерфейс работает, я вижу… Но вижу также, что через localhost, т.е. на сервере у тебя графика таки стоит?

  4. Zeboton9 июля 2009 ~ 13:08

    1. Обращение к localhost не имеет никакого отношения к Иксам, так как это обращение к WEB-серверу.
    2. К localhost с сервера можно обратиться при помощи lynx.
    3. Непустая папка /etc/X11/ есть на всех серверах под управлением Ubuntu.

    На самом деле я не вижу в описанном мной процессе указание на необходимость Иксов. Вышеописанные действия проводились на свежеустановленном сервере. На нём до этого только openssh было установлено.

  5. Softovick9 июля 2009 ~ 13:43

    Понял. Иксы могут поставится в качестве зависимости, но посмотрел щас, вроде ничего особо весомого там не ставится…

  6. «Я и Ubuntu» » Установка и настройка NFS сервера и NFS клиента12 июля 2009 ~ 18:40

    […] настроили вы у себя на сервере Deluge для работы с torrent сет…, а что дальше? Как посмотреть фильмы и прослушать […]

  7. Gurom20 июля 2009 ~ 01:47

    Всем привет,
    спасибо за статью.

    Эх… не получилось. Вот выдает ошибку:

    root@rgserv:/etc/default# /etc/init.d/deluge-daemon start
    /etc/init.d/deluge-daemon: 34: Syntax error: «&» unexpected

    Подскажите пожалуйста. Я уже по несколько раз проверил содержимое файлов. Все как у Вас. А запускаешь и не работает.

  8. Zeboton20 июля 2009 ~ 04:57

    Это происходило из-за того что редактор WordPress почему-то дважды заменил символы «&», «< », «>» и некоторые другие на их html-коды. В результате приведённые скрипты перестали быть корректными.

    Сейчас всё исправлено и должно работать.

    Gurom, спасибо что заметили.

  9. Gurom20 июля 2009 ~ 13:06

    Еще раз ОГРОМНОЕ спасибо автору. У меня все заработало. Сижу смотрю на свой web интерфейс , радуюсь 🙂
    Весьма удобная штуковина.

  10. Zeboton21 июля 2009 ~ 04:33

    Да, Gurom, вы правы. Как я не старался перенести тексты файлов с сайта разработчиков в неизменном виде, редактор WP это сделать не давал. Но сейчас вроде всё в порядке. Спасибо.

  11. einomrah27 июля 2009 ~ 17:40

    Есть сервер на котором установлен Deluge, сервер располагается не в моей локальной сети и управлять deluge через веб интерфейс проблематично . Нужно настроить что бы deluge брал torrent файлы из определенной папки, скажем torrent.in и ложил скаченные файлы в torren.out. как это сделать через консоль?

  12. Zeboton27 июля 2009 ~ 18:29

    Для einomrah. То, что сразу пришло на ум:
    1. [text]man deluge[text]
    2. Deluge Console UI
    3. Отредактировать файл ~/.config/deluge/core.conf. Какой в нём формат используется и как его заполнять наверняка рассказано на форуме Deluge.

  13. Softovick28 июля 2009 ~ 10:08

    +1, управлять Deluge на сервере можно и удаленно, с помощью установленного Deluge с обычным графическим GUI. Делается очень просто в два шага:
    1. на сервере в домашней папке пользователя, из под которого запускается Deluge, нужно добавить строку вида user:password (естественно подставить свои значения) в файл ~/.config/deluge/auth .
    Через консоль можно выдать команду
    echo «username:password» >> ~/.config/deluge/auth
    2. На клиентской машине (кстати, Deluge кроссплатформен и потому можно и на Linux и на Windows сделать) в настройках клиента заходите в раздел Интерфейс и убираете галочку «Использовать классический интерфейс». Теперь перезапустите клиент и при первом заходе появится менеджер соединений (также появится аналогичная кнопка на панели), где можно настроить подключение к серверу и спокойно управлять торрентами через GUI.
    P.S.: насчет автодобавления — есть такая функция, но ее использование чревато, проще добавить вручную, ИМХО. Ибо когда я добавил так все свои 700 торрентов, я потом не смог у них поменять путь, дабы они заного не закачивались. По каким причинам, я пока не понял, но пришлось добавлять вручную. Кстати, через GUI можно сразу пакетами добавлять, что удобнее, чем в WebUI, где можно только один за раз добавить.

  14. w5277c2 сентября 2009 ~ 07:38

    2 Zeboton,

    Огромное спасибо. Отличное решение. Я счастлив 🙂

  15. sergio_f11 сентября 2009 ~ 15:52

    Спасибо за статью.
    Установка прошла без проблем, но возник вопрос при входе через Web,
    просит ввести пароль, ни один пароль не подходит, пишет «Password is invalid, try again». Пользователь изменен.
    В чем может быть проблема и где искать?

  16. sergio_f11 сентября 2009 ~ 16:15

    Нашел, пароль по умолчанию deluge.

  17. keper29 сентября 2009 ~ 01:44

    Блин первый раз проделал установку и все заработало, переставил систему, установил все, зпхожу в морду, паролюсь и мне выдает:
    NoCoreError : ‘The core proxy is invalid.’

    Хэлп товарищи 🙁

    Мануал супер, это я видимо туплю…

  18. Zeboton29 сентября 2009 ~ 08:49

    keper, давайте вы опишете всё более подробно на форуме, а то не очень понятно что именно вы переустановили и какие настройки меняли (меняли ли?).

  19. keper29 сентября 2009 ~ 11:12

    [b]Zeboton [/b] не не, все нормально, просто устал вчера, с утра все поправил. Спасибо за инструкцию!

  20. keper30 сентября 2009 ~ 09:39

    К стати, у меня вот например в репозиториях не было этих пакетов, следовательно, если у вас тоже этих пакетов нет, то добавьте в /etc/apt/sources.list в самый конец строчку:

    #deluge
    deb http://cz.archive.ubuntu.com/ubuntu jaunty main universe

    Еще раз спасибо за инструкцию, с Вашего позволения хотел бы ее добавить к себе в лог, естественно с сылкой на источник 🙂

  21. svr10 октября 2009 ~ 14:48

    web интерфейс как то не полно все отображает, правда я из репозитариев стваил. но вот что быть с плагином scheduler. Я вообзе ка кто не понял как эти плагины ставить. На оффсайте их всего три. То что поставил из репозитариев… их всего 2! Как то странно с плагинами. Где брать их и как ставить нет никаких иснтрукций…

  22. Zeboton22 октября 2009 ~ 11:38

    Обожаю OpenSource! Где ещё можно получить вот такое сообщение об ошибке:

    You might have found a bug, or you did something really stupid ;-).
    Suddenly the Dungeon collapses!! — You die…

  23. viktor629 ноября 2009 ~ 18:48

    У меня не как не получается поставить веб приложения как оно ставится

  24. Zeboton1 декабря 2009 ~ 08:56

    @viktor6
    Вот ответ на ваш вопрос: http://dev.deluge-torrent.org/wiki/UserGuide/ThinClient#WebUI

  25. Err0r_user6 декабря 2009 ~ 14:47

    Спасибо за инструкцию, и за труд, несколько копипастов и все работает 🙂

  26. nitrous17 января 2010 ~ 15:41

    к вопросу о «легковесности» данной конструкции..

    server:~# aptitude install deluge-common deluge-console deluge-core deluge-torrent deluge-webui
    Чтение списков пакетов… Готово
    Построение дерева зависимостей
    Чтение информации о состоянии… Готово
    Чтение информации о расширенных состояниях
    Инициализация состояний пакетов… Готово
    Чтение описаний задач… Готово
    Нет подходящей версии для deluge-core
    Нет подходящей версии для deluge-core
    Следующие НОВЫЕ пакеты будут установлены:
    dbus-x11{a} defoma{a} deluge{a} deluge-common deluge-console
    deluge-gtk{a} deluge-torrent deluge-web{a} deluge-webui fontconfig{a}
    gconf2{a} gconf2-common{a} hicolor-icon-theme{a} hunspell-en-us{a}
    libasound2{a} libatk1.0-0{a} libatk1.0-data{a} libblas3gf{a}
    libboost-filesystem1.40.0{a} libboost-python1.40.0{a}
    libboost-system1.40.0{a} libboost-thread1.40.0{a} libcairo2{a}
    libcroco3{a} libdatrie1{a} libdbus-glib-1-2{a} libdirectfb-1.2-0{a}
    libenchant1c2a{a} libffi5{a} libfont-freetype-perl{a} libgconf2-4{a}
    libgfortran3{a} libgirepository1.0-0{a} libglade2-0{a} libgsf-1-114{a}
    libgsf-1-common{a} libgstreamer0.10-0{a} libgtk2.0-0{a} libgtk2.0-bin{a}
    libgtk2.0-common{a} libhunspell-1.2-0{a} libidl0{a} libjasper1{a}
    libjpeg62{a} liblapack3gf{a} libmikmod2{a} libnotify1{a} libogg0{a}
    liborbit2{a} libpango1.0-0{a} libpango1.0-common{a} libpixman-1-0{a}
    libpng12-0{a} librsvg2-2{a} librsvg2-common{a} libsdl-image1.2{a}
    libsdl-mixer1.2{a} libsdl-ttf2.0-0{a} libsdl1.2debian{a}
    libsdl1.2debian-alsa{a} libsexy2{a} libsmpeg0{a}
    libstartup-notification0{a} libsvga1{a} libsysfs2{a} libthai-data{a}
    libthai0{a} libtiff4{a} libtorrent-rasterbar5{a} libts-0.0-0{a}
    libvoikko1{a} libvorbis0a{a} libvorbisfile3{a} libwnck-common{a}
    libwnck22{a} libx86-1{a} libxcb-atom1{a} libxcb-aux0{a} libxcb-event1{a}
    libxcb-render-util0{a} libxcb-render0{a} libxcomposite1{a} libxcursor1{a}
    libxfont1{a} libxrandr2{a} libxres1{a} notification-daemon{a}
    python-beaker{a} python-cairo{a} python-chardet{a} python-glade2{a}
    python-gobject{a} python-gtk2{a} python-libtorrent{a} python-mako{a}
    python-notify{a} python-numpy{a} python-openssl{a} python-pam{a}
    python-pkg-resources{a} python-pygame{a} python-serial{a}
    python-simplejson{a} python-sqlalchemy{a} python-twisted-bin{a}
    python-twisted-core{a} python-twisted-web{a} python-xdg{a}
    python-zope.interface{a} tsconf{a} x-ttcidfont-conf{a}
    x11-xserver-utils{a} xdg-utils{a} xfonts-encodings{a} xfonts-utils{a}
    0 пакетов обновлено, 115 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
    Необходимо получить 35,6MB архивов. После распаковки 120MB будет занято.

  27. mvt21 марта 2010 ~ 14:53

    После перезагрузки web-интерфейс отвалился и пишет Not Connected to a daemon.
    В чем может быт дело? Помогите.

  28. Zeboton21 марта 2010 ~ 22:14

    mvt, вроде же написано понятно — даемон не работает, а значит к нему нельзя подключиться. Или же даемон не работает на том порту, на котором его пытается увидеть WEB-интерфейс.

  29. Павел13 апреля 2010 ~ 21:31

    Доброго времени суток!!!!!

    Что то у меня не получилось с установкой web мордочки к нему…. сам делюге заработал в смысле стартанул но подключиться не могу к нему… server у меня 1 машина подключаюсь с другой… соответственно в браузере набираю http://xxx.xxx.xxx.xxx:8112 а в ответ тишина что могет быть плиз подскажите!

  30. Zeboton13 апреля 2010 ~ 22:45

    Павел, тишина бывает разной. А что говорит, к примеру, ping xxx.xxx.xxx.xxx?

  31. clubm14 апреля 2010 ~ 11:32

    gut!

  32. Serg20 апреля 2010 ~ 18:23

    У меня то-же самое, набираю http://xxx.xxx.xxx.xxx:8112 а в ответ тишина . ping проходит. НА компе установлена mythbuntu. Стоит по той причине, что было под рукой из устанавливаемого через usb-флэшку. Если набрать адрес без порта, то соответственно открывается web-«морда» mythbuntu.

  33. Zeboton21 апреля 2010 ~ 05:52

    Давайте разбираться. Предлагаю сделать это на форуме в теме Не открывается WEB-интерфейс Deluge (порт 8112).

  34. casper24 августа 2010 ~ 16:48

    Здраствуйте. Спасибо за статью.
    Но есть два вопроса.
    1.Как установить на сервер последнюю версию Deluge 1.3.0 RC1.
    2.Почему то Deluge файлы скачивает но не раздает?
    Порты все открыты, файервол отключен((

  35. Zeboton25 августа 2010 ~ 06:42

    Для casper.
    1. установка последней версии программы на старый дистрибутив — это тема для отдельной заметки, так как нужно обновлять библиотеки и удовлетворять прочие зависимости. Какая максимальная версия Deluge для какой версии Ubuntu может быть использована, описано здесь.
    2. Может быть никто их просто не качает? Или у вас в настройках Deluge скорость отдачи установлена на 0? Или в настройках скаченных торентов указано что их не нужно раздавать (такое тоже можно сделать)?

  36. reazon17 октября 2010 ~ 16:43

    super!!!
    Spasibo….. stavil 1.3 na 10.4 server kak po maslu !!!!!

  37. Виталий20 июля 2012 ~ 00:34

    Я подключаюсь к демону на сервере через 1.3.5. win32 (удаленное подключение). Как создать торрент через удаленный путь? вводим напр. /var/www/ftp/, размер отображается, нажимаем save, вводим /var/www/ftp и….. тишина. то-ли он путь не видит, то-ли создать торрент файл не может… при указании пути размер папки видит, но хеширование не начинается.

  38. Zeboton20 июля 2012 ~ 12:13

    Виталий, первое, что я бы стал проверять — права на доступ к директории и файлам в ней.

  39. Виталий20 июля 2012 ~ 19:28

    Похоже, делюга демон в принципе создавать торренты не умеет. Ни в консоли, ни в вебуях такой команды нет. Есть только в вынь32.

  40. Алексей29 марта 2013 ~ 11:17

    Все вышеописанное проделал, не работает, сервак ubuntu 12.04.1. Делуга не пашет.

Ваш комментарий

*