27 марта 2010 в 19:13

Установка и настройка rTorrent в Debian tutorial

Torrent file iconDebian logorTorrent — еще один из самых популярных torrent клинтов в мире Unix-подобных операционных систем (о Transmission я уже написал несколько ранее). При создании этого клиента, по заявлению автора, во главе угла стояли «высокая производительность и хороший код», а использование mmap для отображения файлов в память позволяет добиться на широкополосных каналах трехкратного преимущества перед официальным клиентом. Еще одной характерной чертой rTorrent является наличие множества различных web-интерфейсов «на все вкусы» для удаленного управления. Именно об установке и настройке всего этого я и хочу рассказать на этот раз.

Установка rTorrent


При установке rTorrent я буду предполагать что все действия производятся в последней версии Debian (на момент написания статьи 2010-03-27 это Debian Lenny). Часто, при использовании этой ОС люди выбирают либо стабильную ветку ропозиториев, либо тестовую и отличаются они версиями, содержащихся в них, пакетов. К сожалению, в стабильной ветке находится пакет rtorrent версии 0.7.9 в то время как новейшая версия уже достигла номера 0.8.6. В связи с этим, я расскажу об установке новейшей версии rTorrent отдельно для тестовой, и отдельно для стабильной веток репозиториев.

Установка rTorrent при стабильной ветке репозиториев Debian


В прошлый раз, при описании установки новейшей версии Transmission, я воспользовался компиляцией из исходиков что справедливо вызвало бурю негодований и критики :) В этот раз я покажу как добиться желаемого результата не прибегая к помощи компилятора.

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

Для этого, в файл /etc/apt/sources.list нужно добавить тестовые репозитории:

deb http://ftp.ua.debian.org/debian/ testing main
deb http://security.debian.org/ testing/updates main

Я добавлял украинское зеркало, вы же, выбирайте более подходящее вам в зависимости от географического положения или личных предпочтений ;)

Следующим шагом создадим файл /etc/apt/preferences и зададим в нем приоритеты для репозиториев таким образом, чтобы по-умолчанию выбирались пакеты из стабильной ветки:

Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650

Теперь нужно обновить список доступных пакетов:

# aptitude update

И выполнить установку последней доступной версии rTorrent:

# aptitude -t testing install rtorrent

где опцией "-t" мы явно задали использование тестового репозитория для установки данного пакета.

Далее переходим к настройке rTorrent.

Установка rTorrent при тестовой ветке репозиториев Debian

Tux
Если же у вас система изначально настроена на использование тестовой ветки репозиториев, то установка, в вашем случае, сводится всего к одной команде:

# aptitude install rtorrent

После этого можно переходить к настройке rTorrent.

Настройка rTorrent


Создаем файл с настройками ~/.rtorrent.rc подобный этому:

# Диапазон рабочих портов torrent клиента.
# Если вы за NAT не забываем "пробросить" порты
port_range = 32001-32049

# Включаем DHT
dht = auto
# UDP порт для DHT
dht_port = 32000
# Обмен пирами
peer_exchange = yes

# Использовать ли UDP трекеры
use_udp_trackers = yes

# Директория в которую по-умолчанию будут загружаться файлы
directory = /arch/.Downloading/

# Глобальные ограничения по скорости
upload_rate = 80
download_rate = 800

# Директория для записи сессий rTorrent
session = /home/username/.rtorrent_session

# Задаем настройки для rpc управления
scgi_port = 127.0.0.1:5000

Создаем папку для хранения сессии rTorrent:

$ mkdir .rtorrent_session

Вообще же, я привел лишь базовые настройки rTorrent. Более подробно о настройках этого замечательного torrent клиента можно прочитать вот тут, тут и тут.

Настройка автозагрузки rTorrent


Для того, чтобы rTorrent автоматически запускался при старте машины нужно выполнить несколько несложных действий. Вначале, установим screen, необходимый для обеспечения работы torrent клиента в фоне:

# aptitude install screen

Затем загрузим стартовый скрипт:

# cd /etc/init.d/
# wget http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh

