Отвечая на призыв в распространении (rtorrent + rutorrent)

Не знаю, поможет ли данный пост в распространении Calculate Linux, к которому призвал Александр Трацевский, но поднять у себя на сервере torrent-клиент с красивой веб-мордашкой , надеюсь, поможет.

Исходные данные:

  • Calculate Linux Directory Server 11.3
  • Нечто, издали похожее на компьютер, в виде P3, 512 MB RAM, HDD 500Gb

Для начала выполним eix-sync, чтобы иметь самый свежий portage и overlay.

Для работы Rtorrent + rutorrent нужно пересобрать:

  • Веб сервер с поддержкой PHP, в моём случае это Apache 2.2.16
  • PHP 5.3.5

В PHP нужно добавить некоторые USE-флаги, вот они:
cat /etc/portage/package.use/php

 # for rtorrent
dev-lang/php gd xmlrpc

Флаги можно добавить так:
echo "dev-lang/php gd xmlrpc" > /etc/portage/package.use/php

На всякий случай проверяем, чтобы в Apache была запущена поддержка PHP, для этого смотрим в /etc/conf.d/apache:
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5"

Для rtorrent добавляем следующие USE-флаги:
cat /etc/portage/package.use/rtorrent

net-p2p/rtorrent xmlrpc daemon 
  • xmlrpc - поддержка xml-rpc библиотеки (необходима для веб-морды rutorrent)
  • daemon - установка скрипта для работы rtorrent в режиме демона, позволяет не мучатся с автозапуском
    Флаги можно добавить так:
    echo "net-p2p/rtorrent xmlrpc daemon" > /etc/portage/package.use/rtorrent

Т.к. пакет rtorrent замаскирован в портежах, перед установкой его нужно размаскировать, например так:
echo "www-apps/rutorrent ~x86" > /etc/portage/package.keywords/rutorrent

И, собственно, установка:
emerge -av rtorrent

Добавляем демон rtorrent’a в автозапуск (если это вам необходимо):
rc-config add rtorrentd default

Adding rtorrentd to following runlevels
  default                   [done]

Для работы rtorrent создадим локального пользователя rtorrent c домашней директорией, в которой заодно и будут храниться скаченные торренты:
useradd rtorrent -m
Домашняя директория по умолчанию у локальных пользователей находится в /home/ (в отличие от доменных). Это следует учитывать т.к. торренты обычно занимают много места, впрочем, директорию для скачивания и хранения торрентов всегда можно, ниже будет описано как.
Чтобы демон rtorrentd запускался от нашего локального пользователя, его нужно прописать в /etc/conf.d/rtorrentd:

USER="rtorrent"                                       

В домашней директории rtorrent cоздадим самый простой файл конфигурации:

 # /home/rtorrent/.rtorrent.rc
port_range = 6925-6925
 # Директория для хранения скаченного контента
