Deluge sur Debian Wheezy
Je vais vous parler d’un client de téléchargement torrent nommé Deluge. Le but étant de l’installer et le configurer sur un serveur Linux Debian Wheezy.
Deluge possède une interface graphique (GUI) disponible via web. Je propose ce billet sur ce programme car j’ai migré mon application uTorrent vers celui-ci pour plusieurs raisons.
Premièrement les développeurs de uTorrent n’ont pas mis à jour leur version alpha depuis mai 2012. Deuxièmement parce que ce dernier est écrit en JAVA et consommait donc pas mal de ressources. Et enfin parce que le code n’est pas open. Bref, Deluge lui est écrit en python, open-source et toujours supporté par une communauté de développeurs.
Voila l’interface web finale
Installation
Le programme et sa GUI sont disponible dans les dépôts et donc une simple commande permet l’installation:
1
|
apt–get install deluged deluge–web
|
Sur nunux, il faut toujours faire un utilisateur pour chaque application pour des raisons de sécurité. On créé donc notre utilisateur spécifique
1
|
adduser deluge
|
Pour tester, on se connecte avec cet utilisateur et on lance le daemon
1
|
su deluge deluged
|
On lance ensuite l’interface web
1
|
deluge–web —fork
|
Pour tester on se rend à l’adresse de notre serveur sur le port 8112 par défaut http://ip_serveur:8112
Le mot de passe par défaut est “deluge”. Je vous invite à le changer immédiatement dans les paramètres de l’application. Sinon laissez en commentaire l’adresse de votre serveur afin que chaque lecteur ajoute le torrent de son choix
A ce stade le programme est fonctionnel. On va maintenant ajouter un script de démarrage. On appel ce type de script un script “init”. Ce script va permettre plusieurs choses:
- Démarrer le moteur Deluge et son interface web au lancement de la machine
- Gérer le lancement ou l’arrêt du programme sans avoir besoin de se loguer sous l’utilisateur spécifique
On commence avec ce premier script. Créer un fichier /etc/default/deluge-daemon et placer les lignes suivantes
1
|
<span style=« font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; »># Configuration for /etc/init.d/deluge-daemon</span>
|
1
2
3
4
5
|
# The init.d script will only run if this variable non-empty.
DELUGED_USER=« deluge » # !!!CHANGE THIS!!!!
# Should we run at startup?
RUN_AT_STARTUP=« YES »
|
En ligne 4 il faut rentrer le nom de l’utilisateur spécifique.
Ensuite, il faut créer un dernier fichier sous /etc/init.d/deluge-daemon et y placer les ligne suivantes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
#!/bin/sh
### BEGIN INIT INFO
# Provides: deluge-daemon
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description: Starts the deluge daemon with the user specified in
# /etc/default/deluge-daemon.
### END INIT INFO
# Author: Adolfo R. Brandes
# Updated by: Jean-Philippe « Orax » Roemer
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC=« Deluge Daemon »
NAME1=« deluged »
NAME2=« deluge »
DAEMON1=/usr/bin/deluged
DAEMON1_ARGS=« -d » # Consult `man deluged` for more options
DAEMON2=/usr/bin/deluge–web
DAEMON2_ARGS=« » # Consult `man deluge-web` for more options
PIDFILE1=/var/run/$NAME1.pid
PIDFILE2=/var/run/$NAME2.pid
UMASK=022 # Change this to 0 if running deluged as its own user
PKGNAME=deluge–daemon
SCRIPTNAME=/etc/init.d/$PKGNAME
# Exit if the package is not installed
[ –x « $DAEMON1 » –a –x « $DAEMON2 » ] || exit 0
# Read configuration variable file if it is present
[ –r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME
# Load the VERBOSE setting and other rcS variables
[ –f /etc/default/rcS ] && . /etc/default/rcS
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init–functions
if [ –z « $RUN_AT_STARTUP » –o « $RUN_AT_STARTUP » != « YES » ]
then
log_warning_msg « Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it. »
exit 0
fi
if [ –z « $DELUGED_USER » ]
then
log_warning_msg « Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME. »
exit 0
fi
#
# Function to verify if a pid is alive
#
is_alive()
{
pid=`cat $1` > /dev/null 2>&1
kill –0 $pid > /dev/null 2>&1
return $?
}
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
is_alive $PIDFILE1
RETVAL1=« $? »
if [ $RETVAL1 != 0 ]; then
rm –f $PIDFILE1
start–stop–daemon —start —background —quiet —pidfile $PIDFILE1 —make–pidfile —
exec $DAEMON1 —chuid $DELUGED_USER —user $DELUGED_USER —umask $UMASK — $DAEMON1_ARGS
RETVAL1=« $? »
else
is_alive $PIDFILE2
RETVAL2=« $? »
[ « $RETVAL2 » = « 0 » –a « $RETVAL1 » = « 0 » ] && return 1
fi
is_alive $PIDFILE2
RETVAL2=« $? »
if [ $RETVAL2 != 0 ]; then
sleep 2
rm –f $PIDFILE2
start–stop–daemon —start —background —quiet —pidfile $PIDFILE2 —make–pidfile –
–exec $DAEMON2 —chuid $DELUGED_USER —user $DELUGED_USER —umask $UMASK — $DAEMON2_ARGS
RETVAL2=« $? »
fi
[ « $RETVAL1 » = « 0 » –a « $RETVAL2 » = « 0 » ] || return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start–stop–daemon —stop —quiet —retry=TERM/30/KILL/5 —user $DELUGED_USER —pidfile $PIDFILE2
RETVAL2=« $? »
start–stop–daemon —stop —quiet —retry=TERM/30/KILL/5 —user $DELUGED_USER —pidfile $PIDFILE1
RETVAL1=« $? »
[ « $RETVAL1 » = « 2 » –o « $RETVAL2 » = « 2 » ] && return 2
rm –f $PIDFILE1 $PIDFILE2
[ « $RETVAL1 » = « 0 » –a « $RETVAL2 » = « 0 » ] && return 0 || return 1
}
case « $1 » in
start)
[ « $VERBOSE » != no ] && log_daemon_msg « Starting $DESC » « $NAME1 »
do_start
case « $? » in
0|1) [ « $VERBOSE » != no ] && log_end_msg 0 ;;
2) [ « $VERBOSE » != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ « $VERBOSE » != no ] && log_daemon_msg « Stopping $DESC » « $NAME1 »
do_stop
case « $? » in
0|1) [ « $VERBOSE » != no ] && log_end_msg 0 ;;
2) [ « $VERBOSE » != no ] && log_end_msg 1 ;;
esac
;;
restart|force–reload)
log_daemon_msg « Restarting $DESC » « $NAME1 »
do_stop
case « $? » in
0|1)
do_start
case « $? » in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo « Usage: $SCRIPTNAME {start|stop|restart|force-reload} » >&2
exit 3
;;
esac
:
|
On rend le script éxécutable
1
|
chmod 755 /etc/init.d/deluge–daemon
|
On fait en sorte que le script soit lancé au démarrage de la machine
1
|
update–rc.d deluge–daemon defaults
|
Enfin, pour tester, on lance le service via le script
1
|
/etc/init.d/deluge–daemon start
|
Enfin, si vous pensez ouvrir le port pour un accès depuis internet, je vous conseille de lire la partie sécurisation avec Fail2ban.