Server per il P2P con Debian

Da Guide@Debianizzati.Org.

Edit-clear-history.png Attenzione. Questa guida necessita di un controllo, per via del tempo trascorso dall'ultima verifica e delle versioni di Debian con cui è stata testata.

Debian-swirl.png Versioni Compatibili
Debian 6 "Squeeze"
Debian 7 "Wheezy"

Indice


Banner e-zine.png
Questa guida è basata sui seguenti articoli presenti all'interno del numero 6 dell'e-zine di Debianizzati.org :

http://e-zine.debianizzati.org/stampa/numero_6.pdf


Introduzione alle reti P2P

Per questa parte rimando all'articolo originale presente sull'e-zine, non essendovi al momento necessità di aggiornamento.

Costruiamo il nostro server

Con la seguente guida descriviamo il modo con cui implementare un server domestico dedicato per il file sharing attraverso reti peer-to-peer. Useremo le seguenti applicazioni:

La rete eDonkey è basata su una serie di server che permettono la localizzazione delle risorse all'interno della rete; è necessario tenere aggiornata la lista dei server poiché è possibile, in qualunque momento, aggiungere nuovi server o rimuoverne di esistenti. La rete Kad, invece, è priva di server, è una rete decentralizzata peer-to-peer di terza generazione che utilizza il protocollo Kademlia in cui ad ogni nodo è associato un ID univoco usato non solo per identificare il nodo stesso ma anche per memorizzare l'hash della risorsa che si vuol condividere; hash ed Id hanno la stessa lunghezza e lhash della risorsa condivisa viene memorizzata nei nodi con valore di Id più prossimi allhash stesso.

Il protocollo BitTorrent, spezzetta la risorsa in parti di dimensione fissa che sono scambiati attraverso la rete peer-to-peer per poi ricomporre il file a destinazione. La descrizione delle parti in cui è suddivisa la risorsa è memorizzata in un file indice che ha estensione .torrent, che contiene anche l'indirizzo URL di uno o più server traccia detti, tracker, che permettono di localizzare il file o le sue parti. I computer appartenenti alla rete domestica useranno dei client web (webUI) per comunicare col server; in questo modo non vi è la necessità di installare programmi aggiuntivi, ma sarà sufficiente il browser.

Amule è la soluzione più diffusa per connettersi alle reti eDonkey/Kad, mentre per quanto riguarda i torrent vi sono valide alternative come Deluge e Transmission, entrambi prevedono la modalità demone con la possibilità di connettersi tramite webUI.

Consideriamo una classica rete domestica costituita da un router DSL al quale si connettono i computer della casa, il nostro server risiederà su un PC dedicato. Si può usare un vecchio computer ormai in disuso. La potenza di calcolo non è importante per i nostri scopi; basta che abbia un hard disk capiente ed inoltre dovrà avere un indirizzo IP pubblico. Nel firewall presente sul router occorrerà aprire alcune porte associandole a tale indirizzo per avere un corretto funzionamento del nostro server di file sharing. Per quanto riguarda la sicurezza/riservatezza, trattandosi di una rete domestica non prendiamo nessuna misura di protezione; al di fuori di una rete domestica è necessario implementare tali meccanismi che non sono però trattati in questa guida.

Installazione di Debian

Per iniziare installiamo sul computer una Debian stable (Squeeze) tramite immagine business-card, reperibile dal sito http://www.debian.org/CD/netinst/ , e ci limitiamo ad installare solo il core del sistema.

Installazione serverp2p.jpg

Durante l'installazione si dovrà specificare un utente: negli esempi proposti è stato scelto mulo siccome mi sembrava essere il nome più adatto. Qualora ne scegliate uno diverso ricordatevi di modificare anche gli script mostrati di seguito. Ovviamente le password dello user e di root sono a vostra discrezione.

Rtorrent

Per poter scaricare o condividere file torrent installiamo il programma Rtorrent, mentre per permettere agli altri computer di connettersi al server tramite webUI installiamo anche il programma Rtgui. Tali software sono reperibili da http://libtorrent.rakshasa.no/http://code.google.com/p/rtgui/ ed essendo nei repository di Debian potremmo installarli sfruttando il solito Apt.

