Showing posts with label torrent. Show all posts
Showing posts with label torrent. Show all posts

September 26, 2015

debian rtorrent/rutorrent setup script

save the following as ~/seedbox.sh:
#!/bin/sh

USER="seedbox"
DIR_BASE="/var/www/seedbox"
DIR_PUB="$DIR_BASE/public"
DIR_SESS="$DIR_BASE/session"
DIR_DL="$DIR_PUB/downloads"
DIR_UI_PATH="webui"
DIR_UI="$DIR_PUB/$DIR_UI_PATH"


read -p "htpasswd user: " htpasswd_user
read -p "htpasswd pass: " htpasswd_pass

PORT_SCGI=$(date -u "+%N" | cut -c 6,7,8)
PORT_SCGI="5${PORT_SCGI}"
PORT_HTTP_DEF=$(date -u "+%N" | cut -c 6,7,8)
PORT_HTTP_DEF="8${PORT_HTTP_DEF}"
PORT_SSH_DEF=$(date -u "+%N" | cut -c 7,8)
PORT_SSH_DEF="22${PORT_SSH_DEF}"
read -p "SSH port [${PORT_SSH_DEF}]: " PORT_SSH
if [ "$PORT_SSH" = "" ]; then
    PORT_SSH=$PORT_SSH_DEF
fi
read -p "HTTP port [${PORT_HTTP_DEF}]: " PORT_HTTP
if [ "$PORT_HTTP" = "" ]; then
    PORT_HTTP=$PORT_HTTP_DEF
fi

# get the country code so we can use the closest debian mirror
wget -O /tmp/countryCode http://ip-api.com/csv?fields=countryCode
COUNTRYCODE=`cat /tmp/countryCode | sed 's/./\L&/g'`
sed -i "s/\.us\./.${COUNTRYCODE}./g" /etc/apt/sources.list

export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y debian-keyring 
apt-get install -y debian-archive-keyring
for k in $(apt-get update 2>&1|grep -o NO_PUBKEY.*|sed 's/NO_PUBKEY //g');do echo "key: $k";gpg --recv-keys $k;gpg --recv-keys $k;gpg --armor --export $k|apt-key add -;done
apt-get update

apt-get remove libxmlrpc-c*
apt-get install -q -y --no-install-recommends -o Dpkg::Options::="--force-confnew" gcc g++ build-essential apache2 libapache2-mod-scgi php5 php5-xmlrpc php5-cli rtorrent screen mediainfo ffmpeg 

printf "SCGIMount \"/RPC2\" 127.0.0.1:${PORT_SCGI}">/etc/apache2/mods-available/scgi.conf

ln -s /etc/apache2/mods-available/scgi.conf /etc/apache2/mods-enabled/ 
ln -s /etc/apache2/mods-available/scgi.load /etc/apache2/mods-enabled/


cat > /etc/init.d/rtorrent <###
#############
# This script depends on screen.
# For the stop function to work, you must set an
# explicit session directory using ABSOLUTE paths (no, ~ is not absolute) in your rtorrent.rc.
# If you typically just start rtorrent with just "rtorrent" on the
# command line, all you need to change is the "user" option.
# Attach to the screen session as your user with
# "screen -dr rtorrent". Change "rtorrent" with srnname option.
# Licensed under the GPLv2 by lostnihilist: lostnihilist _at_ gmail _dot_ com
##############
######
##############

#######################
##Start Configuration##
#######################
# You can specify your configuration in a different file
# (so that it is saved with upgrades, saved in your home directory,
# or whateve reason you want to)
# by commenting out/deleting the configuration lines and placing them
# in a text file (say /home/user/.rtorrent.init.conf) exactly as you would
# have written them here (you can leave the comments if you desire
# and then uncommenting the following line correcting the path/filename
# for the one you used. note the space after the ".".
# . /etc/rtorrent.init.conf

#Do not put a space on either side of the equal signs e.g.
# user = user
# will not work
# system user to run as
user="$USER"

# the system group to run as, not implemented, see d_start for beginning implementation
# group=\`id -ng "\$user"\`

# the full path to the filename where you store your rtorrent configuration
config="\`su -c 'echo \$HOME' \$user\`/.rtorrent.rc"

# set of options to run with
options=""

# default directory for screen, needs to be an absolute path
base="\`su -c 'echo \$HOME' \$user\`"

