войти зарегистрироваться

Linux для всех whois

индекс
181,26

wTorrent — web-based bittorrent клиент для Linux\BSD

wTorrent — удобная графическая web-морда к популярному консольному клиенту rTorrent.

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

Здесь я опишу как установить надстройку над ним для управления своими торрентами через Интернет.

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



Системные требования:

Консольный torrent-клиент rTorrent, собранный с поддержкой xmlrpc и scgi-управления.
Web-сервер с поддержкой SCGI (lighthttpd или apache).
PHP5 с поддержкой PDO и XML-RPC.

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

Для начала включим USE-флаги:

net-p2p/rtorrent xmlrpc daemon
dev-lang/php pdo xmlrpc sqlite


Устанавливаем ПО.


emerge net-p2p/rtorrent dev-lang/php www-servers/apache www-apache/mod_scgi

По зависимостям установятся xmlrpc-c, scgid и libtorrent.

Настройка rTorrent.


Создадим пользователя rtorrent для функционирования клиента в качестве демона:

addgroup rtorrent
adduser -d /PATH/TO/DOWNLOADS -m -p password -g rtorrent rtorrent


Pедактируем /etc/conf.d/rtorrent, заменив $USER на имя нашего пользователя.

Создадим конфигурационный файл rtorrent и впишем в него нужные настрйоки.

cd /path/to/downloads
echo "scgi_port = localhost:5000" >> .rtorrent.rc
chown rtorrent:rtorrent


Настройка клиента закончена, запустим его командой /etc/init.d/rtorrent start

Настройка web-сервера.


Отредактируем /etc/conf.d/apache2, добавив туда такое (если строка уже есть, дописать новые параметры в конец):

APACHE2_OPTS="-D PHP5 -D SSL -D SCGI"

Приведем /etc/apache2/modules.d/20_mod_scgi.conf к виду (убрав мои кавычки, без них парсер съедает код):

"<"IfDefine SCGI">"
LoadModule scgi_module modules/mod_scgi.so

SCGIMount /RPC2 127.0.0.1:5000
"<"Location /RPC2">"
AuthName "Private Remote Procedure Call"
AuthType Basic
AuthBasicProvider file
AuthUserFile /path/to/webroot/htpasswd
Require user remotecall
"<"/Location">"

"<"/IfDefine">"


Создаем htpasswd:

htpasswd -c /path/to/webroot/htpasswd remotecall

Установка wTorrent


Качаем архив: www.wtorrent-project.org/trac/changeset/latest/trunk/?old_path=%2F&format=zip

Распаковываем.

Заходим на servername/install.php и следуем советам указанным там.

Если все сделано правильно, мы увидим вот такой интерфейс :)

image

