Добавить новость на сайт
RSS
Читать нас в RSS
Статистика сайта
Наши правила
Поиск по сайту
Добро пожаловать на Информационный портал Vectormm.net! У нас вы можете найти инструкции по настройке популярных беспроводных роутеров, а так же тонкости и хитрости по работе с операционными системами Windows и Linux. Так же, вы можете общаться на нашем форуме.

Вы успешно авторизовались!
Навигация
 
Сегодня
Панель управления
 

Установка rtorrent на роутер RT-N16
Раздел: Роутеры » Роутеры ASUS

 

1. Устанавливаем rtorrent:

 

ipkg install rtorrent

ipkg install lighttpd

ipkg install php

ipkg install php-fcgi

ipkg install coreutils

ipkg install adduser
ipkg install procps
ipkg install grep
ipkg install screen
ipkg install gawk
ipkg install which
ipkg install tar

 

2. Настраиваем:

nano /opt/etc/rtorrent.conf

(удалил все комментарии для сокращения размера, оставил только действующие параметры)


min_peers = 5
max_peers = 15
min_peers_seed = 10
max_peers_seed = 20
max_uploads_global = 6
max_downloads_global = 10
enable_trackers = yes
max_uploads = 10
download_rate = 0
upload_rate = 0

safe_sync = yes
receive_buffer_size = 4096
send_buffer_size = 4096
directory=/tmp/harddisk/torrent/work/
schedule = watch_directory,5,5,load_start=/tmp/harddisk/torrent/dl/*.torrent
schedule = untied_directory,5,5,stop_untied=

#может кому понадобится расписание работы:
#schedule = throttle_1,01:00:00,24:00:00,upload_rate=0
#schedule = throttle_2,05:00:00,24:00:00,upload_rate=80
schedule = low_diskspace,5,60,close_low_diskspace=100M
session = /tmp/harddisk/torrent/session
port_range = 51777-51780
port_random = no
check_hash = yes
use_udp_trackers = no
hash_interval = 100
hash_max_tries = 10
max_open_files = 128
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"
#schedule = ratio,30,60,stop_on_ratio=200
encryption = allow_incoming,enable_retry,prefer_plaintext
dht = auto
dht_port = 51780
peer_exchange = yes
scgi_port = 127.0.0.1:5000
encoding_list = UTF-8


3. Создаем нужные каталоги:

 

mkdir -p /tmp/harddisk/torrent/dl
mkdir /tmp/harddisk/torrent/work
mkdir /tmp/harddisk/torrent/session
#Специальный костыль, чтобы rtorrent меньше вылетал
echo 'echo "8192" >/proc/sys/vm/min_free_kbytes" >> /tmp/local/sbin/post-boot'
echo 'echo "0" >/proc/sys/net/ipv4/tcp_timestamps" >> /tmp/local/sbin/post-boot'

mkdir -p /tmp/harddisk/torrent/dl

mkdir /tmp/harddisk/torrent/work

mkdir /tmp/harddisk/torrent/session

#Специальный костыль, чтобы rtorrent меньше вылетал

echo 'echo "8192" >/proc/sys/vm/min_free_kbytes" >> /tmp/local/sbin/post-boot'

echo 'echo "0" >/proc/sys/net/ipv4/tcp_timestamps" >> /tmp/local/sbin/post-boot'

 


4. Создаем пользователя p2p:

 

#создать домашнюю директорию пользователя

mkdir -p /opt/home/p2p

#добавить пользователя с любым паролем, он больше не нужен нигде:
/opt/bin/adduser -D --home /opt/home/p2p p2p

#назначить p2p хозяином нужных директорий:

/bin/chown p2p /opt/home/p2p
/bin/chown p2p /tmp/harddisk/torrent/dl
/bin/chown p2p /tmp/harddisk/torrent/work
/bin/chown p2p /tmp/harddisk/torrent/session
/bin/chmod a+r /opt/etc/rtorrent.conf
/bin/chmod a+x /opt/bin/rtorrent

 

5. Модернизируем файл автозапуска rtorrent:

nano /opt/etc/init.d/S99rtorrent

#!/bin/sh

user="p2p"
config="/opt/etc/rtorrent.conf"
options="-n -o import=/opt/etc/rtorrent.conf"
base="/opt/share/torrent"
srnname="rtorrent"
logfile="/opt/var/log/rtorrentInit.log"

PATH=/opt/bin:/opt/sbin:/usr/bin:/sbin:/bin:/usr/sbin
DESC="rtorrent"
NAME=rtorrent
DAEMON=$NAME
SCRIPTNAME=/etc/init.d/$NAME

# Do not proceed unless some apps are available.
test -x /opt/bin/screen || ( echo "screen not found." | tee -a "$logfile" >&2 ; exit 2 )
test -x /opt/bin/su -o -x /bin/su || ( echo "su not found." | tee -a "$logfile" >&2 ; exit 2 )

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() {
  [ -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=`awk '/^[[:space:]]*session[[:space:]]*=[[:space:]]*/{print($3)}' "$config"`
    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

 

