Инструменты пользователя

Инструменты сайта


// rtorrent как демон и управление через web

Давно озадачивался вопросом автономной работы torrent клиента. Под руку попалось описание, как для этих целей использовать transmission-daemon. Функционала мало, но впринципе устраивало, до тех пор пока не стал замечать, что теряет он пиры, не сидирует, причем излечивалось после перезапуска. Но и это я терпел, пока он вообще не перестал воспринимать закачиваемые торренты…

Тут я вспомнил про описание stanislaw'а как он запускал в виде демона rtorrent (консольный torrent клиент). Собственно всю демоническую часть я взял у него с небольшими изменениями, так что подробно на этом задерживаться не буду.

Само описание тут

Rtorrent as Daemon

Итак, демонические шаги:

  1. Я создавал отдельного пользователя для торрентов:
    adduser torrent

    домашний каталог указал как /home/torrent

  2. далее, чуть именил структуру директориев, создал:
    mkdir -p /home/torrent/downloads /home/torrent/session /home/torrent/torrents /home/torrent/rc.d

    в rc.d положил стартовый сприпт rtorrentd и слинковал его в /etc/rc.d

  3. создал конфиг /etc/torrent/.rtorrent.rc со следующим содержимым (минимальные изменения относительно конфига stanislav, но обратите вниание на последнюю строчку):
    #минимальное число пиров на торрент
    min_peers = 1
    
    #максимальное число пиров на торрент
    max_peers = 1000
    
    #максимальная скорость загрузки
    download_rate = 40
    
    #максимальная скорость отдачи. 0 - не ограничена
    upload_rate = 30
    
    #каталог для сохранения закачек или откуда буду сидироваться торренты.
    directory = /home/torrent/downloads
    
    #каталог куда будет сохраняться состояние торрентов. Здесь, в этом примере, они сохраняются в папку session
    session = /home/torrent/session
    
    #rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent файлы и если они есть то ставит их на закачку
    schedule = watch_directory,5,60,load_start=/home/torrent/torrents/*.torrent
    
    #номер порта (или нескольких портов) который открывает клиент для обмена данными
    port_range = 9090-9090
    
    #случайный выбор порта для обмена данными. В данном случае он отключён
    port_random = no
    
    #проверять хэш торрента после закачки
    check_hash = yes
    
    #использовать udp
    use_udp_trackers = yes
    
    #сохранять сессию
    session_save = yes
    
    #делает читадельным лог (вызывается по L)
    handshake_log = yes
    
    # 
    scgi_port = localhost:5000
  4. чуть модифицированный стартовый скрипт rc.d/rtorrentdскрипт для запуска лучше взять тут, здесь копия (чуть модифицированная):
    #!/bin/bash
    
    . /etc/rc.conf
    . /etc/rc.d/functions
    
    user=torrent
    
    case "$1" in
      start)
        stat_busy "Starting rtorrent"
        su - $user -c 'screen -d -m rtorrent' &> /dev/null
        if [ $? -gt 0 ]; then
          stat_fail
        else
          add_daemon rtorrent
          stat_done
        fi
        ;;
      stop)
        stat_busy "Stopping rtorrent"
        killall -w -s 2 /usr/bin/rtorrent &> /dev/null
        if [ $? -gt 0 ]; then
          stat_fail
        else
          rm_daemon rtorrent
          stat_done
        fi
        ;;
      restart)
        $0 stop
        sleep 1
        $0 start
        ;;
      *)
        echo "usage: $0 {start|stop|restart}"
    esac
    exit 0

Собственно тут все, теперь стоит запустить демона. SCGI интерфейс нужен для работы с веб-интерфейсом. На данный момент, функционал будет аналогичен описанию stanislav'а.

wtorrent: rtorrent web interface

Немного поискав на просторах интернета нашел веб-интерфейс для rtorrent. Название ему: wtorrent.

Резпозитариях ArchLinux, его, к сожалению, не оказалось, поэтому собрал пакет, и поместил в AUR: http://aur.archlinux.org/packages.php?ID=25557

Если в общем, то:

  1. скачиваем из SVN последний срез:
    svn co svn://wtorrent-project.org/repos/trunk/wtorrent/
  2. помещаем директорию wtorrent, например, в /srv/http:
    mv wtorrent /srv/http/
  3. делаем ей:
    chmod -R 777 /srv/http/wtorrent
  4. проверяем, что в настройках php ключены модули pdo.so и pdo_sqlite.so, а так же что каталог /srv/http есть в open_basedir
  5. у апача должен стоять модуль mod_scgi, в ArchLinux его можно поставить из AUR: http://aur.archlinux.org/packages.php?ID=22171
  6. в конфигурационном файле апача добавляем примерно следующее:
    LoadModule scgi_module            modules/mod_scgi.so
    
    SCGIMount /RT_RPC2 127.0.0.1:5000
    
    #
    # For auth: htpasswd -c /path/to/htpasswd username
    #
    #<Location /RT_RPC2>
    #AuthName "Private"
    #AuthType Basic
    #AuthBasicProvider file
    #AuthUserFile /path/to/htpasswd
    #Require user myrpcuser
    #</Location>
    
    Alias /wtorrent/ "/srv/http/wtorrent/"
    
    <Directory "/srv/http/wtorrent/">
        AllowOverride All
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>
  7. заходим на http://ваш_адрес/wtorrent/install.php и делаем настройки. в случае ошибок смотрим логи апача.
  8. после настройки, удаляем install.php

Всё, можно теперь работать.

Веб интерфейс очень функционален, при добавлении торрента можно указывать ссылку или файл, можно указать директорию куда сохранять закачку для каждого торрента (класс!). Можно просматривать инфомрацию по торренту, устанавливать приоритеты закачки отдельных файлов и т.п.

Кроме того, можно добавлять пользователей для работы с системой, которым можно указать индивидульаные каталоги для закачки, а потом раздавать результаты через, например, самбу с авторизацией.

Можно вести RSS ленту, в которую добавлять rss с различных трекеров (пока не пробывал, оценить не могу, но кажется, фича удобна).

Комментарии

Старые комментарии

О, поправил стартовый скрипт для отлова ошибок — мой недочёт, всё лень было разобраться как это делается. :)

По конфигу и самому rtorrent'у есть такое замечание: при выставленном min_peers = 1 для торрентов, которые ты раздаёшь, но личей нет, будет отображаться сообщение Tracker: [Tried all trackers.] В качестве эксперимента я попробовал выставить значение в 0, это привело к тому, что добавляемые торренты (имеющие сидов) не начинали качаться. Похоже, что сообщение некритичное, а скорее информационное.

Спасибо за хауту по wtorrent, надо тоже настроить.

1 | | 2009-04-15 00:48 | reply

ну ошибки он не отлавливает сейчас, походу скрин не возвращает статус процесса. так что всегда будет done… проверено сегодня когда настраивал. По замечаниям к конфигу - спасибо, попробую )

2 |
Alexander Drozdov
| 2009-04-15 01:16 | reply

Скрипт взял чуть другой - более корректно завершает работу rtorrent

3 |
Alexander Drozdov
| 2009-04-16 14:21 | reply

Обновил пакет в AUR для wtorrent-svn

4 |
Alexander Drozdov
| 2009-10-24 13:00 | reply