Installazione

# aptitude install rtorrent screen rtgui gawk

Siccome esistono più versioni del server Apache, ci verrà segnalato automaticamente da aptitude quale installare:

The following packages have unmet dependencies:
  apache2-mpm-worker: Conflicts: apache2-mpm which is a virtual package.
  apache2-mpm-prefork: Conflicts: apache2-mpm which is a virtual package.

The following actions will resolve these dependencies:
     Keep the following packages at their current version:
1)     apache2-mpm-worker [Not Installed]


Accept this solution? [Y/n/q/?] y

Diamo pure l'ok.

Configurazione

Directory

Creiamo le directory di lavoro:

$ mkdir -p /home/mulo/torrent/{session,incomplete,watch,complete}

Il loro utilizzo sarà il seguente

File di config

Configuriamo ora Rtorrent creando il file /home/mulo/.rtorrent.rc come il seguente. Ricordate sempre che per avere consigli sul come crearlo a partire da zero potete utilizzare il comodo esempio presente nella documentazione in /usr/share/doc/rtorrent/examples/rtorrent.rc sul quale ho basato la mia configurazione (alias cp).

.rtorrent.rc

(modifiche principali in rosso)

# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
min_peers = 40
max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
min_peers_seed = 5
max_peers_seed = 10

# Maximum number of simultanious uploads per torrent.
max_uploads = 5

# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 75
upload_rate = 5

# Default directory to save the downloaded torrents.
#directory = ./complete
directory = /home/mulo/torrent/

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /home/mulo/torrent/session

# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,10,10,load_start=/home/mulo/watch/*.torrent
schedule = tied_directory,10,10,start_tied=
schedule = untied_directory,10,10,close_untied=
# */
# Close torrents when diskspace is low.
#schedule = low_diskspace,5,60,close_low_diskspace=100M

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
schedule = ratio,60,60,"stop_on_ratio=250,250M,2500"
# Move completed torrents
system.method.set_key = event.download.finished,move_complete,"execute=mv,-u,$d.get_base_path=,/home/mulo/complete;d.set_directory=/home/mulo/complete"

# The ip address reported to the tracker.
#ip = 127.0.0.1
#ip = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
#bind = 127.0.0.1
#bind = rakshasa.no

# Port range to use for listening.
port_range = 6881-6999

# Start opening ports at a random position within the port range.
#port_random = no

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#check_hash = no
check_hash = yes

# Set whetever the client should try to connect to UDP trackers.
use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
# encryption = allow_incoming,enable_retry,prefer_plaintext
encryption = allow_incoming,try_outgoing,enable_retry

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
# 
dht = auto

# UDP port to use for DHT. 
# 
dht_port = 6881

# Enable peer exchange (for torrents not marked private)
#
peer_exchange = yes

#
# Do not modify the following parameters unless you know what you're doing.
#

# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10

# This will set rtorrent/scgi to listen on localhost, port 5000
scgi_port = localhost:5000
# Force rtorrent to use the UTF-8 encoding. The XMLRPC standard requires UTF-8 replies
encoding_list=UTF-8


La maggior parte di queste opzioni sono esplicite, altre un po' ermetiche; è possibile consultare il manuale per avere maggiori informazioni.
Inoltre a questa pagina è possibile avere informazioni avanzate in merito ai possibili comandi utilizzabili.

rtgui

Infine impostiamo alcuni parametri della webGui. Del file /etc/rtgui/config.php è sufficiente modificare i seguenti sulla base delle proprie impostazioni appena assegnate:

$watchdir="/home/mulo/torrent/watch/";
$downloaddir="/home/mulo/torrent";

Script di avvio

Rtorrent dovrà partire all'avvio del server; dobbiamo, dunque, "demonizzarlo" creando il file /etc/init.d/rtorrent:

#!/bin/sh
### BEGIN INIT INFO
# Provides:       rtorrent
# Required-Start:  $network 
# Required-Stop:   $network 
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
# Short-Description: Start rtorrent as a daemon
### END INIT INFO

