Устанавка pyload в качестве standalone качалки для ReadyNAS DUO v2

в 15:56, , рубрики: linux, NAS, Сетевое оборудование, системное администрирование, метки: ,

Для закачки торрентов ReadyNAS-ом на родном сайте в addons есть transmission, и поставить его не проблема.
Но, в тоже время простой ftp/http качалки, к моему сожалению и удивлению я там не нашел. Это недоразумение я предлагаю исправить.

Pyload WebGUI

Для начала нужно установить из addons EnableROOT для последующего комфортного конфигурирования по ssh.
Выкачиваем EnableRootSSH_1.0-arm.bin и устанавливаем через админ-панель ReadyNAS.
Нас попросят перезагрузиться, после чего ssh будет доступен на стандартном порту с логином root и вашим текущим паролем от админ-панели.

Для подключения можно воспользоваться kitty. В последнее время я предпочитаю использовать ее вместо putty — т.к. у нее кодировка utf8 по умолчанию для новых подключений.

Вот то, что из себя представляет начинка ReadyNAS DUO v2 (версия FW 5.3.8):

cat /etc/debian_version

6.0.3

uname -a

Linux nas 2.6.31.8.duov2 #1 Thu Apr 18 18:24:47 HKT 2013 armv5tel GNU/Linux

cat /proc/cpuinfo
Processor: Feroceon 88FR131 rev 1 (v5l)
BogoMIPS: 1599.07
Features: swp half thumb fastmult edsp
CPU implementer: 0x56
CPU architecture: 5TE
CPU variant: 0x2
CPU part: 0x131
CPU revision: 1
Hardware: Feroceon-KW
Revision: 0000
Serial: 0000000000000000

cat /proc/meminfo

MemTotal: 246820 kB
MemFree: 24188 kB
Buffers: 6056 kB
Cached: 104700 kB
SwapCached: 12 kB
Active: 96728 kB
Inactive: 101508 kB
Active(anon): 36812 kB
Inactive(anon): 51176 kB
Active(file): 59916 kB
Inactive(file): 50332 kB
Unevictable: 16 kB
Mlocked: 4 kB
SwapTotal: 524268 kB
SwapFree: 524256 kB
Dirty: 92 kB
Writeback: 0 kB
AnonPages: 87504 kB
Mapped: 28332 kB
Slab: 15456 kB
SReclaimable: 3764 kB
SUnreclaim: 11692 kB
PageTables: 2052 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 647676 kB
Committed_AS: 610212 kB
VmallocTotal: 385024 kB
VmallocUsed: 940 kB
VmallocChunk: 382812 kB

На заметку

ReadyNAS-овские маркетологи толкают под названием FLEX-RAID & X-RAID2… mdadm. Только тсс!

Обновим доступные из базового репозитория пакеты и установим необходимые зависимости:

#apt-get update
#apt-get install python python-beaker python-crypto python-imaging python-jinja2 python-openssl python-pycurl tesseract-ocr-eng unzip nano

Так как для доступа к скачанным файлам используется в основном samba — нам необходимо закачивать наши файлы с правами того же пользователя/группы, что и samba — nobody:nogroup. Есть также альтернативный (менее геморройный) вариант оставить все как есть, и запускать pyload из-под root, но менять пользователя/группу средствами самого pyload. Для себя я выбрал первый вариант (да, гентушник).

Выкачиваем исходники pyload:

#cd /opt
#wget https://github.com/pyload/pyload/archive/stable.zip
#unzip stable.zip && mv pyload-stable pyload
#touch /opt/pyload/pyload.pid && chown –R nobody:nogroup /opt/pyload
#usermod –s /bin/bash nobody

Теперь приступаем непосредственно к настройке pyload.
Запустим в режиме конфигурации – заботливый pyload сам проверит доступные ему фичи и отрапортует об этом.

#cd /opt/pyload && su nobody -c "python pyLoadCore.py –s"

