logogrt

Torrent на Raspberry Pi (настройка rTorrent с WEB-интерфейсом)


В прошлых статьях мы с Вами уже разобрались, как установить операционную систему, совершить первоначальную настройку  и подключить внешний HDD к Raspberry PI. Пришло время для первого проекта, который сможет приносить реальную пользу и сделать жизнь чуть удобней. В этой статье мы разберёмся, как превратить Raspberry в torrent-качалку с удобным управлением через WEB-интерфейс с помощью rTorrent. Пара слов о том, зачем вообще всё это нужно. Я думаю, многие из нас загружают различные файлы по средством различных Torrent-клиентов, и, думаю, все сталкиваются с рядом неудобств :

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

Думаю, каждый может добавить ещё пару пунктов в зависимости от индивидуальных потребностей. Согласитесь, было бы круто иметь отдельное, бесшумное устройство, которое будет круглосуточно раздавать/скачивать файлы по протоколу Torrent, к которому можно легко подключиться с любого другого устройства для доступа к скаченной информации, и к которому можно получить удалённый доступ через браузер (для того, чтобы, например, поставить что-то на загрузку). И всё это мы можем получить с помощью Raspberry PI.

Конечный выбор пал на rTorrent, так как подобные Torrent-клиенты, которые я перепробовал, работали менее стабильно. rTorrent работает действительно стабильно и под достаточно высокой нагрузкой+имеет удобный, функциональный WEB-интерфейс на русском языке и множество плагинов, расширяющих функционал.

rTorrent

rTorrent в рабочем состоянии

Для того, чтобы приступить к настройке, нам нужно:

  1. Установить OS на  Raspberry PI, настроить доступ к сети Интернет, желательно для удобства работы настроить SSH ( как всё это настроить, читайте в статье «Raspberry Pi — подключение (установка ОС, настройка)«).
  2. Подключить к  Raspberry внешний накопитель, например, HDD-USB и настроить к нему доступ по локальной сети (как это сделать, читайте тут  — «Подключение к Raspberry Pi USB HDD/USB Flash drive + настройка Samba«).

Подключаемся к Raspberry PI по SSH и поехали:

1) Как обычно, первым делом обновим список установленных и доступных пакетов:

sudo apt-get update

Ждём завершения процесса и далее вводим:

sudo apt-get upgrade

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

2) Устанавливаем rTorrent с помощью незатейливой команды:

sudo aptitude install rtorrent

Когда будет запрос хотим ли продолжить — соглашаемся.

3) Создадим папку, куда будут загружаться файлы. Я буду их качать на подключённый USB-HDD, поэтому папку создаю на нём:

mkdir /media/hdd/Torrent/

И папку, где будет храниться информация о закачках:

mkdir /media/hdd/Torrent/.rt/

4)  Теперь переходим в домашнию папку пользователя, под которым будет работать rTorrent (у меня это /home/pi), и создаём в ней файл «.rtorrent.rc» . В нём будут содержаться настройки.

В моём файле «.rtorrent.rc» указаны следующие настройки, и с ними всё замечательно работает:

min_peers = 1
max_peers = 25 
download_rate = 1000
upload_rate = 300
directory = /media/hdd/Torrent/
session = /media/hdd/Torrent/.rt/
port_range = 40890-40890
port_random = no
check_hash = yes
session_save = yes
encryption = allow_incoming,enable_retry,prefer_plaintext
use_udp_trackers = yes
dht = auto
dht_port = 6881
encoding_list = UTF-8
scgi_port = 127.0.0.1:5000

«download_rate»/»upload_rate» — скорость загрузки/скачивания в килобайтах. Если установть «0» — скорость будет не ограничена.

«directory»/»session» — указываем директории, куда будут загружаться файлы, и где будет храниться информация о закачках (мы их создали в пункте №3).

Полное описание настроек, которые может содержать файл смотрите по ссылке — ссылка. Но экспериментальным путём пришёл к тому, что приведенные настройки оптимальны для стабильной работы rTorrent на Raspberry Pi.

5) Настроим автозагрузку (чтоб rTorrent автоматически начинал работать при включении Raspberry).

Устанавливаем Screen для работы торрент-клиента в фоне:

sudo aptitude install screen

Теперь загрузим скрипт для автозагрузки rTorrent:

sudo wget http://libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh?format=raw -O /etc/init.d/rtorrent

Если файл не скачивается, то просто скачайте файл «rtorrent» (ссылка) и файл «rtorrentInit.sh» (ссылка). После загрузки скопируйте в /etc/init.d/. В фале «rtorrent», в строке USERNAME=»pi», вместо «pi» укажите  пользователя (если требуется).

+ Ссылка на скрип автозагрузки и инструкция есть в комментарии от Виталия (от 17.06.2014 в 23:42).

Если скрипт загрузился — отредактируем его для корректной работы. Для этого открываем файл /etc/init.d/rtorrent и в строке user=»user» в кавычках пишем пользователя, под которым всё будет работать. В моём случае будет  user=»pi».