#############
###<Notes>###
#############
# 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
##############
###</Notes>###
##############
#######################
##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="mulo"
# 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="/home/mulo/.rtorrent.rc"
# set of options to run with
options=""
# default directory for screen, needs to be an absolute path
#base="/home/${user}"
base="/home/mulo"
# 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() {
  [ -d "${base}" ] && cd "${base}"
  stty stop undef && stty start undef
  # robert 20080807 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
  su -c "screen -ls | grep -sq "\.${srnname}:space:" " ${user} || su -c "screen -dm -S ${srnname} " ${user}
# 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
# robert 20080807 su -c "screen -S "${srnname}" -X screen rtorrent ${options} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
su -c "screen -S "${srnname}" -X screen rtorrent ${options}" ${user}
}
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"`
        pid2=`su $user -c 'screen -ls' | awk -F [.] '/[[:digit:]].rtorrent/{print($1)}' | 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}; kill -s KILL ${pid2}
	fi
        su $user -c 'screen -wipe'
}
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

Quindi impostiamo il nostro servizio affinché parta all'avvio:

# chmod +x /etc/init.d/rtorrent
# update-rc.d rtorrent defaults

Per testare che tutto funzioni proviamo ad avviare il demone:

# /etc/init.d/rtorrent start

e a collegarci all'interfaccia grafica all'URL http://<IpAddressMulo>/rtgui

Specifiche

Rtgui.jpg

Conclusioni

Le maggiori implicazioni riguardo alla sicurezza sono in merito all'accesso all'interfaccia di controllo. Si consiglia pertanto di rendere accessibile la stessa esclusivamente all'interno della propria LAN o tutt'al più proteggere la pagina di controllo con una password. Inoltre non sarebbe male anche l'idea di utilizzare un buon filtro IP come blockcontrol. Infine si ricorda che per quanto concerne l'uso di rtorrent è pur sempre possibile, oltre alla comoda interfaccia web appena illustrata, utilizzare il programma via ssh per poi accedere alla sessione di screen dove è in esecuzione rtorrent.

Amule

Adesso occupiamoci di installare Amuled per accedere alle reti eD2k e Kademlia. Utilizzando la versione daemon avremo il vantaggio di poter fare a meno dell'ambiente grafico sul server. Per quanto riguarda l'accesso sarà invece possibile adottare, come per rtorrent, una interfaccia web (si avrà quindi il vantaggio di un accesso universale senza l'installazione di software aggiuntivo, oppure utilizzare il programma amulegui, il quale permette di accedere ad una interfaccia avanzata e molto più funzionale. A voi la scelta!

Installazione

Installiamo il pacchetto amule-daemon, il quale comprende oltre al demone anche il modulo Amuleweb che permette la connessione tramite webUI al server di Amule:

# aptitude install amule-daemon

Configurazione

Dovremo configurare per prima cosa il demone di Amule, quindi potremo scegliere se configurare anche la WebGUI (AmuleWEB), la GUI Amule-GUI o entrambi.

Avvio autoconfigurazione

Per configurare opportunamente il demone è possibile far sì che sia amule stesso a creare il file di configurazione di default nonché le cartelle necessarie. Infatti se avviamo da shell il demone, come da esempio:

$ amuled

verrà restituito errore ma sarà anche creata la directory .aMule/ con tutti i vari file di configurazione che quindi potremo ora modificare a nostro gradimento.Tra questi saranno presenti anche le principali directory utilizzate da aMule per il download:

Personalizzazione delle opzioni di configurazione

A questo punto possiamo ora aprire con un editor di testo il file .aMule/amule.conf e modificare il valore dei parametri di default (per approfondire si consiglia il wiki di amuled oppure del wiki di debian.org; qui invece per maggiori dettagli). Ovviamente per avere fin da subito una configurazione completa e funzionante senza scendere nei dettagli, potrete utilizzare il file come di seguito riportato (con i commenti ### sono evidenziate lo opzioni modificate):

[eMule]
AppVersion=2.2.6
Nick=http://www.aMule.org
QueueSizePref=50
### limita il carico del server in upload
MaxUpload=15
###limita il carico del server in download
MaxDownload=75
###quota banda che ciascun peer ciuccia
SlotAllocation=5
Port=4662
UDPPort=4672
UDPDisable=0
Address=
Autoconnect=1
### limitare per ridurre carico al NAT del router
MaxSourcesPerFile=100
### limitare per ridurre carico al NAT del router
MaxConnections=200
MaxConnectionsPerFiveSeconds=20
RemoveDeadServer=1
DeadServerRetry=3
ServerKeepAliveTimeout=0
Reconnect=1
Scoresystem=1
### Serverlist=0 auto update the server list from the supplied url
Serverlist=1
### AddServerListFromServer=0
AddServerListFromServer=1
AddServerListFromClient=0
SafeServerConnect=0
AutoConnectStaticOnly=0
UPnPEnabled=0
UPnPTCPPort=50000
SmartIdCheck=1
ConnectToKad=1
ConnectToED2K=1
TempDir=/home/mulo/.aMule/Temp
IncomingDir=/home/mulo/.aMule/Incoming
ICH=1
AICHTrust=0
CheckDiskspace=1
MinFreeDiskSpace=1
AddNewFilesPaused=0
PreviewPrio=0
ManualHighPrio=0
FullChunkTransfers=1
StartNextFile=0
StartNextFileSameCat=0
FileBufferSizePref=16
DAPPref=1
UAPPref=1
AllocateFullFile=0
OSDirectory=/home/mulo/.aMule/
OnlineSignature=0
OnlineSignatureUpdate=5
EnableTrayIcon=0
MinToTray=0
ConfirmExit=1
StartupMinimized=0
3DDepth=10
ToolTipDelay=1
ShowOverhead=0
ShowInfoOnCatTabs=1
ShowRatesOnTitle=0
VerticalToolbar=0
ShowPartFileNumber=0
VideoPlayer=
VideoPreviewBackupped=1
StatGraphsInterval=3
statsInterval=30
### limita banda occupata in download
DownloadCapacity=100
### limita banda occupata in upload
UploadCapacity=20
StatsAverageMinutes=5
VariousStatisticsMaxValue=100
SeeShare=2
FilterLanIPs=1
ParanoidFiltering=1
IPFilterAutoLoad=1
IPFilterURL=
FilterLevel=127
IPFilterSystem=0
FilterMessages=1
FilterAllMessages=0
MessagesFromFriendsOnly=0
MessageFromValidSourcesOnly=1
FilterWordMessages=0
MessageFilter=
FilterComments=0
CommentFilter=
ShareHiddenFiles=0
AutoSortDownloads=0
NewVersionCheck=1
Language=
SplitterbarPosition=75
YourHostname=
DateTimeFormat=%A, %x, %X
AllcatType=0
ShowAllNotCats=0
SmartIdState=0
DropSlowSources=0
KadNodesUrl=http://emule-inside.net/nodes.dat
Ed2kServersUrl=http://gruk.org/server.met.gz
[Browser]
DefaultBrowser=0
OpenPageInTab=1
CustomBrowserString=
[Proxy]
ProxyEnableProxy=0
ProxyType=0
ProxyName=
ProxyPort=1080
ProxyEnablePassword=0
ProxyUser=
ProxyPassword=
[ExternalConnect]
UseSrcSeeds=0
### Abilita l'uso delle interfacce web e GUI
AcceptExternalConnections=1
ECAddress=
ECPort=4712
ECPassword=637b9adadf7acce5c70e5d327a725b13
UPnPECEnabled=0
ShowProgressBar=1
ShowPercent=1
UseSecIdent=1
IpFilterClients=1
IpFilterServers=1
[WebServer]
#Enabled=0
Enabled=1
Password=637b9adadf7acce5c70e5d327a725b13
PasswordLow=
Port=4711
WebUPnPTCPPort=50001
UPnPWebServerEnabled=0
UseGzip=1
UseLowRightsUser=0
PageRefreshTime=120
Template=
[Razor_Preferences]
FastED2KLinksHandler=1
[SkinGUIOptions]
UseSkinFiles=0
Skin=
[Statistics]
MaxClientVersions=0
TotalDownloadedBytes=0
TotalUploadedBytes=34633
[Obfuscation]
IsClientCryptLayerSupported=1
IsCryptLayerRequested=1
IsClientCryptLayerRequired=0
CryptoPaddingLenght=254
CryptoKadUDPKey=271264387
[UserEvents]
[UserEvents/DownloadCompleted]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
[UserEvents/NewChatSession]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
[UserEvents/OutOfDiskSpace]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
[UserEvents/ErrorOnCompletion]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
L'esempio appena proposto permette sia l'accesso tramite la webGUI, sia tramite la GUI grafica. L'abilitazione di questi è configurata tramite l'istanza [ExternalConnect] e [WebServer]. La spiegazione in dettaglio è fornita nei paragrafi successivi. A questo punto non rimane che modificare con un editor di testo il file /etc/default/amule-daemon definendo lo user con il quale verrà eseguito amuled, ossia modificando il seguente parametro:
AMULED_USER="mulo"

Avvio di Amuled

Ora sarà possibile avviare il demone:

# /etc/init.d/amule-daemon start

Si osserva che, per poter eseguire amuled (ossia il demone di amule), è necessario - come già modificato nel file di esempio precedente - abilitare la modalità di connessione remota del client. In dettaglio è necessario indicare al demone di accettare le connessioni esterne del client (AcceptExternalConnections=1) e di indicare l'hash della password di autenticazione alla connessione (ECPassword=637b9adadf7acce5c70e5d327a725b13). L'hash della password può essere ottenuta utilizzando il seguente comando (e inserendo la chiave desiderata al posto di yourpassword):

echo -n yourpassword | md5sum | cut -d ' ' -f 1637b9adadf7acce5c70e5d327a725b13

Aggiungere liste server

Aggiungiamo quindi le liste dei server eDonkey:

$ echo "http://www.gruk.org/server.met.gz" > ~/.aMule/addresses.dat
$ echo "http://www.peerates.net/servers.php" >> ~/.aMule/addresses.dat

Per la rete Kad scarichiamo una lista ulteriore prelevandola da http://www.nodes-dat.com/:

$ cd  /home/mulo/.aMule
$ mv nodes.dat node.dat.bak
$ wget http://www.alldivx.de/nodes/nodes.dat

AmuleWEB

Amuleweb è l'interfaccia web che permette di gestire da remoto Amule. Seppure non sia comoda come la GUI grafica fornita da amule-utils-gui, offre il grande vantaggio di essere accessibile a qualsiasi computer tramite web browser. Per attivarla è sufficiente modificare i parametri di ~/.aMule/amule.conf sotto la stanza [WebServer]. Per un esempio di configurazione guardate il file precedentemente postato sotto la configurazione di amuled. Tra i parametri, molto intuitivi, si consiglia di prestare attenzione alla variabile Password che deve essere uguale a quella indicata nella stanza [ExternalConnect] al parametro ECPassword. Invece sotto l'opzione PasswordLow= è possibile indicare una password alternativa per chi utilizza la WebGUI. Infine, per il debug, si segnala che a volte potrebbe essere comodo avviare l'interfaccia web non tramite il demone e i parametri impostati nel file amule.conf ma tramite il comando amuleweb.

AmuleGUI

Per avere la comodissima gui remota (in tutto e per tutto uguale a quella di default del programma Amule) è necessario installare sulla macchina client dalla quale si vuole controllare il demone il seguente pacchetto:

# aptitude install amule-utils-gui

A questo punto, se non avete modificato le impostazioni di default (o utilizzate quelle da me riportate) potrete connettervi al demone Amule se, lanciato sul client il programma amulegui, indicate l'IP (oppure l'URL) del server e la password corrispondente all'hash inserito nel file di configurazione di amule (ad esempio nel file di configurazione da me indicato come yourpassword). Adesso avrete a disposizione la ben nota interfaccia grafica!

Info.png Nota
per poter avviare amuled è necessario in ogni caso configurare l'accesso remoto. Se non abilitato, il demone non potrà essere avviato né potrà essere possibile utilizzare l'interfaccia web di amministrazione.

La sezione per configurare l'accesso remoto è presente in ~/.aMule/amule.conf sotto la stanza [ExternalConnect].

Specifiche

Amuleweb.jpg


Info.png Nota
La ricerca di un file con rtgui può richiedere un po' di tempo, motivo per cui si può presentare la necessità di dover aggiornare la pagina con i risultati della ricerca; a tal fine è presente sulla parte destra della pagina un apposito comando. È possibile inoltre impostare il refresh automatico delle pagine tramite le opzioni di rtgui.


Conclusioni

Anche in questo caso valgono le considerazioni sulla sicurezza già esposte per rtorrent, ovvero sarebbe opportuno proteggere l'accesso allo strumento di controllo di amule tramite password o mantenerlo accessibile soltanto all'interno della propria LAN. Inoltre, anche per amuled, è possibile controllare il demone tramite ssh utilizzando il comando amulecmd.

Condivisione file

Oltre a scaricare il file è necessario rendere lo stesso comodamente accessibile da tutti i client della LAN. Tra le possibili soluzioni ho optato per samba vista la sua semplicità ed universalità con tutti gli OS. Procediamo installando il server samba:

# aptitude install samba
# mv /etc/samba/smb.conf  /etc/samba/smb.conf.bak

Per configurare samba creiamo il file /etc/samba/smb.conf

[global]
server string = MULO
workgroup=workgroup
security=shareguest
account = nobody
map to guest = bad user
[mulo]
comment = Mulo
path = /home/mulo/torrent
read only = No
guest ok = Yes
guest only = yes
browseable = Yes
public = yes
writable = yes

Tutti gli utenti della rete domestica potranno così accedere con diritti di lettura/scrittura, senza doversi autenticare; il server condivide l'intera home dell'utente mulo, nella quale si troveranno le directory con i file scaricati.

Accesso remoto

Possiamo eseguire il login nel server da ogni computer appartenente alla rete domestica tramite ssh:

# aptitude install ssh

Generiamo, quindi, la coppia di chiavi per l'utente mulo.

$ ssh-keygen -t rsa
$ cp /home/mulo/.ssh/id_rsa.pub /home/mulo/.ssh/autorized_key

Useremo l'autenticazione Host-based, per la quale non verrà richiesta una chiave.

# echo "HostbasedAuthentication yes" >> /etc/ssh/ssh_config

Ci connetteremo al server con:

$ ssh mulo@<IpAddressMulo>
password: YourPassword

Conclusioni

Installiamo alcuni programmi d'utilità come iptraf e yacpi per il monitoraggio del traffico e delle temperature:

# aptitude install htop mc iptraf yacpi elinks deborphan

Possiamo rimuovere software/librerie/documentazioni inutili:

# aptitude purge doc-linux-it doc-linux-it-text debian-reference-en debian-reference-it maint-guide-it fortunes-it exim4 exim4-daemon-light postfix
# apt-get autoremove --purge $(deborphan --libdevel)
# aptitude update
# aptitude -f install
# aptitude clean

Analogamente, in base alle nostre necessità, possiamo rimuovere altri programmi e documenti per ottenere un sistema che occupi il minimo spazio.
Caratteristiche del server

Ringraziamenti

Il primo ringraziamento è da parte di Risca nei confronti di Fr4nc3sco per avere impostato questa guida con ricchi suggerimenti sul come procedere. Infatti da parte mia il lavoro è stato principalmente di revisione e solo in piccola parte di scrittura. Pertanto grazie ancora Fr4nc3sco! Infine un saluto a tutta la redazione dell'e-zine, alla comunità di Debianizzati.org e tutti i nostri lettori e, last but not least, a tutti i ragazzi dell'Accademia.




Guida scritta da: Fr4nc3sco 07:39, 9 lug 2010 (CEST)

Swirl-auth20.png Debianized 20%

Estesa da:
Risca 11:25, 3 mag 2011 (CEST)
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti