Home > Informatica, Linux Admin, Linux multimedia, Open Source-Free Software > [Guida]Realizziamo un server a basso costo per mail, torrent e condivisione files (Parte 7)

[Guida]Realizziamo un server a basso costo per mail, torrent e condivisione files (Parte 7)

Eccoci giunti alla penultima parte di questa guida. Oggi affrontiamo l’installazione del client per bittorrent con gestione via web. In particolare, affronteremo l’installazione delle librerie per Torrent Rasterbar. Si tratta di una libreria scritta in C++ per sfruttare il sistema di P2P Bittorrent in maniera alternativa rispetto ad altre soluzioni. Non si tratta quindi di un client vero e proprio, ma di una libreria che verrà poi sfruttata, nel nostro caso, da un client WEB.

Se ti interessa installare il client BTG su una distribuzione CentOS Gnu/Linux o sue derivate, puoi leggere questo articolo

Nella parte introduttiva di questa guida avevo detto che avrei usato come client torrent via web il famoso e noto torrentflux. Tuttavia, ho deciso di cambiare client e di usare le librerie torrent di Rasterbar con interfaccia grafica BTG. Il motivo principale di tale scelta è di natura pratica (oltre che per motivi di risparmio delle risorse) ed è dato dalla possibilità di impostare una velocità di upload univoca per tutti i torrent aperti, mentre con torrentflux si può impostare solo la velocità massima di upload per ogni singolo torrent. Non sto a spiegarvi i motivi tecnici di tale handicap, vi basti sapere che con torrentflux, per ogni download, aprite un client torrent con conseguenti moltiplicazioni delle risorse usate!

Detto questo, passiamo alla parte pratica della guida e procediamo con l’installazione delle librerie Rasterbar. Per chi ha effettuato l’upgrade della Debian da Etch a Lenny sulla Alix, è sufficiente lanciare un apt-get per installare le librerie nella versione 0.13.1:

# apt-get install libtorrent-rasterbar0

Chi, invece, non ha effettuato l’upgrade dovrà ricompilare “a manina” le librerie rasterbar in quanto sulla debian etch la versione che si scarica con apt-get è davvero troppo vecchia!

Dopo aver installato le librerie di Rasterbar, possiamo procedere con l’installazione dei pacchetti necessari alla compilazione del client web BTG:

# apt-get install build-essential libgnutls-dev libboost-iostreams-dev libboost-filesystem-dev  libboost-date-time-dev libboost-thread-dev libboost-program-options-dev libssl-dev pkg-config libexpat1-dev dialog libncurses5-dev libboost-serialization-dev libboost-regex-dev curl libtorrent-rasterbar-dev php5-curl

Quanto sopra riportato deve essere inserito su un unico rigo :)

A questo punto scarichiamo i sorgenti dell’ultima release di BTG (0.9.9 nel momento in cui scrivo):

# cd /tmp
# wget http://download.berlios.de/btg/btg-0.9.9.tar.gz
# tar xzvf btg-0.9.9.tar.gz

E procediamo con la compilazione:

# cd cd btg-0.9.9
# ./configure –enable-www –enable-session-saving –enable-event-callback –enable-cli –enable-command-list –enable-btg-config
# make
# make install

Se la compilazione dovesse concludersi con un errore di memoria insufficiente, potete spostare la directory btg-0.9.9 sul disco esterno e riprendere il make da lì:

# mv /tmp/btg-0.9.9 /dati/
# cd /dati/btg-0.9.9
# make

A questo punto dobbiamo iniziare la configurazione del software. Iniziamo con la creazione della directory dove verranno inseriti i files di configurazione:

# mkdir /etc/btg

Continuiamo con la creazione di una directory sul disco esterno (supponendo che questo sia montato sulla dir /dati) dove inserire le liste degli IP bannati, le liste dei filtri in stile emule e le sessioni salvate:

# mkdir /dati/btg

A questo punto creiamo alcuni files necessari al funzionamento del demone in base a quello che inseriremo nel file di configurazione daemon.ini che vi mostrerò più avanti:

# touch /var/log/btg-torrent.log
# touch /dati/btg/daemon.saved