Редактируем файл и указываем имя пользователя от которого будет запускаться rTorrent:

user="user"

Делаем файл исполняемым:

# chmod +x rtorrentInit.sh

Задаем владельцем файла системного пользователя root:

# chown root:root rtorrentInit.sh

Включаем «автозагрузку»:

# update-rc.d rtorrentInit.sh defaults

Все, теперь демон можно запустить выполнив вот такую команду:

# /etc/init.d/rtorrentInit.sh start

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

web-интерфейсы

konqueror
Для работы web-интерфейсов, как вы уже наверняка догадались, требуется web-сервер. Это может быть как Apache, так и Lighttpd, а, вполне вероятно, и какой-либо другой. Однако, для определенности, я буду рассматривать все примеры на базе Apache. Если у вас не установлен web-сервер, то следующий пункт для вас, иначе же — вы волны его просто пролистать.

Установка Apache


Для установки Apache необходимо выполнить несколько простых команд. Начнем с установки самого web-сервера и необходимого для удаленного управления rTorrent модуля scgi:

# aptitude install apache2 libapache2-mod-scgi

Задаем настройки модуля в файле /etc/apache2/httpd.conf:

SCGIMount /RPC2 127.0.0.1:5000

и включаем его:

# a2enmod scgi

Далее, устанавливаем PHP:

# aptitude install php5 php5-common libapache2-mod-php5 php5-curl

и перезагружаем Apache:

# apache2ctl restart

После установки Apache переходим к рассмотрению различных web-интерфейсов к rTorrent.

wTorrent


Для своей работы wTorrent требует базу данных sqlite. Установим ее:

# aptitude install sqlite3 php5-sqlite
# apache2ctl restart


Теперь загружаем непосредственно сам wTorrent:

# cd /var/www/
# svn co svn://wtorrent-project.org/repos/trunk/wtorrent/

Задаем права доступа для web-сервера:

# chown -R www-data:www-data ./wtorrent/

Далее направляем браузер по адресу http://<ваш IP адрес>/wtorrent/install.php и настраиваем аналогично этому скриншоту:

wtorrent install
(Кликни для увеличения)

Обязательно, в целях безопасности, удаляем файл install.php:

# rm wtorrent/install.php

А теперь можно и оценить результат перейдя по адресу http://<ваш IP адрес>/wtorrent/:

image
(Кликни для увеличения)

ruTorrent


Для настройки ruTorrent скачаем последнюю версию из SVN:

# cd /var/www/
# svn checkout http://rutorrent.googlecode.com/svn/trunk/rutorrent


И зададим права доступа для web-сервера:

# chown -R www-data:www-data ./rutorrent/

Теперь чтобы открыть только что установленный ruTorrent нужно направить браузер по адресу http://<ваш IP адрес>/rutorrent/. И вот как он выглядит:

ruTorrent
(Кликни для увеличения)

ruTorrent
(Кликни для увеличения)

Так же не могу не отметить что под ruTorrent существует множество полезных плагинов заметно расширяющих стандартные возможности. Так, с помощью плагинов можно реализовать обработку RSS лент, учет трафика, ограничение скоростей по расписанию и многое другое. Полный список плагинов находится здесь. Я же покажу процесс установки плагина на примере Tracklabels который будет автоматически добавлять метки в зависимости от трекера закачки.

# cd /var/www/rutorrent/plugins/
# svn checkout rutorrent.googlecode.com/svn/trunk/plugins/tracklabels
# chown -R www-data:www-data /var/www/rutorrent/plugins/


При этом все остальные плагины добавляются аналогично. А посмотреть на результат установки плагина можно сразу же после обновления странички в браузере:

image
(Кликни для увеличения)

И еще одной, ну просто восхитительной, задумкой блеснул ruTorrent. А именно, в нем появляются зачатки многопользовательской работы где каждому человеку привязан свой экземпляр torrent клиента со своими собственными, ни от чего не зависящими настройками и ограничениями (к примеру по скорости). Более детально об этом можно прочитать по следующей ссылке:
forums.rutorrent.org/index.php?topic=87.0

Другие web-интерфейсы и программы для удаленного управления


