Я как никто другой люблю изучать все новое и конечно же экспериментировать, обычно с софтом/железом и всем до чего моих знаний хватает. Вот сейчас читая в очередной раз о том, как собрать хоть пока и по руководствам: гусеничная платформа + Arduino Uno R3 + Raspberry. Вдруг на меня снизошло, а как поведет себя миникомпьютер Raspberry Pi 3 Model B если на нем поднять сервис который будет управлять torrentами. Ведь только с помощью них и происходит самообразование, покупать книги/аудиоматериалы так вообще разоришься. Я же предпочитая читать с экрана ноутбука, компьютера, планшетника — так удобнее. Да и к тому же в качестве сервиса управления torrent ами выступит давно известная и ранее применяемая утилита, как rtorrent.

Сперва подготавливаю установленную систему на карту памяти размером в 32Gb по заметке.

И далее все действия:

pi@raspberrypi:~ $ apt-cache search rtorrent

  • rtgui - Web based front-end for rTorrent
  • rtorrent - ncurses BitTorrent client based on LibTorrent from rakshasa
  • rtpg-www - web based front end for rTorrent

Устанавливаю необходимые пакеты посредством которых и должна воплотиться моя задумка:

pi@raspberrypi:~ $ sudo apt-get install rtorrent rtpg-www screen -y

pi@raspberrypi:~ $ mkdir save

pi@raspberrypi:~ $ mkdir session

pi@raspberrypi:~ $ touch session/.session

pi@raspberrypi:~ $ mkdir torrent

pi@raspberrypi:~ $ nano .rtorrent.rc

min_peers = 1

max_peers = 500

download_rate = 0

upload_rate = 0

directory = /home/pi/save/

session = /home/pi/session/

schedule = watch_directory,5,5,load_start=/home/pi/torrent/*.torrent

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 = localhost:5000

Теперь чтобы утилита rtorrent запускалась автоматически при перезагрузке миникомпьютера Raspberry Pi 3 Model B мне потребуется файл заготовка: rtorrentInit.sh.tar. У меня она уже есть, я еще давным-давно когда в работе использовал Ubuntu Maverick, разбирал как работает rtorrent, скачал ее и добавил в свое домашнее хранилище наработок на базе OwnCloud. А так как сейчас ссылки в интернет в основном ведут в никуда на ее скачивание я существенно облегчил себе задачу.

pi@raspberrypi:~ $ sudo mv rtorrentInit.sh /etc/init.d/

pi@raspberrypi:~ $ sudo nano /etc/init.d/rtorrentInit.sh

#!/bin/sh

### BEGIN INIT INFO

# Provides: rtorrentInint.sh

# Required-Start: $remote_fs $syslog

# Required-Stop: $remote_fs $syslog

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Start daemon at boot time

# Desctiption: Enable service provided by daemon

### END INIT INFO

#user="user"

user="pi"

pi@raspberrypi:~ $ sudo update-rc.d rtorrentInit.sh defaults

pi@raspberrypi:~ $ sudo chmod +x /etc/init.d/rtorrentInit.sh

pi@raspberrypi:~ $ sudo chown root:root /etc/init.d/rtorrentInit.sh

pi@raspberrypi:~ $ sudo /etc/init.d/rtorrentInit.sh start

Starting rtorrent: rtorrent.

pi@raspberrypi:~ $ sudo netstat -tulpn | grep rtorrent

tcp 0 0 0.0.0.0:40890 0.0.0.0:* LISTEN 9019/rtorrent

Отлично утилита rtorrent запущена и работает ожидая соединения.

Теперь переходим к настройке Webинтерфейса для управления Torrentами на миникомпьютере:

pi@raspberrypi:~ $ sudo a2enmod scgi

pi@raspberrypi:~ $ sudo a2enmod cgi

pi@raspberrypi:~ $ sudo nano /etc/rtpg/rtpg.conf

rpc_uri = 127.0.0.1:5000

refresh = 15000

skin = default

pi@raspberrypi:~ $ sudo unlink /etc/apache2/sites-enabled/000-default.conf

pi@raspberrypi:~ $ sudo unlink /etc/apache2/sites-available/000-default.conf

pi@raspberrypi:~ $ sudo unlink /etc/apache2/sites-available/default-ssl.conf

pi@raspberrypi:~ $ sudo nano /etc/apache2/sites-enabled/rtpg.apache.conf

<VirtualHost *:80>

ServerName raspberry

DocumentRoot /usr/share/rtpg-www/htdocs

SetEnv RTPG_CONFIG /etc/rtpg/rtpg.conf

AddHandler cgi-script .cgi

<Directory /usr/share/rtpg-www/htdocs/>

DirectoryIndex index.cgi

Options FollowSymLinks ExecCGI

AddDefaultCharSet utf-8

AllowOverride All

Order deny,allow

allow from all

</Directory>

</VirtualHost>

<VirtualHost *:80>

ServerName rtpg-scgi.localhost

SCGIMount /RPC2 127.0.0.1:5000

<Location /RPC2>

Order deny,allow

allow from 127.0.0.1

deny from all

</Location>

</VirtualHost>

pi@raspberrypi:~ $ sudo apache2ctl configtest

pi@raspberrypi:~ $ sudo a2ensite rtpg.apache.conf

pi@raspberrypi:~ $ sudo service apache2 reload

pi@raspberrypi:~ $ sudo netstat -tulpn | grep :80

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9610/apache2

Обращаюсь к Webинтерфейсу

http://IP&DNS и вот то что я ранее использовал на Ubuntu Maverick, если в каталоге torrent оказываются Torrent-файлы, то происходит их закачка:

ekzorchik@navy:~$ scp /tmp/mozilla_ekzorchik0/* pi@192.168.1.116:/home/pi/torrent

pi@192.168.1.116's password:

  • Head First O'Reilly na russkom [10 knig].[tfi 100% 171KB 171.3KB/s 00:01
  • Kris_Kasperski_Iskusstvo_Dizassemblirovaniya. 100% 14KB 13.6KB/s 00:00
  • Matveev S.A. - Samyj nuzhnyj samouchitel' ang 100% 1215 1.2KB/s 00:00
  • Real English_[tfile.ru].torrent 100% 13KB 13.1KB/s 00:00
  • Vysshij.Pilotazh.2005.RUS.BDRip.XviD.AC3.-HQ- 100% 15KB 15.2KB/s 00:00

Web-интерфейс управления Torrent'ами на Raspberry Pi 3 Model B

Как только torrent-файлы будут скачаны, они располагаться в каталоге save который я бы порекомендовал посредством сервиса Samba расшарить для всех, как в локальной сети, так и Ваших устройств.

На этом у меня всё, вот так приходились заметки разобранные давным-давно и были переориентированы на миникомпьютер которым я с недавнего времени работаю и экспериментирую. Задача выполнена, с уважением автор блога Олло Александр aka ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru