UWAGA: to rozwiązanie nie do końca działa poprawnie. Jeżeli rozwiążą problem z rtorrentem to będzie całkowicie funkcjonalne.W czym problem: rtorrent z OpenWrt lubi się wykładać. Starsze wersje robiły to przy hash/seedowaniu danych, nowsza, która właśnie została zgłoszona do Openwrt działa, ściąga, seeduje i robi to poprawnie. Ale wywala się po uruchomieniu w screen'ie lub dtach i podaniu torrenta przez www/rpc. O ile ktoś chce używa konsolowego rtorrenta to może nawet działać. Przy pomocy rutorrenta - wywala się.
Do rzeczy - rtorrent + nakładka graficzna w postaci
rutorrenta na serwerze lighttpd z php.
Niezbędne jest przygotowanie
zewnętrznego dysku. Z racji zajmowanego miejsca konieczne może się okazać zrobienie
extroota. Zakładam że dysk jest podmontowany w katalogu
/mnt/sda1, natomiast witryna będzie umieszczona w katalogu /www. Sam serwer będzie nasłuchiwał na porcie 9092.
Instalacja rtorrentaPrzygotowałem niezbędne nowe pakiety z rtorrentem które mogą być zainstalowane (na platformę ar71xx)
opkg install http://eko.one.pl/openwrt/rtorrent/libsigcxx_2.2.8-1_ar71xx.ipk http://eko.one.pl/openwrt/rtorrent/libtorrent_0.12.7_r1189-1_ar71xx.ipk
opkg install http://eko.one.pl/openwrt/rtorrent/xmlrpc-c_1.24.4_r2055-1_ar71xx.ipk
opkg install http://eko.one.pl/openwrt/rtorrent/rtorrent_0.8.7_r1189-1_ar71xx.ipk
zainstaluje się rtorrent wraz z zależnościami. Niezbędny okaże się jeszcze screen
opkg install screen
Konfiguracja rtorrentaPlik konfiguracyjny opisany jest na stronie projektu
http://libtorrent.rakshasa.no/browser/trunk/rtorrent/doc/rtorrent.rc#latest. Wystarczy jak zostanie utworzony z podstawowymi opcjami. Tworzymy plik
touch /root/.rtorrent.rc
I umieszczamy w nim następującą zawartość
min_peers = 40
max_peers = 100
min_peers_seed = 10
max_peers_seed = 50
max_uploads =3
download_rate = 0
upload_rate = 20
directory = /mnt/sda1/rtorrent/download
session = /mnt/sda1/rtorrent/session
port_range = 6900-7000
port_random = yes
check_hash = yes
use_udp_trackers = yes
scgi_local = /tmp/rtorrent.socket
schedule = chmod,0,0,"execute=chmod,777,/tmp/rtorrent.socket"
Tworzymy brakujące katalogi
mkdir -p /mnt/sda1/rtorrent/session/
mkdir -p /mnt/sda1/rtorrent/download
I to w sumie wszystko. Można uruchomić rtorrenta poleceniem
rtorrent
Powinien uruchomić się. Można dodawać torrenty, wszystko będzie działać. Opis klawiszologii opisany jest na witrynie projektu. Podam tylko jeden - wyjście przez naciśnięcie Ctrl-Q
Jeżeli rtorrent działa i nie zgłasza problemów można zrobić plik startowy:
touch /etc/init.d/rtorrent
i umieścić w nim kod
#!/bin/sh /etc/rc.common
START=99
start() {
rm -f /tmp/rtorrent.socket || true
HOME=/root screen -dmS torrenty rtorrent
}
Następnie należy jeszcze uruchomić całość
chmod 755 /etc/init.d/rtorrent
/etc/init.d/rtorrent enable
/etc/init.d/rtorrent start
Instalacja i konfiguracja lighttpd/phpOpisana jest także na mojej witrynie
http://eko.one.pl/?p=openwrt-http#lighttpd. Instalujemy serwer wraz z niezbędnymi modułami i php
opkg install lighttpd php5-fastcgi libsqlite3 lighttpd-mod-access lighttpd-mod-auth lighttpd-mod-scgi lighttpd-mod-fastcgi
Plik konfiguracyjny to /etc/lighttpd/lighttpd.conf. Gotowy może wyglądać następująco:
server.modules = (
"mod_access",
"mod_auth",
"mod_fastcgi",
"mod_scgi"
)
server.network-backend = "write"
server.document-root = "/www/"
index-file.names = ( "index.php", "index.html", "default.html", "index.htm", "default.htm" )
mimetype.assign = (
".pdf" => "application/pdf",
".class" => "application/octet-stream",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml"
)
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
server.port = 9092
server.pid-file = "/var/run/lighttpd.pid"
fastcgi.server = (
".php" => ((
"host" => "127.0.0.1",
"port" => 1026,
))
)
auth.debug = 2
auth.backend = "plain"
auth.backend.plain.userfile = "/etc/lighttpd/lighttpd.user"
auth.require = (
"/" =>
(
"method" => "basic",
"realm" => "rutorrent",
"require" => "user=admin"
)
)
scgi.server = (
"/RPC2" =>
( "127.0.0.1" =>
(
"socket" => "/tmp/rtorrent.socket",
"check-local" => "disable",
"disable-time" => 0,
)
)
)
server.event-handler = "poll"
Dostęp do witryny zabezpieczony zostanie hasłem - użytkownik admin, hasło admin
echo "admin:admin" >> /etc/lighttpd/lighttpd.user
Należy uruchomić php-fcgi oraz sam serwer www:
/etc/init.d/php enable
/etc/init.d/lighttpd enable
/etc/init.d/php start
/etc/init.d/lighttd start
Instalacja i konfiguracja rutorrentaTu należy po prostu ściągnąć źródła i rozpakować do katalogu /www
cd /www
wget http://rutorrent.googlecode.com/files/rutorrent-3.2.tar.gz
tar zxvf rutorrent-3.2.tar.gz
rm rutorrent-3.2.tar.gz
mv * ../
rm -r rutorrent
Zostaje jeszcze konfiguracja - zawarta jest w pliku /www/conf/config.php. Jedyna zmiana jaką należy wykonać to wyrzucić/zakomentować linie
$scgi_port = 5000;
$scgi_host = "127.0.0.1";
a dodać/odkomentować linie
$scgi_port = 0;
$scgi_host = "unix:///tmp/rtorrent.socket";
I to wszystko. Wejście na stronę routera pod adres
http://192.168.1.1/ powinno skutkować wyświetleniem strony (dla przypomnienia: login admin, hasło: admin)
Należy mieć na uwadze informacje zawarte w pierwszym akapicie.