directory = /home/rtorrent/downloads
session = /home/rtorrent/.rtorrent-session/ 
load_start = /home/rtorrent/torrents/*
scgi_port = 127.0.0.1:5000

Более подробно о файле конфигурации rtorrent вы можете почитать здесь (пример файла с подробными комметариями на английском)

Теперь устанавливаем фронтенд - rutorrent:
emerge -av rutorrent

По умолчанию установка производится в /var/www/localhost/htdocs/rutorrent. Установим права на папки в rutorrent:
chown -hR apache:apache /var/www/localhost/htdocs/rutorrent/
Перезапускаем apache:
rc-service apache2 restart
Стартуем rtorrent:
rc-service rtorrentd start

Заходим браузером http://<IP или имя вашего сервера>/rutorrent

Должно получится что-то на подобие этого, только у меня уже идёт скачивание и раздача одного популярного дистрибутива:

rutorrent1-small.png

P.S. Для ленивых - всё уже придумано до нас в Calculate Media Center

В инструкции есть неточности:

  1. rutorrent, mod_scgi и scgi замаскированы, поэтому -

    echo “www-apps/rutorrent” >> /etc/portage/package.keywords/using
    echo “www-apache/mod_scgi” >> /etc/portage/package.keywords/using
    echo “www-apps/scgi” >> /etc/portage/package.keywords/using

2. В Апаче надо добавить поддержку SCGI

cat /etc/conf.d/apache2 | grep APACHE2_OPTS
 # and other features of apache using the APACHE2_OPTS line. Every module should
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D SCGI -D PHP5"

3. Чтобы вся эта связка ожила, надо ещё несколько сточек прописать:

echo "<IfDefine SCGI>" > /etc/apache2/modules.d/20_mod_scgi.conf
echo "LoadModule scgi_module modules/mod_scgi.so" >> /etc/apache2/modules.d/20_mod_scgi.conf
echo "<Location \"/RPC2\">" >> /etc/apache2/modules.d/20_mod_scgi.conf
echo "        SetHandler scgi-handler" >> /etc/apache2/modules.d/20_mod_scgi.conf
echo "        SCGIServer localhost:5000" >> /etc/apache2/modules.d/20_mod_scgi.conf
echo "        SCGIHandler On" >> /etc/apache2/modules.d/20_mod_scgi.conf       
echo "        Options -Multiviews" >> /etc/apache2/modules.d/20_mod_scgi.conf       
echo "        AuthName \"RPC2 Restricted Area\"" >> /etc/apache2/modules.d/20_mod_scgi.conf         
echo "        AuthType Basic" >> /etc/apache2/modules.d/20_mod_scgi.conf         
echo "        AuthBasicProvider file" >> /etc/apache2/modules.d/20_mod_scgi.conf
echo "        AuthUserFile /var/www/tool/htpasswd/.rutorrent" >> /etc/apache2/modules.d/20_mod_scgi.conf       
echo "        Require valid-user" >> /etc/apache2/modules.d/20_mod_scgi.conf         
echo "        </Location>" >> /etc/apache2/modules.d/20_mod_scgi.conf          
echo "        </IfDefine>" >> /etc/apache2/modules.d/20_mod_scgi.conf

4. Ну и напоследок, чтобы управлять rutorrent могли только нужные люди:

mkdir /var/www/tool; mkdir /var/www/tool/htpasswd

Переходим на страничку - http://www.htaccesstools.com/htpasswd-generator/
вводим желаемые логин, пароль и сохраняем полученную строчку в файл .htpasswrd:

echo "" >> /var/www/tool/htpasswd/.rutorrent

(в кавычках вставляем полученную комбинацию). Далее, собственно, ограничиваем доступ:

echo "AuthName \"ruTorrent Restricted Area\"" >> /var/www/localhost/htdocs/rutorrent/.htaccess
echo "AuthType Basic" >> /var/www/localhost/htdocs/rutorrent/.htaccess
echo "AuthUserFile /var/www/tool/htpasswd/.rutorrent" >> /var/www/localhost/htdocs/rutorrent/.htaccess
echo "Require valid-user" >> /var/www/localhost/htdocs/rutorrent/.htaccess

5. Ещё один момент, чтобы адрес rutorrent был вида http://localhost/rutorrent, нужно после установки rutorent запустить следующую команду:

webapp-config -I -h localhost -d rutorrent rutorrent 3.2

6. А чтобы демон rtorrentd запускался от конкретного пользователя, пропишем его:

echo "USER=\"user\"" > /etc/conf.d/rtorrentd

7. Ну и напоследок правим права на некоторые папки в rutorrent:

chown -hR apache:apache /var/www/localhost/htdocs/rutorrent/

Вроде всё, открываем http://localhost/rutorrent и вводим логин и пароль.

Иван Платонов писал(а):

В инструкции есть неточности:

  1. rutorrent, mod_scgi и scgi замаскированы, поэтому -
    Cпасибо, забыл добавить этот пункт про rutorrent, остальное мне не понадобилось.
  2. В Апаче надо добавить поддержку SCGI
    […]
  3. Чтобы вся эта связка ожила, надо ещё несколько сточек прописать:

у меня apache (и rutorrent) работает без FastSGI:

  1. Ну и напоследок, чтобы управлять rutorrent могли только нужные люди:
    Переходим на страничку - http://www.htaccesstools.com/htpasswd-generator/
    вводим желаемые логин, пароль и сохраняем полученную строчку в файл .htpasswrd:
    […]
    (в кавычках вставляем полученную комбинацию). Далее, собственно, ограничиваем доступ:
    […]

Полезное дополнение, но в моей ситуации (дома) это не пригодилось.

  1. Ещё один момент, чтобы адрес rutorrent был вида http://localhost/rutorrent, нужно после установки rutorent запустить следующую команду

emerge творит чудеса, сие не требуется :slight_smile:
Ну и я не хожу на localhost на это и сервер.

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

Это я тоже забыл указать, спасибо.

  1. Ну и напоследок правим права на некоторые папки в rutorrent:
    […]

И это пропустил. Добавил

4. Вроде в начале про сервер написано было. У меня тоже дома на ноуте всё настроено, но тем не менее, можно снаружи всегда зайти и понаблюдать за работой rutorrent.
5. Последний раз я ставил месяца 3 назад, возможно довели до ума emerge. Кстати и у меня адрес что-то вида http://u-menya-doma.dyndns.org/rutorrent (адрес вымышленный).

А на декстоп как замутить rtorrent с такой симпатичной мордой? Скиньте, кто нить мануальчег?

Иван Платонов писал(а):

  1. Вроде в начале про сервер написано было. У меня тоже дома на ноуте всё настроено, но тем не менее, можно снаружи всегда зайти и понаблюдать за работой rutorrent.

Я настроил на сервере, захожу с десктопных компьютеров (ноутбуков)

  1. Последний раз я ставил месяца 3 назад, возможно довели до ума emerge. Кстати и у меня адрес что-то вида http://u-menya-doma.dyndns.org/rutorrent (адрес вымышленный).

Я не открывал наружу свою домашнюю сеть, но если надумаю, то обязательно воспользуюсь предложенным методом защиты.

Роман Гаврилюк писал(а):

А на декстоп как замутить rtorrent с такой симпатичной мордой? Скиньте, кто нить мануальчег?

всё тоже самое, разве что подключаться по http://127.0.0.1/rutorrent. Ну и нужен предварительно настроенный веб-сервер (например,apache) +php, что несколько накладно для десктопа, поэтому я бы не стал с этим заморачиваться и воспользовался другим клиентом, благо их навалом

Я установил по данной материал но у меня

(2:514)# /etc/init.d/rtorrentd status
* status: crashed

Помогите

Rosen Alexandrow писал(а):

Я установил по данной материал но у меня

(2:514)# /etc/init.d/rtorrentd status
* status: crashed

Помогите

Зайдите под пользователем rtorrent:
<<su - rtorrent>>
Выполните:
<>
Ошибки есть?

под конзоль работает но веб интерфейс нет.
http://imglink.ru/pictures/07-04-11/6b1bd5ee7fad4bb19aa364e0f62656b1.jpg

Файл конфигурации /home/rtorrent/.rtorrent.rc создавали?

(1:123)$ cat /home/rtorrent/.rtorrent.rc
# /home/rtorrent/.rtorrent.rc
port_range = 6925-6925
# Директория для хранения скаченного контента
directory = /media/storage/rutorrent
session = /home/rtorrent/.rtorrent-session/
load_start = /home/rtorrent/Свалени/*
scgi_port = 127.0.0.1:5000

Судя по картинке, не настроен апач или не прописан порт scgi, либо rtorrent собран без поддержки xmlrpc.
В общем должна быть следующая картина:

eix rtorrent
[I] net-p2p/rtorrent
     Available versions:  0.8.5 ~0.8.6 0.8.6-r1 ~0.8.6-r2 ~0.8.7 {daemon debug ipv6 xmlrpc}
     Installed versions:  0.8.6-r1(21:56:05 19.12.2010)(daemon ipv6 xmlrpc -debug)
     Homepage:            http://libtorrent.rakshasa.no/
     Description:         BitTorrent Client using libtorrent

Настройка апача:

cat /etc/apache2/modules.d/20_mod_scgi.conf
<IfDefine SCGI>
LoadModule scgi_module modules/mod_scgi.so

<Location "/RPC2">
        SetHandler scgi-handler
        SCGIServer localhost:5000
        SCGIHandler On
        Options -Multiviews
        AuthName "RPC2 Restricted Area"
        AuthType Basic
        AuthBasicProvider file
        AuthUserFile /var/www/tool/htpasswd/.rutorrent
        Require valid-user
</Location>
</IfDefine>

А сам rtorrent в консоли от обычного пользователя запускается?

[ebuild R ] net-p2p/rtorrent-0.8.7 USE=“daemon ipv6 xmlrpc -debug” 0 kB

Уже установлен с xmlrpc

От конзоль с обичним потребител запускается

А для каких таких нужд стоит версия 0.8.7?
На первой странице разработчиков (http://code.google.com/p/rutorrent/) написано:
Attention!
ruTorrent v 3.2 doesn’t support unstable version of rTorrent 0.8.7. Only revision 1189 and next are supported

Спасибо за статью по настройку rtorrent+rutorrent.
Для серверов она безусловно интересна.
Но думаю большинству пользователей десктопов не очень захочется поднимать и настраивать веб-сервер (кстати об этом - совсем не обязательно ставить монстра apache, с работой вполне справится lightpd, и настраивается он проще).

Вполне хватит deluge с веб интерфейсом.

Веб интерфейс добавляется плагином, плагин ставится из портежей

echo 'net-p2p/deluge webinterface' >>/etc/portage/package.use/using
emrge -avt1 deluge

Инфа по настройке пароля тут и тут
Для запуска демоном можно написать свой скрипт runscript, а можно использовать sys-process/daemontools.

Если все-же нужен rtorrent+rutorrent, но не хочется грузить комп апачем - стоит подмать об lighttpd с ключем php. Либо с nginx+spawn-fcgi

Прикладываю свой старый конфиг для lighttpd. Он еще с тех времен когда rutorrent небыло в портежах, так что возможно пути придется исправлять.

Также я не заморачивался с именами урлов, так что доступ к rutorrent по адресу /rurt, а к скачаному /rurf
Так что оба урла подпадают пд маску /rur, что и используется для аторизаци auth.require = ( “/rur” =…
Желающие могут переделать урл и пути под свои условия.

Чтоб все работало достаточно положить этот конфиг в /etc/lightpd и дописать в конец файла /etc/lighttpd/lighttpd.conf

include "rutorrent.conf"

Собственно сам конфиг rutorrent.conf:

include "mod_fastcgi.conf"
server.modules+=( "mod_scgi" )
scgi.server=(
    "/RPC2" => ("127.0.0.1"=> (
##      "socket" => "/home/rtorrent/rpc.socket",
##      "disable-time" => 0,
        "host" => "127.0.0.1",
        "port" => 5000,
        "check-local" => "disable"
    ))
)

alias.url+=( "/rurt"=>"/home/rtorrent/rutorrent/" )
alias.url+=( "/rurf"=>"/home/rtorrent/download/" )
$HTTP["url"] =~ "/rurf/"{
        dir-listing.activate = "enable"
}

server.modules+=( "mod_auth" )
auth.debug = 2
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/home/rtorrent/.httpass"
auth.require = ( "/rur" =>("method" => "basic", "realm" => "", "require" => "user=User_from_httpass_who_have_acces_here" ))

PS
Синтаксис файла с логинами:паролями .httpass аналогичен апачевому.

PPS
Поскольку веб-интерфейс deluge является плагином, он интегрирован “глубже” и позволяет более гибко настраивать права, детали по ссылкам выше.

Иван Платонов писал(а):

А для каких таких нужд стоит версия 0.8.7?
На первой странице разработчиков (http://code.google.com/p/rutorrent/) написано:
Attention!
ruTorrent v 3.2 doesn’t support unstable version of rTorrent 0.8.7. Only revision 1189 and next are supported

[I] net-p2p/rtorrent
Available versions: [m]0.8.5 [m](~)0.8.6\ [m]0.8.6-r1\ (~)0.8.6-r2 [m](~)0.8.7 {daemon debug ipv6 xmlrpc}
Installed versions: 0.8.6-r2( 9,44,28 8.04.2011)(daemon ipv6 xmlrpc -debug)

я установил 0.8.6, и у меня уже есть проблем

Иван Платонов писал(а):

А для каких таких нужд стоит версия 0.8.7?
На первой странице разработчиков (http://code.google.com/p/rutorrent/) написано:
Attention!
ruTorrent v 3.2 doesn’t support unstable version of rTorrent 0.8.7. Only revision 1189 and next are supported

emerge лучше знает:

net-p2p/rtorrent
     Available versions:  0.8.5 ~0.8.6 0.8.6-r1 ~0.8.6-r2 ~0.8.7 {daemon debug ipv6 xmlrpc}
     Installed versions:  0.8.6-r1(12:51:27 02.04.2011)(daemon xmlrpc -debug -ipv6)
     Homepage:            http://libtorrent.rakshasa.no/
     Description:         BitTorrent Client using libtorrent

[I] www-apps/rutorrent
     Available versions:  (3.2) (~)3.2
        {vhosts}
     Installed versions:  3.2(3.2)(23:34:08 01.04.2011)(-vhosts)
     Homepage:            http://code.google.com/p/rutorrent/
     Description:         ruTorrent is a front-end for the popular Bittorrent client rTorrent

P.S. Для ленивых - всё уже придумано до нас в Calculate Media Center

Вообще, где мануалы по использованию CMC для чайников??? :slight_smile: Ну нет у мну возможности посмотреть его (не на чем пока), а почитать по инструкциям становится понятно имеет ли всё это смысл.

Сергей Клюйков писал(а):

P.S. Для ленивых - всё уже придумано до нас в Calculate Media Center

Вообще, где мануалы по использованию CMC для чайников??? :slight_smile: Ну нет у мну возможности посмотреть его (не на чем пока), а почитать по инструкциям становится понятно имеет ли всё это смысл.

а в чём должна заключаться возможность? :slight_smile: Я не ставлю за ненадобностью, не знаю как там сделано…