Выхлоп должен быть схожим (простынка):

Choose your Language / Wähle deine Sprache ([en], de, fr, it, es, nl, sv, ru, pl, cs, sr, pt_BR): Enter

// Можно сменить язык установки.

Welcome to the pyLoad Configuration Assistent.
It will check your system and make a basic setup in order to run pyLoad.

The value in brackets [] always is the default value,
in case you don't want to change it or you are unsure what to choose, just hit enter.
Don't forget: You can always rerun this assistent with --setup or -s parameter, when you start pyLoadCore.
If you have any problems with this assistent hit STRG-C,
to abort and don't let him start with pyLoadCore automatically anymore.

When you are ready for system check, hit enter. Enter

## System Check ##
Python Version: OK
pycurl: OK
sqlite3: OK

pycrypto: OK
py-OpenSSL: OK

py-imaging: OK
tesseract: OK

PyQt4: missing

jinja2: OK
beaker: OK
JS engine: missing

System check finished, hit enter to see your status report.Enter

## Status ##

Features available: container decrypting, ssl connection, automatic captcha decryption, Webinterface

Featues missing:

Gui not available
The Graphical User Interface.

no JavaScript engine found
You will need this for some Click'N'Load links. Install Spidermonkey, ossp-js, pyv8 or rhino
You can abort the setup now and fix some dependicies if you want.
Continue with setup? ([y]/n):Enter

// Я зажал ресурсы и незахотел перегружать систему. Можно попробовать поставить rhino или spidermonkey.

Do you want to change the config path? Current is /root/pyload/.pyload
If you use pyLoad on a server or the home partition lives on an iternal flash it may be a good idea to change it.
Change config path? (y/[n]):Enter

// В моем случае подтянулся сохраненный путь. Указываем свой — /root/pyload/.pyload

Do you want to configure login data and basic settings?
This is recommend for first run.
Make basic setup? ([y]/n):Enter

## Basic Setup ##

The following logindata is valid for CLI, GUI and webinterface.
Username [User]: pyload
Password:
Password (again):

// Вбиваем свои данные. Обратите внимание, что пользователь admin в системе есть перманентно, и его не удалить.

External clients (GUI, CLI or other) need remote access to work over the network.
However, if you only want to use the webinterface you may disable it to save ram.
Enable remote access ([y]/n): n

// Если решили попробовать rpc-клиент с ПК, то видимо нужно включать (об этом далее).

Language ([en], de, fr, it, es, nl, sv, ru, pl, cs, sr, pt_BR):Enter
Downloadfolder [Downloads]: /d/media2/pyload

// У меня диск разбит на 2 тома по 2 Тб. Жадный я, что ж поделать.

Max parallel downloads [3]:Enter
Use Reconnect? (y/[n]):Enter

Do you want to configure ssl?
Configure ssl? (y/[n]):Enter

// В случае с выбором threaded сервера — нужно включить, и не забыть сгенерировать ключи командами, которые выплюнет конфигуратор (об этом далее).

Do you want to configure webinterface?
Configure webinterface? ([y]/n):Enter

## Webinterface Setup ##

Activate webinterface? ([y]/n):Enter

Listen address, if you use 127.0.0.1 or localhost, the webinterface will only accessible locally.
Address [0.0.0.0]:Enter
Port [8000]:Enter

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

pyLoad offers several server backends, now following a short explanation.
builtin: Default server, best choice if you dont know which one to choose.
threaded: This server offers SSL and is a good alternative to builtin.
fastcgi: Can be used by apache, lighttpd, requires you to configure them, which is not too easy job.
lightweight: Very fast alternative written in C, requires libev and linux knowlegde.
Get it from here: github.com/jonashaag/bjoern, compile it
and copy bjoern.so to module/lib

Attention: In some rare cases the builtin server is not working, if you notice problems with the webinterface
come back here and change the builtin server to the threaded one here.
Server ([builtin], threaded, fastcgi, lightweight):Enter

