Archives mensuelles : septembre 2013

Créer une seedbox avec qBittorrent sous Debian Wheezy

(Dernière mise à jour : 12 mai 2014)

Présentation de qBittorrent

qBittorrent est un client bittorrent très léger développé en C++ avec la bibliothèque Qt4. Il est libre, multiplateforme et dispose d’une interface web en Ajax, il peut donc fonctionner sans serveur X. Nous allons voir comment l’installer en ligne de commande sur un serveur ne disposant pas d’interface graphique.
Ce guide fonctionne pour Debian, Ubuntu et ses dérivés.

qBittorrent
Capture d’écran de l’interface web de qBittorrent

Installation des dépendances

La compilation de qBittorrent nécessite l’installation de plusieurs dépendances.

On installe les outils de base :

apt-get install build-essential libtool automake autoconf subversion git wget pkg-config python

Les librairies SSL et Boost :

apt-get install libboost-date-time-dev libboost-dev libboost-filesystem-dev \
libboost-iostreams-dev libboost-program-options-dev libboost-regex-dev \
libboost-serialization-dev libboost-signals-dev libboost-test-dev \
libboost-thread-dev libssl-dev

La librairie Qt4 :

apt-get install libqt4-dev

Compilation de Libtorrent

qBittorrent utilise la librairie libtorrent, il est donc nécessaire de la compiler et de l’installer avant de pouvoir faire de même avec qBittorrent.

Nous allons donc commencer par récupérer la dernière version de la librairie depuis le svn :

mkdir -p qBittorrent_compiling
cd qBittorrent_compiling
svn co https://svn.code.sf.net/p/libtorrent/code/branches/RC_0_16 libtorrent

Vous devriez à présent disposer de la dernière branche svn de libtorrent dans le répertoire du même nom. Comme le fichier de configuration n’est pas fourni, nous allons le créer nous-mêmes :

cd libtorrent
./autotool.sh

Nous pouvons à présent compiler la librairie :

./configure --disable-debug --prefix=/usr && make clean && make

Il ne nous reste plus qu’à l’installer :

make uninstall
make install-strip

Compilation de qBittorrent

On récupère la dernière version de qBittorrent depuis git :

cd ..
git clone https://github.com/qbittorrent/qBittorrent.git

On la compile en désactivant l’interface graphique :

cd qBittorrent
./configure --prefix=/usr --disable-gui
make

On installe qBittorrent :

make install

Lancer qBittorrent au démarrage du serveur

Donner les droits root à une application de ce type étant une très mauvaise idée, nous allons créer un utilisateur spécifique :

adduser qbittorrent

Un utilisateur de qBittorrent (Jesper Smith) a créé un script d’initialisation. Nous allons donc le récupérer :

wget -P /etc/init.d http://blaisethirard.fr/partage/blog/qbittorrent-nox-daemon

(Si vous n’avez pas nommé le nouvel utilisateur « qbittorrent », pensez à remplacer « qbittorrent » à la ligne 25 du script /etc/init.d/qbittorrent-nox-daemon par le nom de l’utilisateur que vous avez créé.)

On lui donne les bons droits :

chmod 755 /etc/init.d/qbittorrent-nox-daemon

On exécute le script d’initialisation au démarrage du système :

update-rc.d qbittorrent-nox-daemon defaults

Au premier démarrage de qBittorrent, un message d’avertissement s’affiche et vous demande de taper « y » afin de pouvoir continuer. Pour cette raison, nous allons nous connecter avec l’utilisateur qbittorrent et lancer le programme manuellement :

su qbittorrent
qbittorrent-nox
******** Informations ********
 Pour contrôler qBittorrent, accéder à l'interface Web via http://localhost:8080
 Le nom d'utilisateur de l'administrateur de l'interface Web est : admin
 Le mot de passe de l'administrateur de l'interface Web est toujours celui par défaut : adminadmin
 Ceci peut être dangereux, veuillez penser à changer votre mot de passe dans les options.
 15/09/2013 04:59:57 - L'interface Web est associée au port 8080

Au prochain démarrage de votre serveur, le service qbittorrent-nox sera automatiquement lancé en arrière-plan.

Un peu de ménage :

rm -r ~/qBittorrent_compiling

L’installation est terminée, pensez à changer l’utilisateur et le mot de passe par défaut de qBittorent : Outils > Options… > Interface Web > Authentification

Installation de Linux-VServer sur Debian GNU/Linux 7.0 (Wheezy)