Теперь добавим скрипт в автозагрузку и запустим:

sudo chmod 755 /etc/init.d/rtorrent
sudo update-rc.d rtorrent defaults
sudo /etc/init.d/rtorrent start

6) Приступим к настройке WEB-интерфейса. Первым делом ставим Apache и необходимые для работы WEB-интерфейса компоненты:

sudo aptitude install apache2 libapache2-mod-scgi
sudo aptitude install php5 php5-common libapache2-mod-php5 php5-curl

При запросах хотим ли продолжить,конечно же, соглашаемся продолжать. Если при установке PHP появится запрос на удаление пакета «apache2-mpm-worker» — соглашаемся.

Отредактируем файл /etc/apache2/apache2.conf — в самом конце файла нужно добавить строку — «SCGIMount /RPC2 127.0.0.1:5000».

7) Самое время установить WEB-интерфейс. Интерфейсов для rTorrent великое множество, мне больше всего понравился ruTorrent.

Для начала устанавливаем Subversion:

sudo apt-get install subversion

Теперь загрузим ruTorrent:

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

Выставим права на папку:

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

И момент истины, запускаем:

sudo a2enmod scgi

7) Если всё сделано верно, по адресу http://ip_адрес_Rpi/rutorrent/ (например, http://192.168.1.3/rutorrent/), откроется готовый к работе WEB-интерфейс rTorrent:

WEB-интерфейс rTorrent

WEB-интерфейс rTorrent

Во общем-то и всё, можно начинать пользоваться. Управление интуитивно понятно, всё на русском языке — поэтому дополнительно процесс управления описывать не буду. Если будут вопросы — разумеется, подсскажу — пишите в комментариях.

Вопросы и ответы по настройке

 

  • Вопрос: «Я хочу подключаться к WEB-интерфейсу удалённо, например, с работы. Что для этого нужно?«

Для удалённого подключения нужно:

  1. подключить услугу внешнего IP-адреса (эту услугу нужно подключать у интернет провайдера) ;
  2. если используете роутер, нужно настроить на нём переадресацию портов, а именно пробросить 80 порт на локальный IP-адрес, который получает Raspberry Pi.

При настройке, как в данной статье, ссылка для удалённого доступа к WEB-интерфейсу rTorrent будет иметь вид http://внешний_IP-адрес/rutorrent/.

 

  • Вопрос: «Вводить каждый раз после IP-адреса приставку «rutorrent» долго и неудобно, как можно это обойти?«

Чтобы сократить ссылку для входа на WEB-интерфейс, можете переименовать директорию «rutorrent» (var/www/rutorrent), например, в «rt». Тогда ссылка будет иметь вид — http://ip_адрес_Rpi/rt/.

 

  • Вопрос:»Всё настроил, всё работает — файлы скачиваются, но почему-то совершенно нет отдачи. В чём тут может быть дело?«

Всё очень просто: для того чтобы шла отдача, нужно прокинуть порт TCP 40890 (на локальный IP-адрес Raspberry Pi).

 

  • Вопрос: «Я настроил удалённый доступ, но получается, что на WEB-интерфейс rTorrent может зайти кто угодно, как можно ограничить доступ?«

Первым делом стоит сменить порт — это повысит безопасность, и с установкой пароля проблем не возникнет. Всё очень просто — открываем файл /etc/apache2/ports.conf и в строке «Listen 80» меняем «80» на нужный порт. Я указал порт 8099, получилось так — «Listen 8099». Теперь ссылка для входа будет иметь вид http://внешний_IP-адрес:порт/rutorrent/, например http://192.168.1.3:8099/utorrent/.

Теперь установим пароль для доступа к WEB-интерфейсу:

1) создаём в папке с ruTorrent (var/www/rutorrent) файл с именем «.htaccess»;

2) в файле «.htaccess» пишем следующее:

AuthUserFile /var/www/rutorrent/htpasswd
AuthName "WEB-Torrent"
AuthType Basic
Require Valid-User

В первой строке путь должен быть вида —  «путь_до_rutorrent/htpasswd».

3) Теперь переходим в папку с rutorrent:

cd /var/www/rutorrent

Выполняем:

sudo htpasswd -c htpasswd логин

Где «логин» — имя пользователя для доступа к WEB-интерфейсу (нужно использовать латинские буквы).

После ввода команды нужно будет придумать пароль (в консоли появится строка «New password:») — вводим пароль два раза.

Теперь перезапускаем Apache:

sudo apache2ctl restart

После пробуем открыть WEB-интерфейс.

Окно авторизации для входа на WEB-интерфейс

Окно авторизации для входа на WEB-интерфейс

Если всё сделано правильно — то появится окно авторизации, как на скриншоте выше.