6. Исправляем файл профиля пользователя:

nano /tmp/local/root/.profile

export TERMINFO="/opt/share/terminfo"
export TERM="xterm"
alias rt='su -c "screen -r" p2p'
chmod a+rw `tty`
stty start undef
stty stop undef

 

7. Делаем стандартные:

flashfs save && flashfs commit && flashfs enable

 

8. Копируем данный файл пользователю p2p:


cp /tmp/local/root/.profile /opt/home/p2p/.profile
chown p2p /opt/home/p2p/.profile


9. Проверяем, что пользователь существует и rtorrent под ним фунциклирует:

su p2p
/opt/bin/rtorrent -n -o import=/opt/etc/rtorrent.conf


Если виден rtorrent - выйти - ^Q.
Выйти из telnet или ssh - exit. Для того, чтобы профиль пользователя сохранился.

 

10. Заходим снова и запускаем:

/opt/etc/init.d/S99rtorrent start

rt


Если все хорошо, т.е. rtorrent запустился - выйти -  ^A ^D.
Из консоли rtorrent вышли, но он продолжает работать в screen.


11. Проверяем содержимое /usr/tmp/local/.files:

cat /usr/tmp/local/.files

Там должно быть следующее:

/etc/passwd
/etc/group

Если нет - добавляем и делаем flashfs save && flashfs commit && flashfs enable

 

12. Ребутимся и проверяем, запустилось ли все автоматом:

rt

Выход -  ^A ^D.

 

13. Качаем веб морду:

cd /opt/share/www/lighttpd

wget http://rutorrent.googlecode.com/files/rutorrent-3.2.tar.gz

tar xvsf rutorrent-3.2.tar.gz

 

14. Добавляем в конфиг lighttpd:

В разделе server.modules добавляем, либо раскомментируем строчку

mod_scgi

Раздел scgi.server изменяем на:

scgi.server = (                                                            
        "/RPC2" =>                                                         
                ( "127.0.0.1" =>
                        (                                                    
                                "host" => "127.0.0.1",
                                "port" => 5000,
                                "check-local" => "disable"
                        )                                                    
                )                                                            
        )

 

15. Правим /opt/etc/lighttpd/conf.d/10-php-fcgi.conf:

nano /opt/etc/lighttpd/conf.d/10-php-fcgi.conf

Раскомментируем строку mod_fastcgi в разделе server.modules и раздел fastcgi.server целиком.

 

16. Делаем flashfs save && flashfs commit && flashfs enable && reboot

 

17. Делаем flashfs save && flashfs commit && flashfs enable


18. Открываем порты в файерволле:

nano /usr/local/sbin/post-firewall

Добавляем строчку:

iptables -I INPUT -p tcp -m tcp --dport 51777:51780 -j ACCEPT

 

19. Делаем flashfs save && flashfs commit && flashfs enable && reboot

 

20. Заходим:

http://my.router:port_number/rutorrent

где "port_number" - номер порта, прописанный в конфиге lighttpd.


Вопросы по работе веб морды задавайте автору тут.

 

 
 (голосов: 0)
 
 
НаверхНаверх
 
Наверх