Comme vous le savez sans doute si vous n’êtes pas tombé sur cet article par hasard, avec cette dernière version de Debian, Linux-VServer devient obsolète. Cela signifie qu’il va bientôt falloir migrer vers une autre solution de virtualisation (KVM, Linux Container ou Xen). Cependant, vous avez peut-être besoin de poursuivre avec Linux-VServer quelque temps sans pour autant vous priver de la dernière version stable de Debian.
Si vous êtes conscients que le projet Debian arrête le suivi en sécurité de Linux-VServer et qu’il n’y aura plus de support de ce composant, suivez le guide. Sinon, je vous invite à passer à LXC.

Notes :

  • Je pars du principe que vous avez déjà installé Debian Wheezy
  • Si une partie d’une ligne de commande est surlignée comme ceci, cela signifie qu’elle peut ou doit être adaptée avec vos paramètres ou préférences
  • Ce guide est conçu pour que dans la plupart des cas, vous puissiez vous contenter de faire des copier / coller

Dans le fichier /etc/apt/sources.list, on commente la ligne relative au cd-rom :

sed -i "s/^\(deb cdrom.*\)/#\1$/g" /etc/apt/sources.list

On met à jour le système :

apt-get update
apt-get upgrade

On installe les outils de base et ceux qui seront nécessaires à la compilation :

apt-get install \
wget \
build-essential \
kernel-package \
initramfs-tools \
module-init-tools \
libncurses5-dev \
e2fslibs-dev \
dietlibc-dev \
pkg-config \
vlan \
libnss3 \
libnss3-dev \
debootstrap

On récupère la dernière version du patch Linux-VServer depuis le site http://vserver.13thfloor.at/Experimental/ :

wget -P /usr/src http://vserver.13thfloor.at/Experimental/patch-3.9.5-vs2.3.6.5.diff

On récupère le kernel correspondant depuis le site https://www.kernel.org/pub/linux/kernel/ ou https://www.kernel.org/ :

wget -P /usr/src https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.5.tar.gz

On se place dans /etc/src et on décompresse le kernel :

cd /usr/src
tar xvfz linux-3.9.5.tar.gz

On créé le lien symbolique /usr/src/linux qui pointe vers les sources du noyau :

ln -s linux-3.9.5 linux

On récupère la configuration du noyau actuellement en service puis on la copie dans celle du nouveau noyau :

cp /boot/config-3.2.0-4-686-pae /usr/src/linux/.config

Il est également possible de récupérer cette configuration dans le système de fichier procfs, si l’optionKernel .config support du noyau était activée pour le noyau en service :

zcat /proc/config.gz > /usr/src/linux/.config

ou encore dans le répertoire kernel du noyau actuellement en service :

cp /usr/src/linux-3.9.5/.config /usr/src/linux/

On se place dans /usr/src/linux et on applique le patch :

cd /usr/src/linux
patch -p1 < ../patch-3.9.5-vs2.3.6.5.diff

On lance menuconfig :

make menuconfig

et on active les options suivantes :

  • « Enable loadable module support »
  • « Linux VServer »
    • « Automatically Assign Loopback IP »
    • « Enable COW Immutable Link Breaking »
    • « Enable Proc Security »
    • « VServer Warnings »
    • « VServer DevPTS Warnings »

Pensez à enregistrer vos modifications avant de quitter menuconfig : < Save >

On efface tous les fichiers créés dans le répertoire des sources du noyau par la cible build :

make-kpkg clean

On lance la compilation du kernel (l’argument « 4 » de l’option « --jobs » est à adapter en fonction du nombre de threads que peut exécuter votre machine simultanément) :

make-kpkg --initrd --append-to-version vserver --revision 1 kernel-image --jobs 4

Si la compilation s’est bien déroulée, un paquet .deb a été créé dans /usr/src.
On installe le nouveau kernel :

dpkg -i /usr/src/linux-image-3.9.5-vs2.3.6.5vserver_1_amd64.deb

Si vous êtes sur une machine distante à laquelle vous n’avez pas d’accès physique, je vous recommande très fortement de prendre la précaution détaillée dans mon article précédent avant de redémarrer la machine : http://blog.blaisethirard.com/grub-precaution-a-prendre-apres-la-compilation-d-un-nouveau-kernel-sur-un-serveur-distant/

On redémarre la machine :

reboot