На описанных мною web-интерфейсах список вовсе не заканчивается. Их не так уж и мало создано и разрабатывается. Список самых популярных можно посмотреть на официальном сайте rTorretn'а: libtorrent.rakshasa.no/wiki/UtilsList

И снова об автоматизации загрузок


Не забываю снова и снова напомнишь о такой удобной штуке как автоматизация загрузок ваших любимых сериалов с RSS лент различных трекеров. И несмотря на то что описанные выше web-интерфейсы имеют либо встроенные средства для обработки RSS лент (wTorrent), либо расширяются соответствующими плагинами (ruTorrent) этих средств, к сожалению, не всегда хватает. Более детально ниже:
  • Я уже как-то писал на эту тему вот тут (на примере LostFilm'a) и вот тут (на примере Кинозала). Оба решения реализованы в виде shell команд и основаны на grep, wget, curl;

  • Кроме того, еще один способ автоматизации с помощью FlexGet описывал Alukar вот тут;

  • И еще один вариант обработки RSS лент с помощью Yahoo Pipes рассмотрен хаброчеловеком AmoN вот в этом посте.
Так же помощниками в этом вопросе могут стать следующие два замечательных сервиса, уже описанные на Хабре: tvfёdor и Kinobaza.tv.

Тюнинг rTorrent при больших нагрузках


Про более тонкие настройки rTorrent при больших нагрузках можно прочитать как на официальном сайте, так и в комментариях пользователей:
  • Совет по использованию памяти от WoZ

%username%, а как ты протюнил свой rTorrent конфиг?

UPD. Добавил раздел про тюнинг rTorrent при больших нагрузках.
Лабинский Николай @Labinskiy
карма
125,0
рейтинг 0,0
Самое читаемое Администрирование

Комментарии (35)

  • 0
    Спрашивайте, критикуйте… :)
    • +1
      А sequential download умеет делать?

      P.S. Я знаю что для протокола это вредно, но все же при не очень хорошем канале наличие данной возможности очень радует :-)
      • 0
        К сожалению, пока еще не задавался таким вопросом. Однако uTorrent это уже умеет. Подробности в этом топике: habrahabr.ru/blogs/p2p/87632/
        • 0
          Да я знаю и про uTorrent и qBittorrent, но неохота их ставить на домашнию файлопомойку. libtorrent.rakshasa.no/ticket/1400 походу не поддерживает :-(
    • +2
      rtorrent + rutorrent = самая сильная пара, без конкурентов, думаю wtorrent можно было и не описывать ;)
      • +2
        а я вот остановился на консольном варианте, хотя rutorrent стоит пощупать, уж больно интерфейс привычный )))
        • 0
          Да, консольный сначала кажется м… не очень удобным, если выражаться очень сдержанно. :) Но потом где-то привыкаешь, где-то разбираешься, где-то что-то автоматизируешь — и получается весьма удобная и ленивая штука. И никакие веб-интерфейсы сделать жизнь ещё удобнее уже не могут. Кроме того, не хочется мне php ставить, даже ради rutorrent.

          Сейчас всё настроено примерно так: скачиваемый .torrent сохраняется Opera-ой в определённый каталог, автоматически начинается закачка, по завершении закачки в углу экрана всплывает уведомление. В интерфейс rtorrent-а заглядываю только для того, чтобы: увеличить/уменьшить доступную ему ширину канала, указать приоритеты/отключить выкачку части файлов в конкретном торренте, удалить торрент, глянуть через сколько минут приедет следующий файл.

          Что касается RSS и сериалов — я эту проблему решил очень просто: ненавижу смотреть по одной серии в день/неделю! Поэтому жду, а потом выкачиваю сразу либо весь сезон, либо пол сезона (и через пол года вторые пол сезона). И никакой возни с RSS.

          Все эти интерфейсы очень сильно перегружены фичами, и за счёт этого переусложнены.
    • +2
      я бы добавил, что стоит потюнить конфиг rtorrent. у меня при стандартных настройках он не влезал в 512мб памяти, выдавал спустя некоторое время File chunk write error: Cannot allocate memory

      происходит это когда много используется слотов закачки/отдачи — дефолтные значения буферов по 4мб, простая калькуляция показывает, что при 100 активных слотах уже откушается 400мб памяти.

      чтобы избежать данной проблемы выставляем в конфиге
      send_buffer_size = 1M
      receive_buffer_size = 1M

      ну или меньше (в зависимости от доступной памяти и потребностей)

      • 0
        у меня более 180 торрентов, однако я ничего не менял в настройках и 512 мегабайт вполне хватает, кроме моментов когда кешируется свежезакачанный торрент большого объема. если изменить настройки на 1М это ухудшит что либо или даст только выйгрыш по памяти?
        • 0
          обращение к диску чаще.
          не сталкивались потому что у вас не было больше 100 пиров одновременно. может лимиты стоят на суммарное количество пиров и не выделяется столько памяти. если поставить пару закачек на TPB с несколькими сотнями пиров — тогда увидите)

          з.ы. проверку скачанного файла можно отменить. в конфиге ставьте
          check_hash = no
  • –2
    Отказался от rtorrent в пользу Deluge — гораздо более приятная вещь.
    • 0
      Обещать не буду, но, возможно, в будущем напишу и про Deluge ;)
      • +1
        А смысл? Там есть что-то «сокровенное» о чём надо писать? Ну, кроме web морды.
  • 0
    Я и не заметил когда третья версия руторрента вышла. Как реализован там многопользовательский режим?
    Создаешь конфиг и директорию и заходишь seedbox.blablabla.ua/user/wonslung? Видны ли торренты соседей?
    • 0
      Нет, торренты соседей не видны т.к. по сути, каждый пользователь работает со своей копией torrent клиента.
  • 0
    Отличная инструкция… Несмотря на то, что в одно время отказался от rtorrent в пользу Deluge, в последнее время все собирался потестить rutorrent… Инструкция ваша прямо к месту…
  • +1
    ruTorrent — это очень правильно, до этого у меня стоял хваленый многими wTorrent — так он на добрую половину .torrent-файлов ругался, дескать «This is not a torrent file». С ruTorrent такой проблемы нет.

    Единственный его минус — это отсутствие собственного модуля авторизации. Впрочем, сие решается еще парой строчек в конфигурации веб-сервера, а там со временем наверняка и свою сделают.
    • 0
      Кинь пожалуйста ссылку или здесь расскажи про пару строчек в конфигурации для авторизации
      • +2
        location / {
        auth_basic «Login»;
        auth_basic_user_file /sites/rutorrent/htpasswd;
        proxy_pass 127.0.0.1:8090;
        }


        так у меня сделано для nginx, он обслуживает все сайты, крутящиеся на сервере, и только rTorrent проксируется в lighttpd. Признаться, не знал про вариант с xml-rpc, изложенный выше, надо будет заняться перенастройкой. А сам htpasswd-файл — это apache-like файл с хешами. Но даже в случае перенастройки ничего существенного в плане авторизации не изменится.
        • 0
          Благодарю, поковыряюсь.
      • 0
        Про настройку авторизации в Apache можно прочитать на официальном сайте:
        httpd.apache.org/docs/2.0/howto/auth.html
    • +1
      This is not a torrent file это ошибка в самом wtorrent у них в багзилле она есть и есть патч как её убрать
      • 0
        есть еще один «прикол» в связке w+r. когда w говорит — «всё нармуль. будем работать», а r в screen кидает «bad bencode data» :) и не кушает файлик. (хотя в 0.9.3 кушал, но на закрытых трекерах «torrent not registered») хотя мюТор нормально всё качал.
        у меня друг половину интернетов обкАпал. оказалось проблема трекера. + немного бага в мюТоре :)
        хорошая треда получилась ракшаса-против-мюДевов. и ракшаса оказался прав.
        всё было в неправильном расположении полей торрент-файла (не по алфавиту). мю считал хеши «как есть в файле», а подовлющее большинство «более других тор-качалок» или «сортировало, а потом считало»(вузе, трансмишшн, делюге, битТорнадо, что в общем случае приводло в несовпадению хеша) или «не кушало»(рторрент)
        согласились в мю выводить сообщение, что дескать «качайте на свой страх и риск».
  • +3
    Веб-морду под nginx-jом не настроить — не умеет он scgi нативно. Есть лишь модуль для старой ветки.
    Можно использовать консольный XML-RPC-клиент и работать через сокет, для этого надо закомментировать scgi_port и добавить строчку с командой scgi_local:
    # scgi_port = localhost:5000
    scgi_local = /tmp/rtorrent-rpc.socket

    Для адептов консоли есть родной ncurses-клиент, отличная вещь, работает в screen. Однако, рторрент в работе использует горячие клавиши (^q — выход, ^s — старт закачки/раздачи), которые забиндены для управления потоком. Поэтому в .[bash]rc пользователя из-под которого стартует rtorrent лучше сразу добавить:
    stty start undef && stty stop undef
    Есть еще полезная и поучительная статья по rTorrent на ВикиУчебнике: ru.wikibooks.org/wiki/RTorrent
    • 0
      Возможно, в этом случае поможет плагин для ruTorrent RPC который служит для замены модуля веб-сервера mod_scgi и выполняет функции последнего.
  • +2
    Первая мысль — как-то всё сложно. Вторая — пост должен состоять из ссылки на скрипт который сделает всё хорошо. Третья мысль — спасибо. *Ушёл вчитываться как WIN7 попала в пост про торренты и дебиан*
    • +1
      Возможно debian с r(u)torrent'ами установлены на NAS'е, а управление происходит с любой машины в локалке.
      • +1
        Так и есть. Debian установлен на домашнем медиасервере а управление возможно не только из любой машины в локалке а вообще с любой машины, подключенной к и-нету. Я, к примеру, частенько на работе добавляю новые закачки на домашний медиасервер, а как прихожу домой они уже скачаны и их можно смотреть ;)
  • +2
    Пробовал rTorrent + ruTorrent связку — очень классная.

    Отказался в сторону transmission-cli + Clutch (мануал взят отсюда) т.к. ОЗУ на torrent-машинке всего 256Mb + этой связки вполне хватает под мои раздачи (20-25 раздач больше одновременно не бывает).
    • +1
      Clutch уже достаточно давно влился в основную ветку transmission и теперь называется Transmission Web Client.

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

      Для тех, кто не гнушается пользоваться тестовым репозитарием, самый беспроблемный способ — ставить из него. Я не гнушаюсь (на домашней машине) — работает на ура. Из пакетов можно поставить и веб-интерфейс, и демона. Останется только настроить конфиг.

      Ну, или можно собрать свежий transmission самостоятельно. Автор статьи об этом уже писал.
  • +1
    Плагин tracklabels для ruTorrent умеет раскладывть закачки в разные каталоги согласно меткам, которым они принадлежат?

    В свое время перековырял кучу торрен кочалок, для поднятия на работе корпоративной :) качалки. Основной критерий — авторизация и то что я написал выше. В итоге были перепробываны — rtorrent + (wTorrent), torrentflux, torrentflux-b4rt, deluge, transmission. Потом мне все это надоело и я поставил uTorrent + WinXp. \

    Если этот плагин действительно работает, я возможно пересмотрю некоторые моменты.
    • +1
      Нет, данный плагин только задает метки. Однако советую обратить внимание на Autotools, возможно этот вариант вам и подойдет ;)
  • 0
    а список пиров можно скопировать?

    188.162.172.230:50263
    195.46.111.107:16113
    85.21.240.8:60656
    95.182.104.43:36422
    87.117.163.241:31519

    и т.п.
  • 0
    В случае, если rTorrent при старте начинает пересчитывать хэш закачек, несмотря на явное указание директории для сессий, нужно добавить в .rtorrent.rc строку «session_save = yes».
  • 0
    Замечательно
    Жаль, что не натыкался на это руководство раньше, когда у себя поднимал.
    Мой вариант настройки связки rTottent+ruTorrent под Ubuntu Server 8.04 здесь

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