комментарии (88)

  • А как там обстоят дела с русскими именами и файлами больше 2Г? Просто под фрей и то, и другое — геморрой. xmlrpc и rtorrent мне пришлось пересобирать самому (вместо портов) чтобы решить проблему 2Г. А русский так и глючит — некоторые имена просто крашат rtorrent при попытке обратиться к ним через xmlrpc. Правда, я в качестве морды использую rtGui, но не думаю, что проблема именно в нем.
    • а что за проблема с файлами более 2х гигов?
      • Размеры файлов неправильно показывает. Тот xmlrpc, который у фри в портах, использует маленькие int. Чтобы получить правильный размер надо брать из репозитория advanced-версию.
        • вообщем штука не подходит для России, без патча падает если трекер возвращает ошибку на русском. названия файлов сохраняет(русские) ??????
          • Именуют торренты по-русски только извращенцы, imho.

            Надо сказать что падает не всегда. У меея падало один раз вроде. Да ну и фс должна уметь писать по русски естественно.
            • По моему извращенцы это те, кто пишут программы так, что они падают от наличия не-latin символов в именах данных.
              • А почему программа должна поддерживать какую-то кодировку win1251? А 99% торрентов с русскими именами именно в этой кодировке. С юникодом там вроде всё в порядке.
                • > А почему программа должна поддерживать какую-то кодировку win1251? А 99% торрентов с русскими именами именно в этой кодировке.

                  Именно поэтому.
                  • А норвежскому парню не пофигу на это дело? :)
              • А по моему извращенцы используют cp1251 в 2009 году. Хватит насиловать труп.

                На каждую кодировку поддержку писать — глупо. Тогда надо и cp1251 (windows xp), и UTF-8 (Linux\FreeBSD), и KOI8 (OpenBSD) и даже CP866 (А вдруг?).

                При том, что автор программы — не из России, а за рубежом cp1251 практически не распространена, давно везде юникод.
                • Не надо «писать поддержку», вполне достаточно обеспечить, чтобы программа не падала.
                  • >некоторые имена просто крашат rtorrent при попытке обратиться к ним через xmlrpc.

                    >падает если трекер возвращает ошибку на русском

                    Падает, насколько я понял, если трекер возвращает ошибку по-русски. Или при обращении к русскому торренту через _xmlrpc_. И виноват в этом не rTorrent, а фряшный xmlrpc-c, ибо в линуксе все отлично работает.

                    Русская ошибка в протоколе общения клиент-сервер, да еще и при работе не в Unicode — это бред. Так делать _нельзя_ и за такое нужно обрывать руки автору трекера, а не клиента. Это потенциально выдает феерические глюки под не-интернациональными системами, например в OpenBSD, где близко нет юникода и вообще все очень туго с локалями.

                    Не задумывались, почему почтовые сервера возвращают ошибки (rejected, redirected, unavail и т.д.) на английском и только на английском?
                    • Еще раз:
                      Конечно же делать вывод в нестандартном виде это плохо.

                      Но еще более плохо писать программы так, что она падает всего лишь получив на вход какие-то данные в неожиданном для себя виде.
    • Под линуксом — и то и другое ок.
      Под фрей русский не тестировал, не попадалось таких торрентов.
    • Странно, у меня фря шестая, ставил давно, никаких проблем у wTorrenta ни с русскими файлами, ни с размерами нет.
      • У меня фря 7. Проблемы были давно и продолжались долго. В конце концов я не выдержал и пересобрал все. Не исключаю, что в портах тоже наконец исправили.
    • мне пришлось rtorrent патчить а то он падал от некоторых файлов с русскими именами, а так все отлично.
      • Во, а технологией не поделитесь? Что именно патчили?
        • не помню откуда брал патч поэтому копирую его прямо в коммент
          — rtorrent/src/rpc/xmlrpc.cc (revision 1078)
          +++ rtorrent/src/rpc/xmlrpc.cc (working copy)
          @@ -371,8 +371,34 @@
          #endif
          case torrent::Object::TYPE_STRING:
          — return xmlrpc_string_new(env, object.as_string().c_str());
          + {
          +#ifdef XMLRPC_HAVE_I8
          + // The versions that support I8 do implicit utf-8 validation.
          + xmlrpc_value* result = xmlrpc_string_new(env, object.as_string().c_str());
          +#else
          + // In older versions, xmlrpc-c doesn't validate the utf-8 encoding itself.
          + xmlrpc_validate_utf8(env, object.as_string().c_str(), object.as_string().length());
          + xmlrpc_value* result = env->fault_occurred? NULL: xmlrpc_string_new(env, object.as_string().c_str());
          +#endif
          +
          + if (env->fault_occurred) {
          + xmlrpc_env_clean(env);
          + xmlrpc_env_init(env);
          +
          + const std::string& str = object.as_string();
          + char buffer[str.size() + 1];
          + char* dst = buffer;
          + for (std::string::const_iterator itr = str.begin(); itr != str.end(); ++itr)
          + *dst++ = ((*itr < 0x20 && *itr != '\r' && *itr != '\n' && *itr != '\t') || (*itr & 0x80))? '?': *itr;
          + *dst = 0;
          +
          + result = xmlrpc_string_new(env, buffer);
          + }
          +
          + return result;
          + }
          +
          case torrent::Object::TYPE_LIST:
          {
          xmlrpc_value* result = xmlrpc_array_new(env);
          • Спасибо, попробуем. А еще вопрос: xmlrpc-c у вас какой? Текущий из портов или что-то свое?
            • xmlrpc у меня из svn а портов у меня нет, я это под дебианом держу:)
          • Отлично, все заработало. Размер файлов, действительно, теперь показывает правильно. Насчет русских имен пока не пробовал, но радует уже то, что запустилась портовая версия — не надо геморроиться со сборкой из репозитория.

            Еще раз спасибо.
  • А мне больше ruTorrent нравится. Красивее и фич больше
    • lolwhat? Это гибрид uTorrent и rTorrent?
      Нигде такого не встречал.
  • а вы проболи wtorrent открывать в IE8? это же ужос:) интересно у кого проблемы — МС не поддерживает стандарты как бещал и wtorrent не по стандартам написан?
    • Слава Б-гу, не пробовал. У меня нет IE8, как и винды вообще :)

      А что там ужастного? Скриншотиком не поделитесь? Интересно просто.
      • wtorrent.png - image uploaded to Picamatic
        • В «семерке» все нормально показывает (IE8)
  • Спасибо автору за статью, так же советую посмотреть в сторону deluge мне лично показался проще и удобнее
    • Ага, месяц юзаю deluge — очень приятная вэб-морда, но Ajax вариант пока что не всё умеет, в частности — добавление торрентов у меня работает только переключившись на Classic.
      • Слышал, что он прожорливый к ресурсам очень. Нет?
        • Да, достаточно прожорливый, демон плюс ГУИ где-то за 100Mb весят.
          • Ужас. И зачем это нужно всё?
            • Дык междумордие приятное до безобразия)
              • Не представляю что там может быть на 100 мегов. Или это как неро, со втронным варщмком кофе? :)
      • Согласен, ajax тема еще плохо доработана, тоже раньше переключался, а сейчас добавляться начало, правда не через вставку url, а через подгрузку самого файла торрента, раза со второго, с третьего, попробуйте, если что скину скриншоты
        • Он у меня на тестовой машинке болтается так что руки пока не доходят серьёзно изучать что там не так и почему.
  • Под MacOS X Server 10.5 PPC отлично устанавливается и работает, правда был сильный гемморой со сборкой xmlrpc, пересборкой самого rtorrent под ppc (хотя спасибо macports). Но вцелом очень хорошо.
  • А старательно минусящие топик не хотят сказать, что им не понравилось? :)
  • Стоит на сидбоксе дома под FreeBSD. Нареканий особых нет, разве что

    1) чтото не особо он развивается последнее время… коммитов в свне нет давно. Так и торчит на 99ой ревизии
    2) памяти ест много очень; на 1000+ пирах часто медленно качает из-за ошибок:
    «file chunk write error cannot allocate memory»
    хотя в конфиге прописал
    max_memory_usage = 1200288000
    и в /boot/loader.conf:
    kern.maxdsiz=«2147483648»

    Думаю попробовать transmission-webgui
    • У меня друг сталкивался с похожей проблемой, говорит это специфично для фряхи.
  • Если не ошибаюсь (у себя ставил год назад) то rTorrent не поддерживает (не поддерживал) демонизацию, то откуд взялся в init.d файл запуска. Видать чтото пропустил за это время.

    PS сам использую связку screen+rtorrent+wtorrent+самописную тулзу в трее )
    • Он так и не потдерживает, просто init скрипт, как раз и запускает его через screen. В Gentoo скрипт готовый после установки, а в Archlinux, например — можно найти готовый и положить куда следует.
      • Думаю тогда автору надо было упомянуть об этом, для полноты инструкции.
      • 2.6.29-gentoo-r3
        нету :(
        • После emrge rtorrent в /etc/init.d/rtorrentd нету?
          Сейчас немогу проверить, возможно поставил пакет из тестовой ветки (~x86)
          • да

            net-p2p/rtorrent-0.8.4-r1
            • /etc/init.d/rtorrentd — только если собиралось с USE флагом daemon. Это простенький скрипт, сводящийся к «screen — -dmS rtorrentd rtorrent».
              • собирал как в мане выше, с xmlrpc и daemon
              • на гунтру есть скрипты, копирнул, поправил, запустился
                • А что за гунтру такой. Гугление ниасилил, несмог угодать, как пишется.
                  • в темноте кнопочки плохо видно :)
                    gentoo.ru/
                    • Тогда понятно, гугель эту страницу с коментами ещё не успел проиндексировать, а то бы меня сюда отправил бы по запросу (гунтру) :)
                  • www.gentoo.ru/node/7554
  • спасибо, в своё время так и не смог его завести6 в итоге поставил n2hell, правда с течением времени всё-равно перестал пользоваться веб-интерфейсом и по ссш рулю
    • а не подскажите — как решить вопрос — mod_scgi masked в портах генты…
      • echo «www-apache/mod_scgi ~x86» >> /etc/portage/package.keyword
        • да, уже разобрался, пасибо
  • А зачем XML-RPC? Почему не более простой RESTfull?
    • а зачем? XML-RPC тоже довольно прост и при этом функциональней
      • XML-RPC сложнее, раз вам требуются библиотеки :). RESTfull их не требует. Ему даже XML-парсер не нужен. Так что в итоге веб-интерфейс имел бы меньше зависимостей. Про функциональность не совсем верно в данном случае.
        • Можно не использовать библиотеку и изобретать велосипед, но для работы REST требуется вебсервер как минимум, что есть тоже дополнительный компонент.

          Про функциональность, не силен в REST, но можно ли там реализовать multycal, сложные вызовы с логикой (доступна команда if).
          • Для XML-RPC веб-сервер тоже нужен ;)
          • Про multicast я точно не понял, что вам нужно. Несколько вызовов в одном HTTP-запросе? Вызовы с if? Зачем это? Делайте if либо на стороне клиента, либо создавайте доп. URL. Умножение сущностей без необходимости — зло.
            • именно так, иногда удобно завернуть несколько вызовов в один, что позволит ускорить обработку, если необходимо обрабатывать множество объектов. По такому принципу идет опрос состояния торентов в wTorrent.

              • Ничто не мешает вам послать несколько HTTP запросов в одном соединении, однако я бы сделал отдельный ресурс /status, который при GET запросе возвращал бы JSON (или XML при запросе /status.xml или текст при /status.txt).
              • Т. е. в консоли в консоли можно было бы написать
                wget localhost/status.txt | grep Some torrent name
          • Основная идея REST — это как раз упрощение самой системы RPC, потому что что любую логику можно реализовать с помощью идеологии ресурсов и обычных HTTP-запросов.
  • мне больше нравиться rtquit, хотя особых отличий нет. если ты часто вне дома, тогда рационально использовать веб-морды, а так меня вполне устраивает и интерфейс rtorrent'a.
    по поводу xmlrpc, у меня этот пакет требует cmake, так что какая разница с ним или без него.
  • я вижу там есть «download directory», для меня это очень положительный момент.

    Хочу организовоть дома файловое хранилище, интересно а бывают remote клиенты с возможностью указания(а лучше выбором) пути для загрузки фыйла, т.к. даже uremote не имеет такого.
  • вродь всё сделал как описано, кроме редактирования /etc/conf.d/rtorrent ну и соответственно запуска автоматического, ибо нет у меня его, запустил через скрин, но wtorrent говорит что не видит rtorrent :((
    • Были те же грабли на двух дистрах (Gentoo и Archlinux)
      Пытался настроить через lighttpd — получал сообщение, что не видит рторрент, потом попробовал настроить апач, довольно быстро завелось. Поподались еще рекомендации настроить на порт 80, мне не помогло, хоть под апачем работает и на 80, но этого было не достаточно.
    • мб статистический порт поставить и wtorrent натравить на него? в конфиге директива random_port = no
      • статический порт где?
  • 1. На морде в один клик можно менять общую скорость закачки/отдачи?
    2. Как обстоит работа в нестандартных браузерах/разрешениях/устройствах? (с айфона к примеру Flux управляеца на ура, Deluge — ваще никак)
  • Warning: disk_free_space() [function.disk-free-space]: Permission denied in… чета потыкал права, так и не врубился где крутить
    • А… посмотрел код wtorrent) уже врубился где крутить
  • Стоит дома на Arch Linux. Нареканий никаких, кроме того, что задать приоритет для скачивания отдельного файла из одного торрента получается не всегда с первого раза :) Ну и при добавлении нового торрента было бы неплохо, если была бы возможность выбирать отдельные файлы сразу. Правда может это поправили уже. У меня староватая версия.
  • А мне вот transmission больше нравится.
    Для него даже отдельный web-сервер не нужен и влезает он в жалкие 32 мегабайта оперативки ADSL-роутера :-)
  • torrentflux-b4rt с интересом наблюдает за этим топиком.
    • не поминайте всуе эту порнографию — запускать на каждую закачку отдельный процесс это надо иметь стаж минимум 5 лет в Кащенко!
      • ну не знаю. меня всё устраивает.
        или вы знаете что-то получше?
        с возможностью деления прав пользователей, заливки 20 торрентов одним махом, и возможностью указать что делать при завершении закачки.
    • Сидел пол года на ТоррентФлуксе. Хороший клиент, но меня в нем убивает прожорливость к ресурсам и глюки в веб-интерфейсе (локализация, кодировки).

      А добила блокировка BitTornado на HDTracker.ru. После этого и ушел обратно на rtorrent.
      • HDTracker — гуано, во-первых там админы хамло, а во-вторых почти все с него очень быстро появляеца на т.ру
        • Торрентс.ру меня начал в последнее время бесить своими размерами.

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

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

          А админы — наплевать. Мне админы не надо, мне надо фильмы. Я и их форум-то не читаю.
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.