Procediamo con la creazione del file di configurazione daemon.ini. Create questo file nella dir /etc/btg in questo modo:

# touch /etc/btg/daemon.ini

Aprite il file appena creato con il vostro editor preferito ed inserite questo contenuto:

[auth]
passwd-file=/etc/btg/passwd
[transport]
default=xml-rpc
[network]
listen-to=0.0.0.0:16000
torrent-range=10024:10025
[logging]
type=file
filename=/var/log/btg-torrent.log
[misc]
banfile=/dati/btg/bans
filter=emule
filename = /dati/btg/ipfilter.dat
[savesessions]
enable=true
filename=/dati/btg/daemon.saved
timeout=60
[limit]
upload_rate_limit = 32000
download_rate_limit= -1
max_uploads = -1
max_connections = -1

Il contenuto del file si commenta da solo e quindi evito di spiegarne tutte le sezioni. Ci tengo però a precisare che nel mio caso ho configurato un upload massimo di circa 32KB e che ho impostato il limite di uso a -1… nel senso che sfrutterà l’intero upload limit, come se la mia adsl potesse avere una velocità massima in upload di meno di 32 KB.

Adesso creiamo un link simbolico dal contenuto dei files per il server web verso la directory di Apache:

# ln -s  /usr/local/share/wwwbtg/htdocs/ /dati/www/btg

Poi, creiamo un utente dal nome “btg” che possa usare il demone BTG senza particolari privilegi:

# adduser –home /dati/torrent –no-create-home –disabled-login –disabled-password –system –group btg

E ancora, iniziamo con la creazione delle directories e di un utente che possa usare il client web:

# mkdir –parent /dati/torrent/stefano/temp
# mkdir –parent /dati/torrent/stefano/work
# mkdir –parent /dati/torrent/stefano/seed
# mkdir –parent /dati/torrent/stefano/dest
# chown -R btg:btg /dati/torrent/stefano
# btgpasswd –config /etc/btg/daemon.ini –create –add –temp /dati/torrent/stefano/temp –work /dati/torrent/stefano/work –seed /dati/torrent/stefano/seed –dest /dati/torrent/stefano/dest –password –username stefano
# usermod -a -G btg stefano

Ovviamente sostituite la parola “stefano” con quella del vostro utente e ripetete le operazioni sopra riportate per ogni eventuale user che vorrete abilitare al download dei torrent.

Non ci resta che prelevare l’ottimo file di init creato da Pierre-Yves Landuré per fare in modo che btg si avvii come demone ad ogni avvio del serverino Alix. Il file btg-daemon lo potete prelevare da qui. Dovete scaricarlo nella directory /etc/init.d in questo modo:

# cd /etc/init.d
# wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-btg-et-son-interface-web-wwwbtg-sur-debian-4-0-etch/btgdaemon

Concludiamo configurando lo start del demone in automatico all’avvio tramite update-rc.d:

# update-rc.d btgdaemon defaults

Avviamo il demone:

# /etc/init.d/btgdaemon start

E da adesso in poi possiamo iniziare ad usare il nostro client web. Aprite il vostro broswer preferito e puntatelo a questo indirizzo:

http://<vostro_IP>/btg

Dopo il primo login vi verrà chiesto di inserire la prima configurazione… è tutto semplicissimo, inserite i dati che vi chiede e sarete pronti a scaricare ;)