# name of screen session
srnname="rtorrent"

# file to log to (makes for easier debugging if something goes wrong)
logfile="/var/log/rtorrentInit.log"
#######################
###END CONFIGURATION###
#######################
PATH=/usr/bin:/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin
DESC="rtorrent"
NAME=rtorrent
DAEMON=\$NAME
SCRIPTNAME=/etc/init.d/\$NAME

checkcnfg() {
    exists=0
    for i in \`echo "\$PATH" | tr ':' '\n'\` ; do
        if [ -f \$i/\$NAME ] ; then
            exists=1
            break
        fi
    done
    if [ \$exists -eq 0 ] ; then
        echo "cannot find rtorrent binary in PATH \$PATH" | tee -a "\$logfile" >&2
        exit 3
    fi
    if ! [ -r "\${config}" ] ; then
        echo "cannot find readable config \${config}. check that it is there and permissions are appropriate" | tee -a "\$logfile" >&2
        exit 3
    fi
    session=\`getsession "\$config"\`
    if ! [ -d "\${session}" ] ; then
        echo "cannot find readable session directory \${session} from config \${config}. check permissions" | tee -a "\$logfile" >&2
        exit 3
    fi
}

d_start() {
  #chmod 777 /var/run/screen #Fix Ubuntu 10.04 screen bug
  [ -d "\${base}" ] && cd "\${base}"
  stty stop undef && stty start undef
  su -c "screen -ls | grep -sq "\.\${srnname}[[:space:]]" " \${user} || su -c "screen -dm -S \${srnname} 2>&1 1>/dev/null" \${user} | tee -a "\$logfile" >&2
  # this works for the screen command, but starting rtorrent below adopts screen session gid
  # even if it is not the screen session we started (e.g. running under an undesirable gid
  #su -c "screen -ls | grep -sq "\.\${srnname}[[:space:]]" " \${user} || su -c "sg \"\$group\" -c \"screen -fn -dm -S \${srnname} 2>&1 1>/dev/null\"" \${user} | tee -a "\$logfile" >&2
  su -c "screen -S "\${srnname}" -X screen rtorrent \${options} 2>&1 1>/dev/null" \${user} | tee -a "\$logfile" >&2
}

d_stop() {
    session=\`getsession "\$config"\`
    if ! [ -s \${session}/rtorrent.lock ] ; then
        return
    fi
    pid=\`cat \${session}/rtorrent.lock | awk -F: '{print(\$2)}' | sed "s/[^0-9]//g"\`
    if ps -A | grep -sq \${pid}.*rtorrent ; then # make sure the pid doesn't belong to another process
        kill -s INT \${pid}
    fi
}

getsession() {
    session=\`cat "\$1" | grep "^[[:space:]]*session[[:space:]]*=" | sed "s/^[[:space:]]*session[[:space:]]*=[[:space:]]*//" \`
    echo \$session
}

checkcnfg

case "\$1" in
  start)
    echo -n "Starting \$DESC: \$NAME"
    d_start
    echo "."
    ;;
  stop)
    echo -n "Stopping \$DESC: \$NAME"
    d_stop
    echo "."
    ;;
  restart|force-reload)
    echo -n "Restarting \$DESC: \$NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
  *)
    echo "Usage: \$SCRIPTNAME {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0
END

chmod +x /etc/init.d/rtorrent

update-rc.d rtorrent defaults


useradd $USER -U -d $DIR_BASE
mkdir -p $DIR_SESS $DIR_DL $DIR_UI

cat > "$DIR_BASE/.rtorrent.rc" <'>$DIR_PUB/index.php
chown -R $USER:$USER $DIR_BASE

find $DIR_UI/share -type d -exec chmod 0777 {} ';'



printf "Alias /$DIR_UI_PATH $DIR_UI\n\nAuthType Basic\nAuthName \"Authorization Required\"\nAuthUserFile $DIR_BASE/.htpasswd\nRequire valid-user\n" > /etc/apache2/conf.d/$DIR_UI_PATH

htpasswd -c -b "${DIR_BASE}/.htpasswd" $htpasswd_user $htpasswd_pass
rm "${DIR_UI}/.htaccess"


sed -i "s/scgi_port = 5000/scgi_port = $PORT_SCGI/g" $DIR_UI/conf/config.php
sed -i "s/Port 22/Port $PORT_SSH/g" /etc/ssh/sshd_config
sed -i "s/80/$PORT_HTTP/g" /etc/apache2/ports.conf
sed -i "s/80/$PORT_HTTP/g" /etc/apache2/sites-available/default

invoke-rc.d apache2 restart
invoke-rc.d rtorrent restart
apt-get clean
apt-get autoremove

echo "**** The new SSH port is: ${PORT_SSH}"
echo "**** The new HTTP port is: ${PORT_HTTP}"
invoke-rc.d ssh restart
reboot


and then run:
sh ~/seedbox.sh
Access your new seedbox at http://IP:PORT_HTTP/webui MAke sure you also use a new SSH, password.

July 31, 2011

SeedBox с rTorrent / ruTorrent на базе Apache под Debian своими руками

В этом журнале уже была статья об установке rTorrent и веб-интерфейса ruTorrent к нему под FreeBSD своими руками, теперь пришла очередь Debian.

Открываем консоль с root-доступом (или кто у вас там с привилегиями) по SSH.

Чиним ключи, если надо.
apt-get install debian-archive-keyring
Обновляем список пакетов:
apt-get update

Сервер Apache и PHP5

apt-get install -y apache2 php5

XMLRPC-C нужной версии

apt-get remove libxmlrpc-c*

apt-get install -y gcc g++ php5-xmlrpc

cd /usr/src && wget http://dfn.dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-c-1.16.38.tgz && tar xvf xmlrpc-c-1.16.38.tgz && cd xmlrpc-c-1.16.38 && ./configure --disable-cplusplus && make && make install && cd ~

SCGI-шлюз для Apache

Устанавливаем SCGI шлюз для Apache2:
apt-get install -y libapache2-mod-scgi

Теперь включим этот модуль создав файл scgi.conf:
touch /etc/apache2/mods-available/scgi.conf && echo 'SCGIMount "/RPC2" 127.0.0.1:5000'>>/etc/apache2/mods-available/scgi.conf

Проверьте существует ли в директории /etc/apache2/mods-available/ файл scgi.load, если нет — создайте его:
touch /etc/apache2/mods-available/scgi.load && echo 'LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so'>>/etc/apache2/mods-available/scgi.load

И добавим модуль в автозагрузку Apache:
ln -s ../mods-available/scgi.conf /etc/apache2/mods-enabled/ && ln -s ../mods-available/scgi.load /etc/apache2/mods-enabled/

Перезапустим Apache чтобы изменения вступили в силу:
/etc/init.d/apache2 restart

Собственно rTorrent

Устанавливаем rTorrent:
apt-get install -y rtorrent

Настраиваем запуск rtorrent:
cd /etc/init.d/ && wget -O ./rtorrent http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh?format=raw && sed -i 's/user="user"/user="seedbox"/g' ./rtorrent && chmod +x ./rtorrent && cd ~

Внимание! Если установка осуществляется на сервер под управлением Debian 6, внесите в свежесозданный файл /etc/init.d/rtorrent следующие строки сразу после #!/bin/sh:
### BEGIN INIT INFO
# Provides:          rtorrent_autostart
# Required-Start:    $local_fs $remote_fs $network $syslog $netdaemons
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: rtorrent script using screen(1)
# Description:       rtorrent script using screen(1) to keep torrents working without the user logging in
### END INIT INFO
Добавим rtorrent в автозапуск системы:
update-rc.d rtorrent defaults
В предыдущем действии присутствует команда sed -i 's/user="user"/user="seedbox"/g' ./rtorrent, выполняющая автозамену стандартного значения параметра user на seedbox. Этот параметр — имя пользователя, из-под которого будет запускаться rtorrent. Сейчас мы его создадим. Если автозамена по каким-либо причинам не сработала, удалите её из списка команд, откройте файл /etc/init.d/rtorrent и отредактируйте его вручную.
Создаем пользователя seedbox специально для торрентов. Можно это сделать через ISPmanager, можно вручную через консоль:
useradd seedbox -U -d /var/www/seedbox && mkdir /var/www/seedbox && chown seedbox:seedbox /var/www/seedbox

Переходим в консоль этого пользователя:
su seedbox

Создаём .rtorrent.rc:
wget -O ~/.rtorrent.rc http://libtorrent.rakshasa.no/export/1257/trunk/rtorrent/doc/rtorrent.rc

Дописываем в него наш SCGI-шлюз:
echo 'scgi_port = localhost:5000'>>~/.rtorrent.rc

Если нужно повесить rtorrent на определенный IP-адрес, измените директивы bind и ip:
# The ip address reported to the tracker.
ip = %НУЖНЫЙ_IP_АДРЕС%

# The ip address the listening socket and outgoing connections is
# bound to.
bind = %НУЖНЫЙ_IP_АДРЕС%
Также рекомендуется сменить стандартный диапазон портов с 6890 — 6999 на какой-либо другой:
# Port range to use for listening.
port_range = 40000-50000
Напомню, что все эти настройки указываются в файле rtorrent.rc

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

Не выходите из консоли пользователя seedbox.
Необходимо создать домен, по которому будет доступен ruTorrent. Это можно сделать через ISPmanager, любую другую панель управления сервером, или же вручную. Переходим в папку домена (в нашем примере это /var/www/seedbox/data/www/seedbox-web). Если папка ещё не существует — создадим её одной командой:
mkdir -p /var/www/seedbox/data/www/seedbox-web
В команде выше флаг (параметр) -p говорит mkdir создать папку рекурсивно, т.е. не обращая внимание что родительских папок (как, например, /var/www/seedbox/data/) не существует, и не выдавать по этому поводу ошибок.

Теперь загрузим сам ruTorrent:
cd /var/www/seedbox/data/www/seedbox-web && wget http://rutorrent.googlecode.com/files/rutorrent-3.4.tar.gz -O rutorrent.tar.gz && tar xvf rutorrent.tar.gz -C ./ && rm rutorrent.tar.gz

На момент написания статьи последней версией ruTorrent была 3.3 уже 3.4.
Веб-интерфейс лежит в папке ./rutorrent в корне домена. Чтобы попадать в него сразу при заходе на домен, создадим index.php с переадресацией:
touch ./index.php && echo '<?php header("Location: ./rutorrent/"); ?>'>>./index.php

Теперь создадим рабочие директории для rtorrent. Это можно было сделать и раньше, но я предпочитаю держать их доступными по http, поэтому отложил этот шаг до этапа когда домен будет создан.
mkdir ./downloads && mkdir ./session

Также внесем изменения в .rtorrent.rc:
sed -i 's/#directory = .\//directory = \/var\/www\/seedbox\/data\/www\/seedbox-web\/downloads/g' ~/.rtorrent.rc && sed -i 's/#session = .\/session/session = \/var\/www\/seedbox\/data\/www\/seedbox-web\/session/g' ~/.rtorrent.rc

Если автозамена не сработала, внесите изменения вручную: выставьте папки directory и session (мы их создали выше, это downloads и session соответственно).
Если все предыдущие действия выполнялись не из-под пользователя seedbox, нужно назначить ему права владельца. Не изменяя текущую директорию, выполните:
chown -R seedbox:seedbox ./

Выставляем права на папку share:
cd ./rutorrent/share && find . -type d -exec chmod 0777 {} ';' && cd ../../

Установим плагин EraseData, позволяющий удалить закачку вместе с файлами, а не только сам .torrent-файл:
cd ./rutorrent/plugins && wget http://rutorrent.googlecode.com/files/erasedata-3.4.tar.gz -O erasedata.tar.gz && tar xzvf erasedata.tar.gz && rm erasedata.tar.gz

Установим плагин Create, позволяющий создавать .torrent-файлы:
cd ./rutorrent/plugins && wget http://rutorrent.googlecode.com/files/create-3.4.tar.gz -O create.tar.gz && tar xzvf create.tar.gz && rm create.tar.gz

Установим плагин Edit, позволяющий редактировать список трекеров, который пригодится если новые, одинаковые закачки не добавляются в ruTorrent по причине совпадения хэша (см. Общее - Hash):
cd ./rutorrent/plugins && wget http://rutorrent.googlecode.com/files/edit-3.4.tar.gz -O edit.tar.gz && tar xzvf edit.tar.gz && rm edit.tar.gz

Установим плагин RSS, позволяющий автоматизировать закачку ruTorrent'ом всех раздач, появляющихся в RSS-лентах:
cd ./rutorrent/plugins && wget http://rutorrent.googlecode.com/files/rss-3.4.tar.gz -O rss.tar.gz && tar xzvf rss.tar.gz && rm rss.tar.gz

Если же вы таки работали от seedbox, вернитесь в консоль root:
exit

Запускаем rtorrent:
/etc/init.d/rtorrent start

Доступ к веб-интерфейсу ruTorrent

Если домен не создавали, или нужно обойтись без доменов вообще, добавим alias к нашему IP-адресу:
echo -e "Alias /rutorrent /var/www/seedbox/data/www/seedbox-web\n<Directory \"/var/www/seedbox/data/www/seedbox-web\">\n\tAllowOverride All\n</Directory>">/etc/apache2/conf.d/rutorrent
Предупреждаю: поскольку Alias /rutorrent ведет на /var/www/seedbox/data/www/seedbox-web, а в этой папке, в свою очередь лежит еще раз ./rutorrent (распакованный веб-интерфейс из архива, помните?), то в адресной строке в результате мы увидим ВАШ.IP.АДРЕС/rutorrent/rutorrent :)

Ограничиваем доступ через htaccess/htpasswd

Для этого в папке с веб-интерфейсом ruTorrent потребуется создать два файла: .htaccess и .htpasswd. Подробнее об этом — см. статью «как поставить пароль на папку в .htaccess». В .htpasswd нужно будет указать логин и пароль которым будет предоставлен доступ. В .htaccess мы включим эту самую проверку доступа, сошлемся на вышеупомянутый .htpasswd и укажем web-серверу снять ограничение по логину (т.е. он будет принимать только те имена пользователей и пароли, которые указаны в .htpasswd, в результате чего не будет необходимости повторно перечислять в "Require User" в htaccess'е все разрешенные логины).
cd /var/www/seedbox/data/www/seedbox-web && echo "seeduser:\$apr1\$aJ.utc3n\$30XkDugWyT7bG109N1FUe1">./.htpasswd && echo -e "AuthType Basic\nAuthName \"Authorization Required\"\nAuthUserFile /var/www/seedbox/data/www/seedbox-web/.htpasswd\nRequire valid-user">./.htaccess && cd ~
В примере выше в файл .htpasswd открывается доступ для пользователя seeduser по паролю seedpassword. Вы, возможно, захотите изменить эти данные — для этого воспользуйтесь генератором паролей .htpasswd, например — этим. Полученный текст вставьте в файл .htpasswd который мы создали ранее.

Внимание! Если вы хотите ограничить доступ к IP, который используется для раздачи торрентов, переведите Apache, а вместе с ним — и веб-морду на другой IP-адрес. Для этого в настройках Apache (т.е. в файле /etc/apache2/apache2.conf или /etc/apache2/ports.conf укажите:
Listen %НУЖНЫЙ_IP_АДРЕС%:80
... и перезапустите Apache:
/etc/init.d/apache2 restart

Чтобы открыть (развернуть) работающий rtorrent в консоли, наберите:
su seedbox screen -r
Если при этом вас встречает ощибка:
Cannot open your terminal '/dev/pts/0' - please check.
(может быть /dev/pts/0, /dev/pts/1, /dev/pts/2 и т.д.), то вернитесь в root и исправьте права доступа:
exit chmod a+rw /dev/pts/*

Использовано:
http://www.siniy.ws/2009/09/22/rtorrent-wtorrent-на-debian
http://filesharefreak.com/2010/02/13/how-to-install-rtorrent-rutorrent-using-socket-ssl-authentication-on-ubuntu-or-debian/
http://rtwi.jmk.hu/wiki/InstallationGuide#xmlrpc

November 30, 2009

SeedBox с rTorrent / ruTorrent на базе Apache под FreeBSD своими руками

Гениальная мысль наконец-таки воспользоваться подаренной мне датацентром по акции сотней гигабайт пришла ко мне вчера днём. Вчера же вечером на физически выделенном сервере, подключенном 100-мегабитным каналом, уже вовсю фуговал seedbox с моими раздачами.

Для начала, определимся что к чему.
Существует ряд программ, работающих по протоколу p2p для unix-подобных систем, в частности FreeBSD. Немного почитав отзывы и документацию, пришёл к выводу что наиболее оптимальным для меня будет использовать клиент rTorrent. Это — консольное приложение, к которому можно прикрутить веб-интерфейс, позволяющий руководить процессом через браузер. Из имеющихся веб-морд мой выбор остановился на ruTorrent, который внешне люто похож на виндовый uTorrent (название складывается так: rTorrent + uTorrent = ruTorrent).

Далее описывается процесс установки и конфигурации всего необходимого ПО под FreeBSD с помощью панели ISPmanager для реализации сидбокса — постоянно работающего на сервере торрент-клиента. В частности, то, как подключить это всё к Apache и обойтись без установки альтернативных серверов и модулей (a-la lighttpd и т.д.)

Итак, создаём в панели ISPmanager нового пользователя seedbox, выставив ему квоту на дисковое пространство и разрешив доступ по SSH. Сразу же создаем ему домен.

Заходим root'ом по SSH.

Устанавливаем столь необходимый Apache и rTorrent'у модуль mod_scgi (ох, если бы я с самого начала знал что он таки есть в портах...)
make -C /usr/ports/www/mod_scgi/ install clean
Редактируем /usr/local/etc/apache22/httpd.conf — добавляем свежеустановленный модуль заодно кое-что для домена.
  1. Там, где все LoadModule:
    LoadModule scgi_module libexec/apache22/mod_scgi.so
  2. В секции VirtualHost свежесозданного домена (ISPmanager добавляет такую секцию в конец файла автоматически):
    SCGIMount /RPC2 127.0.0.1:5000
Устанавливаем Screen:
cd /usr/ports/sysutils/screen && make install clean

Теперь установим сам rTorrent
cd /usr/ports/net-p2p/rtorrent && make install clean
Внимание! Собирать с поддержкой XMLRPC!


Создаём скрипт /usr/local/etc/rc.d/rtorrent
#!/bin/sh
# PROVIDE: rtorrent
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="rtorrent"
rcvar=`set_rcvar`

load_rc_config $name

: ${rtorrent_enable="NO"}
: ${rtorrent_user=""}

pidfile="/var/run/${name}.pid"
command="/usr/local/bin/rtorrent"

start_cmd="echo \"Starting: ${name}.\"; su ${rtorrent_user} -c 'screen -A -m -d -S ${name} ${command}'"
start_postcmd="${name}_poststart"

rtorrent_poststart()
{
sleep 4
ps aux | grep ${name} | grep ${rtorrent_user} | awk '{print($2)}' > ${pidfile}
echo "Done"
}

run_rc_command "$1"

Разрешаем запуск rtorrent:
echo 'rtorrent_enable="YES"'>>/etc/rc.conf

Указываем пользователя, из-под которого следует осуществлять rtorrent:
echo 'rtorrent_user="seedbox"'>>/etc/rc.conf

Создаем pid-файл:
touch /var/run/rtorrent.pid && chown seedbox:seedbox /var/run/rtorrent.pid

Заходим в консоль с правами пользователя seedbox:
su seedbox
Создаем файл .rtorrent.rc, являющийся конфигурационным для rtorrent:
  • скопировав из /usr/local/share/examples/rtorrent/rtorrent.rc в домашнюю директорию пользователя (надо переименовывать в .rtorrent.rc, с точкой в начале);
  • или же загрузив образец с официального сайта:
    fetch -o ~/.rtorrent.rc http://libtorrent.rakshasa.no/export/1257/trunk/rtorrent/doc/rtorrent.rc

Добавляем в него строку:
echo 'scgi_port = localhost:5000'>>~/.rtorrent.rc
Скачиваем и распаковываем веб-интерфейс ruTorrent (ниже указана версия rutorrent-3.3.tar.gz, проверьте, быть может она устарела с момента написания статьи, и появилась новая)
cd ~/www/seedbox-web && fetch http://rutorrent.googlecode.com/files/rutorrent-3.3.tar.gz && tar xvf rutorrent-3.3.tar.gz -C ./
Как видим, пути в стиле ISPmanager, где:
seedbox — спецсозданный для торрента пользователь
seedbox-web — папка для домена
После распаковки веб-морда доступна по адресу http://%domain%/rutorrent.
Здесь же, не уходя из папки, создаем нужные для работы ruTorrent директории:
cd ./rutorrent && mkdir ./downloads && mkdir ./sessions && chown -R seedbox:seedbox *
seedbox — спецсозданный для торрента пользователь
seedbox — его группа (создается вместе с пользователем ISPmanager'ом автоматически).
Теперь прописываем полные пути в .rtorrent.rc (директивы directory и session для только что созданных папок соответственно).

Для себя я также настроил работу rTorrent'а на отдельном IP-адресе и защиту ruTorrenta базовой аутентификацией. По вопросу IP-адреса читайте ниже, об установке базовой атентификации — в отдельном посте Как защитить доступ к папке паролем в .htaccess при помощи .htpasswd.

Укажите и проверьте пути к папкам downloads, sessions и settings. Они необходимы для работы как rTorrent'а, так и ruTorrent'а. Выставьте на них права чтобы они оба имели права чтения и записи. Проверьте правильность относительных путей в конфиге .rtorrent.rc (rTorrent) и config.php (ruTorrent). У меня всё это располагается в:
/home/seedbox/data/www/seedbox-web/rtorrent/downloads
/home/seedbox/data/www/seedbox-web/rtorrent/sessions
/home/seedbox/data/www/seedbox-web/rtorrent/settings
и защищено базовой аутентификацией Апача. В планах подключить для листинга и выдачи содержимого папки downloads быстрый nginx.

Чтобы rTorrent работал на отдельном специально заданном/указанном IP-адресе необходимо внести соответствующие изменения в .rtorrent.rc:
# The ip address reported to the tracker.
ip = 123.123.123.123
# The ip address the listening socket and outgoing connections is
# bound to.
bind = 123.123.123.123
Вместо 123.123.123.123 подставляете свой IP-адрес. Об это также написано на libtorrent.rakshasa.no.

Чисто теоретически, это всё. Кажется, ничего не забыл указать :)

Чтобы запустить свежеустановленный rTorrent, зайдите под специально созданным в начале пользователем по ssh и выполните команду:
/usr/local/etc/rc.d/rtorrent start

Если бы я не занимался установкой lighttpd, fast_cgi и пр. красноглазием, я бы не потратил весь вечер на разрешение возникшего конфликта IP-адресов через ipkvm (спасибо техподдержке за оперативность) из-за неподнявшегося ssh, а успел бы поднять торрент за пару часов.

Возможные проблемы/вопросы в процессе установки и после неё:
  1. Tracker: [Failure reason "re-announce in XXXX s (YYY s left)"] означает что rTorrent пытается найти пиров, но обошедши все указанные в .torrent-файле аннаунсеры (трекеры) пиров не нашёл.
  2. Чтобы попасть в консольное окно rTorrent'а необходимо ввести соответствующую команду.
    /usr/local/bin/rtorrent
  3. Чтобы выйти из консольного окна rTorrent'а (а это не так-то и просто, Ctrl+C и под. не помогают) достаточно нажать Ctrl+Q.
  4. Ошибка could not read resource file .rtorrent.rc означает что Вы неправильно указали путь к .rtorrent.rc, не сохранили его, или запускаете rTorrent под другим пользователем. Например, .rtorrent.rc лежит в /home/rtorrent/data (домашняя директория пользователя rtorrent в ISPmanager), а запускаете его под root'ом. Тогда rtorrent ищет конфиг в директории ~, т.е. /root и конечно же его там не находит. Именно поэтому в самом начале я и порекомендовал предоставить спецпользователю для торрента ssh-доступ — чтобы из-под него запускать rTorrent.
  5. Ошибка SCGIMount module not included означает что в апач не установлен/не подключен SCGI. Как это сделать написано в начале или в отдельном посте Установка SCGI-mod на Apache2 под FreeBSD
  6. Ошибка libtorrent Bad autotool stanza: libtool:22 Stop in /usr/ports/net-p2p/libtorrent: идём в /usr/ports/net-p2p/libtorrent/Makefile и редактируем директиву USE_AUTOTOOLS, ставим значение libtool
  7. Если постоянно нарисовывается ошибка с несовпадением версий libtorrent (distinfo is out of date or spelled incorrectly), попробуйте обновить порты
  8. Если при попытке запустить rtorrent из-под созданного пользователя (т.е. не root) появляется ошибка Cannot 'start' rtorrent. Set rtorrent_enable to YES in /etc/rc.conf, судя по всему rc.conf недоступен для чтения этим пользователем. Проверьте права. Я поставил 644, не знаю насколько это небезопасно.

P.S. полезные плагины

UPD 30.07.2011 создал скрипт rtorrent.sh, поставил его в сron на перезагрузку:
#!/bin/sh
su seedbox -c "killall rtorrent"
su seedbox -c "killall screen"
su seedbox -c "/usr/local/bin/rtorrent>/dev/null"