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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  12. +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, где можно только один за раз добавить.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 будет занято.

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

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

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

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

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

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

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

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

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

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

Добавить комментарий для Softovick Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Материалы распространяются под лицензией Creative Commons: Атрибуция — Некоммерческое использование — С сохранением условий (Attribution-NonCommercial-ShareAlike) 3.0 Unported.
Рейтинг@Mail.ru