Une fois la machine redémarrée, on vérifie que le noyau utilisé est bien celui que nous venons d’installer :

uname -r

Maintenant que nous sommes sur le noyau patché, il ne nous reste plus qu’à installer util-vserver. Pour cela, on télécharge la dernière version à cette adresse : http://people.linux-vserver.org/~dhozac/t/uv-testing :

wget -P /usr/src http://people.linux-vserver.org/~dhozac/t/uv-testing/util-vserver-0.30.216-pre3038.tar.bz2

On se place dans /etc/src et on décompresse l’archive :

cd /usr/src
tar jxvf util-vserver-0.30.216-pre3038.tar.bz2

On se place dans /etc/src/util-vserver-0.30.216-pre3038/ et on lance le script de configuration :

cd util-vserver-0.30.216-pre3038/
./configure --prefix=/usr --enable-release --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/etc --enable-dietlibc --localstatedir=/var --with-vrootdir=/home/srv

On compile util-vserver :

make
make install
make install-distribution

Le script vshelper est utilisé pour arrêter et redémarrer correctement les serveurs virtuels. Nous allons donc indiquer au noyau où il se trouve :

echo /usr/lib/util-vserver/vshelper >| /proc/sys/kernel/vshelper
echo kernel.vshelper = /usr/lib/util-vserver/vshelper >> /etc/sysctl.conf

On démarre util-vserver :

service util-vserver start

Pour finir, on configure le démarrage automatique des services :

update-rc.d vprocunhide defaults
update-rc.d util-vserver defaults
update-rc.d vservers-default defaults

Linux-VServer est à présent installé et fonctionnel sur votre Debian Wheezy !

Grub : la précaution à prendre après la compilation d’un nouveau kernel sur un serveur distant

Si vous intervenez sur un serveur distant et que vous devez compiler ou installer un nouveau noyau, il est prudent de prendre ses précautions et de configurer Grub pour qu’en cas de kernel panic, il ne reste pas bloqué sur la séquence de démarrage du noyau…

Il est possible de configurer Grub pour qu’il démarre sur le nouveau kernel et qu’en cas de problème, il redémarre automatiquement sur l’ancien kernel fonctionnel.

Ce guide concerne la version 2 de Grub et a été testé sous Debian, il devrait également fonctionner pour ses dérivés (Ubuntu, Xandros, etc.). Vous pouvez vérifier votre version de Grub avec la commande suivante :

grub-install -v

Si la commande retourne « GNU GRUB 1.98 » ou plus, vous utilisez Grub 2, si elle retourne « 0.97 », vous utilisez Grub Legacy.

Une fois que votre nouveau noyau est compilé et installé, il faut éditer le fichier /etc/default/grub et le configurer comme suit.

On ajoute l’option « panic=5 » à la ligne « GRUB_CMDLINE_LINUX_DEFAULT » pour redémarrer le kernel au bout de 5 secondes s’il y a un problème lors du démarrage :

GRUB_CMDLINE_LINUX_DEFAULT="quiet panic=5"

On remplace « GRUB_DEFAULT=0 » par « GRUB_DEFAULT=saved ». Cela permet à Grub de ne démarrer sur le nouveau kernel qu’une seule fois. En cas de kernel panic, la machine pourra redémarrer sur l’ancien noyau :

GRUB_DEFAULT=saved

Lorsque les deux modifications du fichier /etc/default/grub on été effectuées et sauvegardées, on récupère le nom du kernel actuel (celui dont on est sûr du bon fonctionnement) et de celui que l’on vient de compiler :

cat /boot/grub/grub.cfg
--> Debian GNU/Linux, avec Linux 3.2.0-4-amd64
--> Debian GNU/Linux, avec Linux 3.9.5-vs2.3.6.5revised-kernel

On définit l’ancien kernel par défaut :

grub-set-default "Debian GNU/Linux, avec Linux 3.2.0-4-amd64"

On configure Grub pour qu’il redémarre une fois sur le nouveau kernel :

grub-reboot "Debian GNU/Linux, avec Linux 3.9.5-vs2.3.6.5revised-kernel"

On régénère le fichier /boot/grub/grub.cfg :

update-grub

On redémarre le serveur :

reboot

On vérifie que la machine a bien redémarré sur son nouveau noyau :

uname -r

Si tout est bon, on définit le nouveau noyau par défaut :

grub-set-default "Debian GNU/Linux, avec Linux 3.9.5-vs2.3.6.5revised-kernel"