Hatred's Log Place

DON'T PANIC!

Apr 14, 2009 - 4 minute read -

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

  1. ~~чуть модифицированный стартовый скрипт rc.d/rtorrentd~~скрипт для запуска лучше взять [тут](http://wiki.archlinux.org/index.php/RTorrent), здесь копия (чуть модифицированная):```
#!/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 #

Alias /wtorrent/ “/srv/http/wtorrent/”

<Directory “/srv/http/wtorrent/"> AllowOverride All Options Indexes FollowSymLinks Order allow,deny Allow from all

  1. заходим на [http://ваш_адрес/wtorrent/install.php](http://ваш_адрес/wtorrent/install.php)  и делаем настройки. в случае ошибок смотрим логи апача.
  2. после настройки, удаляем install.php

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

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

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

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