AboutAG

  • RENOWATIO

    всё настроил как тут написано, но в конце при вводе «sudo a2enmod scgi» выдаёт ошибку «ERROR: Module scgi does not exist!» и по http://ip_адрес_Rpi/rutorrent/ не открывается ничего!
    В чем может быть проблема?

    • AG

      Хм.. странно, скорее всего где-то ошиблись.
      Попробуйте так:
      sudo aptitude install libapache2-mod-scgi
      sudo a2enmod scgi
      sudo sudo apache2ctl restart

      • Ulan Sakebaev

        именно последняя команда sudo sudo apache2ctl restart не проходит

  • Kisi

    Большое спасибо за статью. Все получилось и заработало. Но есть один момент как всегда. Малинка стоит в одном месте а я хочу к ней удаленный доступ. Точнее в rtorrent. Если можно поподробнее пожалуйста (это мой первый опыт с Линуксом и консолью) об организации удаленного доступа к торренту. Что значит пробросить порт? А то сейчас приходится коннектиться через Team Viewer в локалку и оттуда запускать уже доступ. А это как то очень геморройно. Заранее спасибо.

    • AG

      Добрый день!
      Здорово, что всё получилось.
      Действительно, подключаться через Team Viewer, наверное, не слишком удобно..
      Пробросить порт нужно на маршрутизаторе (роутере), к которому подключен Raspberry. Эта функция нужна для того, чтобы когда Вы будете удалённо совершать запрос вида «внешний_ IP-адрес:порт» запрос уходил именно на то устройство в Вашей локальной сети, на которое нужно. Посмотрите документацию к Вашему роутеру — там это должно быть описано. Или напишите, что у вас за роутер — постараюсь подсказать подробнее.
      +Обращаю Ваше внимание на то, что для удалённого доступа должна быть подключена услуга внешнего статического IP-адреса.

      PS В ближайшее время напишу статью по настройке проброса портов на примере Zyxel Keenetic.

  • Kisi

    Снова здравствуйте. Пришлось заменить винт (по причине старости). В результате решил переустановить всю систему.
    При этом скрипт автозагрузки не работает и соответственно файл etc/init.d/rtorrent вообще пустой. Связи через веб интерфейс тоже нет, пишет Нет связи с rTorrent. Проверьте, запущен ли он. Проверьте, что параметры $scgi_port и $scgi_host в файле config.php совпадают со значением переменной scgi_port в файле конфигурации rTorrent.
    Вот такая засада.
    Может у вас есть какие то идеи по этому поводу?
    А вопрос с удаленным доступом решился через роутер. Он зовется Frity box и у них свой сервис удаленного доступа. Так что в настройках всегда можно узнать внешний ip.

    • AG

      Добрый день!
      Судя по ошибке, если настроено всё верно, то просто не запущен rtorrent. Проверьте, работает ли программа командой «screen -x rtorrent», если нет — то запустите принудительно «rtorrent» и после откройте WEB-интерфейс — всё должно завестись.
      Ну а после уже разбирайтесь с автозагрузкой — проделайте действия из статьи пункт №5.

  • Виталий

    Скрипта для атозагрузки по указанной ссылке нет.
    Взял отсюда: ссылка 
    Инструкция для чайников:
    Копируете в браузере весь текст подключаетесь через putty вводите
    sudo nano /etc/init.d/rtorrent
    в окно мышкой нажимаете правой кнопкой и всё
    не забудте поменять «username» на «pi»!
    сохраняете ну и дальше по тексту…

    P.S. Я два дня искал этот скрипт!

  • Валерий

    Добрый день. Большое спасибо за эту инструкцию для чайников. Получилось с первого раза 🙂 Однако, потом что-то «сломалось» и повторно не получается настроить. Кажется, дело в следующем:

    pi@raspberrypi /var/www $ sudo a2enmod scgi
    Enabling module scgi.
    To activate the new configuration, you need to run:
    service apache2 restart
    pi@raspberrypi /var/www $ ^C
    pi@raspberrypi /var/www $ service apache2 restart
    [….] Restarting web server: apache2/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
    apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
    /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
    apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
    (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
    no listening sockets available, shutting down
    Unable to open logs
    Action ‘start’ failed.
    The Apache error log may have more information.

    Не подскажете, что я не так делаю?

    • AG

      Добрый день!
      Так сходу сказать трудно.
      А после чего «сломалось»?
      Точно добавили «SCGIMount /RPC2 127.0.0.1:5000»?
      Попробуйте переустановить apache2 libapache2-mod-scgi.

      • Валерий

        Добрый день.
        Спасибо за оперативный ответ 🙂 Сейчас уже не помню, так как не спец в *nix. Делал строго по инструкции, получилось только в первый раз. Потом повторял несколько раз, уже не работало…
        Перешел на Transmition — очень нравится, работает стабильно, скорость загрузки и отдачи, как и на «большом» компьютере — 2-3 МБайта/сек, ограничивается скорее провайдером. При этом качается/раздается до 30 файлов одновременно (больше не пробовал просто), «наработка на отказ» — недели 2, но статистики маловато пока. При этом еще и экспериментирую с малинкой параллельно 🙂

  • Кирилл Терентьев

    Здравствуйте, вопрос глупый)
    «SCGIMount /RPC2 127.0.0.1:5000″ Вот после добавления этой строки у меня падает и не подымается апач. Как ее правильно написать?