Ti è piaciuto questo articolo? Abbonati alla newslettere per ricevere i nuovi articoli inseriti nel sito:


 

  1. francesco
    10 aprile 2009 a 15:00 | #1

    Ciao,
    sono sercik, credo ti ricorderai dal momento che ci siamo sentiti per email.

    Che ne dici di rtorrent?

  2. stefano
    10 aprile 2009 a 23:43 | #2

    @ francesco:
    Mmmm non lo so… non l’ho mai usato.. ma usa le libtorrent?

  3. francesco
    14 aprile 2009 a 12:24 | #3

    @ stefano:
    Si usa le libtorrent

    Forse mi puoi dare una mano ad installare btg con le libtorrent rastaerbar come nella tua guida
    il fatto è che io uso clarkconnect basata su centos
    e sto compilando tutto a manina :)

    Ho dapprima scaricato ed installato boost 1.35 (ho visto che libtorrent voleva >=1.35)
    ma adesso nel configure di libtorrent mi dice:

    ##########
    checking whether the Boost::Python library is available… yes
    checking for main in -lboost_python… no
    checking for main in -lboost_python… (cached) no
    configure: error: Unable to find Boost.Python library, this is required to build python bindings.
    ###############

    Hai qualche idea??

  4. francesco
    14 aprile 2009 a 18:01 | #4

    Adesso sto facendo rpmbuild di boost-1.37 per fedora 11 e sembra vada bene, sta compilando da ore ormai (pazzesco). Comunque quando ho compilato boost-1.35 c’è stato pochissimo, evidentemente compilava poche cose, tra l’altro il getting started di boost è complicatissimo non riesco a capirci quasi niente…
    speriamo di risolvere con questo boost da src.rpm, sempre che non mi fonda prima il PC :)

  5. stefano
    14 aprile 2009 a 21:47 | #5

    @ francesco:
    stai facendo da solo ed è un bene :)
    io quando sento rpm rabbrividisco brrrrr :D

  6. francesco
    15 aprile 2009 a 16:05 | #6

    @ stefano:
    Scusa se continuo a postare, ma mi ma un conforto morale :)
    alla fine non sono stato capace di compilare boost da tar.gz però ho compilato con successo boost 3.7 da src.rpm con rpmbuild –rebuild.

    Adesso ho compilato con successo libtorrent-rasterbar e sto cercando di compilare btg-0.9.9 erano rimasti pezzi di btg-0.35 che facevano impazzire il configure di btg.. strano che che il configure di libtorrent non si sia lamentato.

    ho fatto pulizia dei pezzi di btg-1.35 ed ora btg mi rompe le scatole con la mancanza di un certo dialog, fortunatamente pare che sia sufficiente un yum install dialog
    adesso vediamo…

    ho un dubbio, non so se puoi aiutarmi:

    checking whether XML-RPC headers can be used… no
    configure: Cannot use XML-RPC headers from the specified location
    checking whether XML-RPC library can be used… no
    configure: Cannot link with XML-RPC from the specified location
    configure: Using internal XML-RPC implementation.

    io ho installato sia python-xmlrpc che compilato ed installato da sorgenti xmlrpc-c da qui: http://xmlrpc-c.svn.sourceforge.net/viewvc/xmlrpc-c/advanced/

    ciao e grazie ancora per stare lì a leggere le scemate che scrivo

    Poi la mia esperienza magari la facciamo fruttare e scriviamo una guida per l’installazione su clarkconnect community 5 beta2 :)

  7. francesco
    15 aprile 2009 a 16:09 | #7

    francesco wrote:

    @ stefano:
    erano rimasti pezzi di btg-0.35 che facevano impazzire il configure di btg..

    errore volevo dire boost-1.35

    ho fatto pulizia dei pezzi di btg-1.35 e

    anche qui volevo scrivere boost-1.35

  8. francesco
    16 aprile 2009 a 11:18 | #8

    Sono contento! sono riuscito a compilare il tutto e pare funzioni aggiungendo anche la peronalizzazione del nome utente e del percorso delle cartelle

    purtroppo lo script non funziona perchè non sono su debian credo…
    Non so esattamente cosa facesse lo script, ma forse scarica lista di indirizzi ipfilter.dat?

    ti chiedo solamente un ultimo aiuto:
    è possibile far funzionare lo script su una derivata centos?

    Ci sono porte da aprire nel firewall? quali?

    P.S. Se usate clarkconnect o centos o qualunque altra derivata basata su contos 5 potete usare btg con successo.

    Tutte le dipendenze sono nei repository e dovete solamente compilare boost, asio, libtorrent-rasterbar e lo stesso btg

    vi dico i file che serve scaricare e compilare

    autoconf-2.61-10.fc9.src.rpm
    automake-1.10.1-2.src.rpm
    m4-1.4.10-3.fc9.src.rpm

    questi devono essere compilati con rpmbuild –rebuild e poi installati con rpm -Uvh nomefile

    questo è necessario per creare un ambiente di compilazione adeguato ed aggiornato

    poi è necessario compilare le libtorrent-rasterbar e per far questo dobbiamo prima compilare asio

    date in successione i seguenti comandi

    cvs -d:pserver:anonymous@asio.cvs.sourceforge.net:/cvsroot/asio login

    cvs -z3 -d:pserver:anonymous@asio.cvs.sourceforge.net:/cvsroot/asio co -P asio

    P.S. Il primo comando vi chiederà una password ma è sufficiente dare invio.

    poi entriamo nella cartella asio e passiamo alla compilazione:
    ./configure –prefix=/usr
    make
    make install

    Adesso passiamo alle libtorrent-rasterbar io ho compilato senza grossi problemi queste:
    libtorrent-rasterbar-0.14.2.tar.gz scompattate entrate nella cartella
    io ho dato un:
    ./configure –with-boost-python –prefix=/usr –with-ssl –with-asio=/usr/include/asio
    make
    make install

    ora dobbiamo compilare ed installare btg-0.9.9 scompattate, entrate nella cartella
    basta dare:
    ./configure –enable-www –enable-session-saving –enable-event-callback –enable-cli –enable-command-list –enable-btg-config –enable-gui –with-xmlrpc-prefix=/usr –enable-url
    make
    make install

    Per tutte le altre info potete eguire la guida del grande stefano

    Ciao stefano!

  9. stefano
    16 aprile 2009 a 14:27 | #9

    @ francesco:
    Francesco.. a quale script ti riferisci?

    Le porte da aprire sul fw sono la TCP 16000 per raggiungere l’interfaccia web di btg e, ovviamente, le porte 10024 e 10025 (sempre TCP) per il corretto funzionamento delle librerie torrent ;)

    Cmq ti ringrazio tantissimo per le informazioni di compilazione su distro rpm-like… che ne dici di sistemare un po’ meglio in un file di testo le istruzioni e di pubblicare un bell’articolo a tuo nome?
    fammi sapere,
    Stefano

  10. francesco
    16 aprile 2009 a 16:31 | #10

    Mi riferisco allo script di init. Tu dici nella guida ottimo file di init creato da Pierre-Yves Landuré
    ecco quello non funziona su centos. in particolare dice che non trova vars.sh. ho provato a darci una occhiata, ma non sono abbstanza bravo.

    comunque al limite btg lo faccio partire da rc.local

    per quanto riguarda le porte pensavo di aver capito, in effetti è scritto nel file di configurazione:

    listen-to=0.0.0.0:16000
    torrent-range=10024:10025

    quel 0.0.0.0 che diavolo significa??

    Io ho appunto scritto tutto quello che potevo per aiutare eventualmene qualcuno.

    comunque non sono pratico di html
    puoi benissimo sistemarlo tu e pubbliacarlo anche a tuo nome.
    d’altronde sei tu quello bravo :)

    comunque puoi mettere il mio indirizzo di posta a disposizione di coloro volessero aiuto per compilare su centos e su clarkconnect

    Ciao

    ho notato che c’è un errore nel post, ho dimenticato di dire come compilare boost l’ho anche riscritto un poco meglio.
    lo puoi cancellare che lo riscrivo? perchè non è possibile modificare il post.

    Questo programma è meraviglioso è l’unico che fa sfigurare quasi utorrent su windows purtroppo sarebbe comodissima una possibilità, ossia quella di fare partire i torrent in automatico come invece è possibile fare con rtorrent.

    basta mettere il torrent all’interno di una cartella e parte automaticamente il download.
    utilizzare questa funzione in combinazione con l’estensione di firefox “automatic save folder” è qualcosa di spettacolare.
    Da firefox salvi i file torrent in un preciso posto (sempre lo stesso ed in qutomatico grazie all’estensione) e rtorrent parte automaticamente a scaricare.

  11. stefano
    16 aprile 2009 a 17:15 | #11

    @ francesco:
    Lo script di init serve a fare avviare il “giochetto” all’avvio del pc/server… è, ovviamente, dedicate a Debian e, quindi, è normale che sulla tua distro non funge ;)

    Concordo in pieno con te in merito alla potenza di questo sistema per usare il sistema di p2p torrent… non a caso ho deciso di utilizzare questo sistema al posto dell’iniziale uso del sistema di torrentflux ;)

    Un’ultima cosa… se non ti dispiace, visto che hai risistemato il commento che, però, non puoi modificare, mi puoi mandare una mail con il “nuovo commento” all’indirizzo posta@INDIRIZZODELBLOG.eu ? (ovviamente sostituisci INDIRIZZODELBLOG con stefanolaguardia.eu ;) ) Se mi invii il commento sistemo io la paginetta da pubblicare… poi se mi dai anche il tuo nome-cognome o il tuo nick, lo inseriamo come tuo articolo sotto licenza CC come quella del sito e, così, la paternità resta la tua perchè mi sembra giusto che sia così ;)

    Ciao,
    Stefano

    P.S.:Cmq hai fatto davvero un ottimo lavoro, complimenti!

  12. pamarcan
    17 aprile 2009 a 9:37 | #12

    grazie per la guida, ma credo di avere un problema di permessi o forse ho sbaglaito qualcosa:
    al momento di aggiungere l’utente pippo con btgpasswd mi da l’errore

    btgpasswd: Unable to add user.

    pippo è un normale utente con la sua home in /home/pippo e senza particolari permessi creato con un semplice useradd. se uso -v con btgpasswd mi dice in più

    control flag ’0′
    callback ‘!’

  13. pamarcan
    17 aprile 2009 a 11:41 | #13

    @ pamarcan:

    ops scusate, il problema di prima l’ho risolto ricompilando btg.
    ora all’avvio del btgdaemon mi dice:

    btgdaemon: Could not open/create session file ‘ /dati/btg/daemon.saved’

    mmm…permessi?

  14. stefano
    17 aprile 2009 a 12:12 | #14

    @ pamarcan:
    Si :) Permessi al 100%
    Devi dare i diritti di scrittura sulla dir /dati/btg/ all’utente che avvia il demone di btg ;)

  15. pamarcan
    17 aprile 2009 a 16:51 | #15

    @ stefano:
    ok ma il fatto è che è root a far partire il servizio, non dovrebbero esserci problemi di permessi

  16. stefano
    17 aprile 2009 a 17:07 | #16

    @ pamarcan:
    Root ?!?!?! Mmmmm
    Potrei sbagliarmi, ma a memoria ricordo che l’user che *esegue* il servizio sia uno di nome “btg”… in qsto momento nn ho accesso al server quindi nn posso controllare, ma ti invito a verificare l’user che esegue btgdaemon!

  17. pamarcan
    17 aprile 2009 a 17:15 | #17

    @ stefano:

    hai ragione lo esegue btg, ho cambiato l’owner di /dati ma niente stesso errore

    chown -R btg:btg /dati

  18. pamarcan
    18 aprile 2009 a 10:04 | #18

    ok son riuscito a far partire btgdaemon ma non riesco ad accedere al server, neanche in locale o localhost. le porte sul firewall sono aperte anche se nmap non trova nulla.

  19. stefano
    18 aprile 2009 a 10:37 | #19

    @ pamarcan:
    sul server verifica che i servizi siano attivi e le porte aperte con un
    netstat -tap

    Se nmap nn trova niente vuol dire che le porte non sono aperte :)

  20. pamarcan
    18 aprile 2009 a 10:58 | #20

    questo è l’output

    tcp 0 0 *:16000 *:* LISTEN 3396/btgdaemon

  21. stefano
    18 aprile 2009 a 11:15 | #21

    @ pamarcan:
    il demone è attivo… ma che interfaccia usi per connetterti al demone? Se segui la mia guida io consiglio di usare l’interfaccia WEB… ma hai un demone web attivo? (apache, lighttpd, etc)

  22. pamarcan
    18 aprile 2009 a 12:43 | #22

    ok risolto

    avevo impostato male lighttpd.conf

    grazie mille per l’aiuto :)
    a buon rendere

  23. nux
    12 maggio 2009 a 12:17 | #23

    Ciao,
    ho seguito pedissequamente la tua guida.

    Ho un problema quando faccio il make di btg-0.9.9 mi da:

    g++ -DHAVE_CONFIG_H -I. -I.. -DTORRENT_USE_OPENSSL -DNDEBUG -pthread -I/usr/include/libtorrent -I.. -pthread -I/usr/include -g -O2 -DNDEBUG -DBTG_DEBUG=0 -DBTG_OPTION_SAVESESSIONS=0 -DBTG_OPTION_EVENTCALLBACK=0 -DBTG_OPTION_UPNP=0 -DBTG_OPTION_USELTUPNP=0 -DBTG_OPTION_USECYBERLINK=0 -DBTG_REV=TRUNK -DBTG_OPTION_URL=0 -DBTG_INTERNAL_XMLRPC=1 -g -O2 -MT libdaemon_la-daemonhandler_url.lo -MD -MP -MF .deps/libdaemon_la-daemonhandler_url.Tpo -c daemonhandler_url.cpp -fPIC -DPIC -o .libs/libdaemon_la-daemonhandler_url.o
    g++: Internal error: Killed (program cc1plus)
    Please submit a full bug report.
    See for instructions.
    make[3]: *** [libdaemon_la-daemonhandler_url.lo] Error 1
    make[3]: Leaving directory `/tmp/btg-0.9.9/daemon’
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory `/tmp/btg-0.9.9/daemon’
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/tmp/btg-0.9.9′
    make: *** [all] Error 2

    Cosa potrebbe essere?

  24. stefano
    12 maggio 2009 a 22:02 | #24

    @ nux:
    Pare che sia un problema del compilatore…
    http://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg226450.html

  25. Jack
    4 luglio 2009 a 22:09 | #25

    Ciao Stefano, ho un problemino con l’interfaccia web di BTG :( ogni volta che imposto i “Global limit” tramite l’interfaccia web, il sistema li resetta tutti come di default, cioe’ tutto illimitato. Non riesco a capire come questo accada, il file daemon.saved dove ci sono le sessioni con i vari dati (tra cui mi sembra di aver capito anche i limiti per ogni sessione) è di proprietà dell’user “btg” e quindi non ci sono problemi di permessi, almeno credo.
    Non so proprio più dove andare a guardare, ti è mai capitato questo problema? Google non sembra nemmeno dalla mia parte, spero in una risposta, ciao!

  26. stefano
    5 luglio 2009 a 13:16 | #26

    @ Jack:
    Ciao. A me succedeva negli ultimi giorni che gli impostassi le velocità massime, ma che ad un successivo riavvio avesse perso tutto. Purtroppo prima d poter capire cosa era successo ho avuto un problema hardware (spero sia colpa della CF) e ancora non ho ripristinato :(

  27. Grosselle Alessandro
    31 ottobre 2009 a 13:14 | #27

    ciao e complimenti per l’ottima guida. Ho un problema: quando tento di autenticarmi su btg mi dà sempre come errore: “Failed to connect 127.0.0.1:16000: connection refused”. Hai qualche idea di come risolvere questo problema?

  28. stefano
    1 novembre 2009 a 18:06 | #28

    @ Grosselle Alessandro:
    Ciao,

    apri un terminale e prova a verificare che la porta 16000 sia in ascolto con il segunente comando:

    netstat -tap

  29. Alessandro Grosselle
    2 novembre 2009 a 14:32 | #29

    Si@ stefano:
    hai ragione non è in ascolto.
    Cerco su google come settare o, in alternativa, se hai tempo, potresti darmi una dritta? grazie ciao

  30. wMe
    17 dicembre 2010 a 15:04 | #30

    per avere un client torrent gestibile via web (voyage linux su alix 2) ho preferito usare rtorrent e l’interfaccia web wtorrent modificata (wtorrent_r108_IT.zip) come riportato qui:
    http://code.google.com/p/wtorrent/

    non si deve compilare nulla, quello che serve è nei repository:
    aptitude install rtorrent screen lighttpd sqlite php5-cgi php5-sqlite php5-curl

    ho messo lighttpd al posto di apache per via della maggiore leggerezza

  1. 14 marzo 2009 a 18:03 | #1
  2. 14 marzo 2009 a 19:29 | #2
  3. 7 aprile 2009 a 16:30 | #3
  4. 20 aprile 2009 a 15:09 | #4