Linux letöltőgép
Először is tisztázzuk, hogy mit várunk el a rendszertől:
- töltse le a torrenteket
- a fájlokat windows megosztáson keresztül lehessen elérni
- egy weboldal a torrentek kezeléséhez
Az egész alapja legyen egy Ubuntu 8.04 lts server (Ubuntu, mert sokan használják, ezért könnyű hozzá segítséget kapni, ráadásul ha belefutunk egy problémába, szinte biztos nem mi leszünk az elsők, így már jó eséllyel a megoldást is megtalálta valaki más; 8.04 lts mert hosszú életciklusú kiadás lévén nem nagyon fognak változni a csomagok; és server mert nincs szükségünk a desktop csili-vilire, ami csak a memóriát és a processzort fogyasztaná - az alábbi konfiguráció kb 30MB memóriát használ).
Tehát tegyük fel, hogy a fenti gép felinstallálva vár minket (erről rengeteg tutorial található a neten, de mivel next-next-finish bonyolultságú, ezért önállóan is könnyen felrakható). A gép neve legyen torrent, a felhasználóé pedig pistike (született Vér István).
Ha még nincs ssh szerver installálva, akkor kezdjük azzal.
sudo apt-get install openssh-server
Ezután már el is süllyeszthetjük a gépet a kamrába/pincébe/garázsba :)
rtorrent
A következő lépés az rtorrent felrakása.
sudo apt-get install rtorrent
Egy példa konfigurációt a /usr/share/doc/rtorrent/examples/rtorrent.rc helyen találunk (illetve inkább egy vázat, mert minden érték ki van benne kommentezve). Hozzuk létre a saját konfigurációs fájlunkat:
nano ~/.rtorrent.rc
és állítsuk be a következőket:
# Nem szeretnénk, hogy a teljes kimenő sávszélt elvigye a seed (KiB)
upload_rate=500
# A még letöltés alatt levő fájlok itt tanyáznak
directory=/home/pistike/torrent/.downloading/
# Az rtorrent itt tartja nyilván, hogy melyik torrenttel hol tart.
session=/home/pistike/torrent/.downloading/rtorrent.session/
# Ha ide másolunk egy torrentet, akkor az rtorrent elkezdi azt letölteni
schedule=watch_directory,5,5,load_start=/home/pistike/torrent/watch/*.torrent
# Ha letöröljük, akkor leállítja
schedule=untied_directory,5,5,stop_untied=
# A kész torrenteket az átmeneti könyvtárból a végleges helyükre tesszük
on_finished=move_complete,"execute=mv,-u,$d.get_base_path=,/home/pistike/torrent/;d.set_directory=/home/pistike/torrent/"
# Ezeket a portat használjuk. A tűzfalon engedélyezni kell a port-forwardot!
port_range=6890-6999
# Az scgi porton keresztül fogunk kommunikálni a web szerverrel
scgi_port=127.0.0.1:5000
# Engedélyezzük a titkosított kapcsolatokat, de nem erőltetjük a dolgot
encryption=allow_incoming,enable_retry,prefer_plaintext
Ctrl-O -val mentsük el, majd Ctrl-X -szel lépjünk ki. Hozzuk létre a könyvtárakat
mkdir ~/torrent
mkdir ~/torrent/.downloading/
mkdir ~/torrent/.downloading/rtorrent.session
mkdir ~/torrent/watch
Ha most a ~/torrent/watch könyvtárba másolunk egy torrentet
wget -P ~/torrent/watch http://torrent.ubuntu.com/simple/jaunty/desktop/ubuntu-9.04-desktop-i386.iso.torrent
és elindítjuk az rtorrentet
rtorrent
akkor pár másodperc (5-öt állítottunk be) után látnunk kellene, hogy már töltődik is lefele.
Ctrl-Q -val ki tudunk kilépni. Tehát már működik a letöltés, de még nekünk kell kézzel elindítani a programot, és ha kilépünk, akkor le is áll. Tehát indítsuk el daemonként! Ehhez szükségünk lesz a screen nevű csomagra
sudo apt-get install screen
ami virtuális képernyőket tud futtatni, és ami a számunkra lényeges, hogy ezeket kijelentkezés után is megtartja. Töltsük le az indítófájlt
wget http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh
állítsuk be a usert. Lustáknak: :)
sed -i 's/^user="user"$/user="pistike"/g' rtorrentInit.sh
Pakoljuk a helyére
sudo mv rtorrentInit.sh /etc/init.d/rtorrent
Tegyük futtathatóvá
sudo chmod a+x /etc/init.d/rtorrent
és állítsuk be, hogy a rendszerrel együtt induljon
sudo update-rc.d rtorrent defaults
Indítsuk el most kézzel
sudo /etc/init.d/rtorrent start
Nézzük meg, hogy tényleg fut-e (bár elvileg kiírta, hogy elindult, de azért menjünk biztosra)
ps ax|grep rtorrent
Három sort kellene látnunk:
Ebből nekünk az első érdekes. Ez azt mutatja, hogy az rtorrent fut a háttérben. Tehád eddig minden remek. Nézzük meg, hogy mit csinál.
screen -r rtorrent
Ez gyakorlatilag ugyanaz a képernyő, mint az előbb volt (csak már haladt egy kicsit). Fontos, hogy innen ne a Ctrl-Q billentyűvel lépjünk ki, mert az az rtorrent-et zárná be, amit nem akarunk. A screen-ből a Ctrl-A d billentyűkkel tudunk kilépni. Ha le akarjuk állítani az rtorrentet, azt a
sudo /etc/init.d/rtorrent stop
paranccsal tehetjük meg, de szerintem egyelőre hagyjuk életben :)
samba
Tehát van most már torrent szerverünk, ami fut a háttérben, de még csak konzolon férünk hozzá, és a fájlok (torrentek és a letöltöttek) kezelése sem valami kényelmes. Ahhoz, hogy a fájlokat kényelmesen elérhessük, szükségünk lesz a samba nevű csomagra. Ezzel létre tudunk hozni windowsos megosztásokat, amikkel sokkal könnyebb hozzáférni a fájlokhoz. Tehát telepítsük fel:
sudo apt-get install samba
Engedélyezzük, hogy samba-n keresztül is lássuk a saját könyvtárunkat. Ehhez
sudo nano /etc/samba/smb.conf
majd adjuk hozzá a fájlhoz a következőket
[homes]
comment = Home Directories
browseable = yes
read only = no
ezután engedélyeznünk kell a felhasználót
sudo smbpasswd -e pistike
Adjunk meg egy jelszót. Már csak értesíteni kell a samba-t, hogy megváltoztak a körülmények. Ehhez indítsuk újra
sudo /etc/init.d/samba restart
Most már a távoli gépen is felcsatolhatjuk a meghajtót. Ha ez egy windows, akkor
net use t: \\torrent\pistike
majd adjuk meg felhasználónevet/jelszót. Ezzel létrejött egy t meghajtó. A torrent fájlokat a t:\torrent\watch könyvtárba kell pakolni, a letöltött fájlok pedig a t:\torrent helyre kerülnek.
rtgui
Most már sokkal kényelmesebb kezelni az egészet, és végülis teljesen jól el is végzi a dolgát a szerver, de nincs hozzá csili-vili felület. Hát rakjunk rá! Ehhez először is szükségünk lesz egy web szerverre, meg hozzá egy pár modulra:
sudo apt-get install apache2 php5 php5-xmlrpc libapache2-mod-scgi
Ezután állítsuk ba az apache-ot. Ehhez a konfig fájlba
sudo nano /etc/apache2/sites-enabled/000-default
szúrjuk be az alábbi két sort (a záró VirtualHost tag elé)
LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
SCGIMount /RPC2 127.0.0.1:5000
lustáknak: :)
sudo sed -i 's/<\/VirtualHost>/ LoadModule scgi_module \/usr\/lib\/apache2\/modules\/mod_scgi.so\n SCGIMount \/RPC2 127.0.0.1:5000\n<\/VirtualHost>/g' /etc/apache2/sites-enabled/000-default
egy előtte/utánna kép, csak hogy egyértelmű legyen
Töltsük le a frontendet
wget http://rtgui.googlecode.com/files/rtgui-0.2.7.tgz
majd csomagoljuk ki
sudo tar xvzf rtgui-0.2.7.tgz -C /var/www
A példa konfiguráció kiindulásnak jó lesz
cp /var/www/rtgui/config.php.example /var/www/rtgui/config.php
Állítsuk be a könyvtárakat
sed -i 's/^$watchdir=.*/$watchdir="\/home\/pistike\/torrent\/watch\/";/g' /var/www/rtgui/config.php
sed -i 's/^$downloaddir=.*/$downloaddir="\/home\/pistike\/torrent\/";/g' /var/www/rtgui/config.php
sed -i 's/^$rtguiurl=.*/$rtguiurl="http:\/\/torrent\/rtgui\/";/g' /var/www/rtgui/config.php
A
grep -E 'watchdir|downloaddir|rtguiurl' /var/www/rtgui/config.php
paranccsal ellenőrizni tudjuk, hogy jól lett-e az eredmény. Ilyet kellene kapnunk:
A watchdir-t írhatóvá kell tennünk az apache számára is
chmod 777 ~/torrent/watch
És van egy bug is a felületen (nem lehet torrentet hozzáadni), amit a leírás szerint javítottak, de a gyakorlatban nem így tűnik. Úgyhogy ha szeretnénk használni a web felületről a torrent hozzáadást, akkor ki kell javítanunk (miután feltöltöttük a fájl, meg kell változtatunk a hozzáférési jogait, hogy más is tudja olvasni). Ezt a lépést csak akkor kell végrahajtani, ha 0.2.7-es rtguit-rakjuk fel, a későbbi verziókban ezt már lehet, hogy javították!
awk '//{print}/move_uploaded_file/{print " @chmod($watchdir.basename($_FILES[\47uploadtorrent\47][\47name\47]), 0777);"}' /var/www/rtgui/control.php>control.php
mv control.php /var/www/rtgui/control.php
Valami ilyesmi az elvárt eredmény
Már csak az apache újraindítása van hátra
sudo /etc/init.d/apache2 restart
És ta-da-da-daaaam
disclaimer
A biztonsági részével nem foglalkoztam, feltételeztem, hogy a gépet csak belső hálózatról, megbízható, alapvetően jóindulatú emberek érik el. Ha csak ez egyik feltétel is nem teljesül, akkor mindenképpen foglalkozni kell a kérdéssel!