// Мною были испробованы разные варианты веб-серверов:

  • builtin: Пробовал. Работает. Остановился на нем, как на самом непритязательном варианте.
  • threaded: Пробовал. Работает.
  • fastcgi: Не пробовал. На официальном форуме наткнулся о проблемах с настройкой wcgi. Геморрой-way. Skip
  • lightweight: Попробовать не удалось. Установил необходимые инструменты для сборки и libev. При сборке уткнулся в ошибку, отчего плюнул на это дело. Может у кого-то получится (я подглядывал сюда).

Setup finished successfully.
Hit enter to exit and restart pyLoad

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

Сперва я решил пойти в лоб и сделать кустарный авторан — засунул в crontab следующую запись:
@reboot sh /root/pyload-start.sh

root@nas:~# cat pyload-start.sh
#!/bin/sh
sleep 30
su nobody -c "/usr/bin/python /opt/pyload/pyLoadCore.py --daemon"

Потом, все же, поступил более цивилизованно. Создаем стартовый скрипт следующего содержания:

/etc/init.d/pyload

#!/bin/sh

### BEGIN INIT INFO
# Provides: pyload
# Required-Start: $syslog $local_fs $network $remote_fs
# Required-Stop: $syslog $local_fs $network $remote_fs
# Should-Start: $remote_fs $named
# Should-Stop: $remote_fs $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts pyload daemon
# Description: This script runs the pyload service
### END INIT INFO

# Starts and stops the pyload daemon.

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON="/usr/bin/python /opt/pyload/pyLoadCore.py"
PIDFILE="/opt/pyload/pyload.pid"

. /lib/lsb/init-functions

start() {
log_daemon_msg «Starting pyLoad server»

su nobody -c "$DAEMON --daemon"

if [ $? != 0 ]; then
log_end_msg 1
exit 1
else
log_end_msg 0
fi
}

stop() {
log_daemon_msg «Stoping pyLoad server»

su nobody -c "$DAEMON --quit"

if [ $? != 0 ]; then
log_end_msg 1
# exit 1
else
log_end_msg 0
fi
}

case "$1" in
start)
start
;;

stop)
stop
;;

force-reload)
stop
sleep 5
start
;;

restart)
stop
sleep 2
start
;;

*)
echo «Usage: $0 {start|stop|restart|force-reload}»
exit 1
;;
esac

exit 0

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

#chmod +x /etc/init.d/pyload

И заставляем стартовать службой при старте:

#update-rc.d pyload start 20 2 3 4 5 . stop 10 0 1 6 .

Пробуем стартовать и тушить службу через init-скрипт:

/etc/init.d/pyload start
/etc/init.d/pyload stop

Я настроил openvpn тунель до домашнего роутера, поэтому веб-морда pyload доступна по своему домашнему адресу. Если неохота заморачиваться с openvpn — банально пробросываем порт на роутере.

Pyload PyQT GUI

Также есть возможность управлять закачками через отдельную программку, которая по RPC (с SSL, если вы это настроили) взаимодействует с сервером pyload. Выкачиваем бинарники для винды pyload-v0.4.9-win.zip Нас убедительно предупреждают, что PyQT GUI сей нестабильный, и лучше использовать webGUI. У меня вроде не падал и не вис — возможно я мало эксплуатировал.

Чтобы появилась поддержка ssl необходимо ответить утвердительно в конфигураторе, а также сгенерировать самоподписанный сертификат:

openssl genrsa -out ssl.key 1024
openssl req -new -key ssl.key -out ssl.csr
openssl req -days 36500 -x509 -key ssl.key -in ssl.csr > ssl.crt

При настройке были использованы:
Pyload site
Pyload site: Install bjoern
Pyload forum: Script modification for booting Debian
Pyload forum: Running pyload on startup as a specified user

Всем позитива и удачи!

Автор: manki_lowa

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js