Debian Chroot et Deluge

Les tutoriaux rédigés par les membres
Répondre
mickus
Messages : 20
Enregistré le : 14 janvier 2015

Debian Chroot et Deluge

Message par mickus » 11 févr. 2015 11:49

Bonjour à tous !

Je me propose d'écrire un tutoriel sur comment installer une Debian Chroot et Deluge car j'ai eu quelques petit soucis moi même pour le faire.

Avant de me lancer dans la rédaction j'aimerais savoir si c'est autoriser de parler de client torrent sur Cachem et si ce tutoriel peut intéresser des membres du forum ;)

Bonne journée :)

Avatar du membre
renocz
Chevalier Jedi
Messages : 412
Enregistré le : 13 février 2014
Professionnel : Non
Localisation : Luxembourg

Re: Debian Chroot et Deluge

Message par renocz » 11 févr. 2015 12:07

Salut Mickus, un tuto est toujours le bienvenue donc n'hésite pas ;)
Perso je prépare pour le site aussi un tuto mais ...surprise :p
A côté de cela, je ne suis pas partit sur Deluge justement car il me semblait très compliqué à faire tourner quand Transmission tourne comme un charme :D tu l'auras compris...ça m'intéresse ;)

NAS: Synology DS210J / Asustor AS7004T 16GB
Autre:Raspberry PI XBMC / NUC d34010wyk Kodi / Macbook Pro 15" 2013 / Macbook Pro 13" 2015 / Iphone 6 / Lenovo Yoga Pro 2 / Apple Watch

Avatar du membre
FX Cachem
Site Admin
Messages : 9168
Enregistré le : 08 décembre 2013
Professionnel : Non
Localisation : Paris
Contact :

Re: Debian Chroot et Deluge

Message par FX Cachem » 11 févr. 2015 13:47

Aucun souci pour parler d'un client Torrent tant que tu respectes les règles du forum :D http://forum.cachem.fr/viewtopic.php?f=2&t=1476
Blogueur sur Cachem et administrateur du Forum des NAS
NAS : Synology DS412+ | QNAP TS-470 Pro | ASUSTOR AS-302T

mickus
Messages : 20
Enregistré le : 14 janvier 2015

Re: Debian Chroot et Deluge

Message par mickus » 11 févr. 2015 14:16

Okay alors allons-y 8-)

D'abord pour ceux qui pourrait ce demander pourquoi Deluge alors que Transmission et ruTorrent sont déjà inclus dans des paquets SynnoCommunity, hé bien tout simplement parce que j'ai besoin de certain features de Deluge et que j’apprécie grandement ce client. Il a beaucoup de plugins qui sont intéressante comme le scheduler, les labels, etc...

Maintenant, place au tutoriel en 9 étapes : (attention un peu long)
  1. Activer le service d'accueil des utilisateur (dossier home pour chaque user)
    Panneau de configuration > Utilisateur > Avancé , “Activer le service d'accueil des utilisateur”
  2. Ajouter SynoCommunity comme source dans le gestionnaire de paquets
    Centre de paquets > Paramètres > Source de paquet > Ajouter
    Nom : SynoCommunity
    Emplacement : https://synocommunity.com/packages
  3. Installer Python et Debian Chroot (depuis communauté)
  4. Se connecter au Syno en SSH en tant que root

    Code : Tout sélectionner

    ssh root@<your.ip.address>
    Se connecter avec root en login et le mot de passe est celui du compte admin (marche même si le compte admin est désactivé)
  5. Lancer le chroot

    Code : Tout sélectionner

    /var/packages/debian-chroot/scripts/start-stop-status chroot
  6. Lancer les commandes suivantes sous Debian :

    Code : Tout sélectionner

    aptitude update
    aptitude upgrade
    aptitude install -t jessie locales
    dpkg-reconfigure locales
    dpkg-reconfigure tzdata
    aptitude install less vim curl rsync screen openssh-server
    
  7. Installer Deluge (daemon + webui)

    Code : Tout sélectionner

    add-apt-repository 'deb http://ppa.launchpad.net/deluge-team/ppa/ubuntu precise main'
    apt-get update
    apt-get install -t precise deluge-common deluged deluge-web
    
    NB: J'utilise l'option "-t jessie" pour installer Deluge 1.3
  8. Ajouter un user spécifique dans Debian pour lancer deluge (je ne voulais pas le lancer en root pour des raisons de sécurité)

    Code : Tout sélectionner

    adduser --system  --gecos "Deluge Service" --disabled-password --group --home /home/deluge deluge
  9. Configurer deluge pour se lancer au démarage du synology
    Modifier le fichier /etc/default/deluge-daemon comme ceci :

    Code : Tout sélectionner

    # Configuration for /etc/init.d/deluge-daemon
    
    # The init.d script will only run if this variable non-empty.
    DELUGED_USER="deluge" # Ici j'utilise l'user deluge créé précédemment 
    
    # Should we run at startup?
    RUN_AT_STARTUP="YES"
    
    Puis, créé le fichier /etc/init.d/deluge-daemon avec le contenu suivant :

    Code : Tout sélectionner

    #!/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
    
    :
    
    
    Rendre le script exécutable :

    Code : Tout sélectionner

    chmod 755 /etc/init.d/deluge-daemon
    Lancer le script lors du démarage du syno :

    Code : Tout sélectionner

    update-rc.d deluge-daemon defaults
    Puis créer le fichier /usr/syno/etc/rc.d/S92delugeweb.sh avec le contenu suivant

    Code : Tout sélectionner

    case $1 in
    start)
    chroot /usr/local/debian-chroot/var/chroottarget su - root -c "invoke-rc.d deluge-daemon start"
    mount --bind /volume1/downloads /volume1/@appstore/debian-chroot/var/chroottarget/volume1/downloads
    ;;
    stop)
    pkill deluge*
    ;;
    *)
    echo "Usage: $0 [start|stop]"
    ;;
    esac
    
    Un dernier petit chmod pour la route

    Code : Tout sélectionner

    chmod 755 /usr/syno/etc/rc.d/S92delugeweb.sh
Et voila !!! Un peu long mais la vous avez tout pour que deluge fonctionne parfaitement :D

EDIT: si vous avez des warnings sur le fichier locales :

Code : Tout sélectionner

locale-gen en_US.utf8
dpkg-reconfigure locales
Modifié en dernier par mickus le 16 févr. 2015 15:00, modifié 9 fois.

Avatar du membre
QoolBox
Représentant de QNAP
Messages : 6497
Enregistré le : 02 janvier 2014
Professionnel : Oui
Localisation : France
Contact :

Re: Debian Chroot et Deluge

Message par QoolBox » 11 févr. 2015 17:50

Vraiment des fainéants les Synologiens, pourquoi ne pas cross compiler l'application plutôt que d'utiliser un environnement Chroot :lol:

mickus
Messages : 20
Enregistré le : 14 janvier 2015

Re: Debian Chroot et Deluge

Message par mickus » 11 févr. 2015 18:17

Je crois qu'aucun package n'a jamais été fait parce que deluge est différent selon l'architecture ce qui le rend donc difficile à générer pour toutes les archi !

mickus
Messages : 20
Enregistré le : 14 janvier 2015

Re: Debian Chroot et Deluge

Message par mickus » 12 févr. 2015 21:03

J'édit mon post tutoriel car j'ai oublié une partie pour que Deluge démarre correctement au démarage du NAS :oops:

Avatar du membre
QoolBox
Représentant de QNAP
Messages : 6497
Enregistré le : 02 janvier 2014
Professionnel : Oui
Localisation : France
Contact :

Re: Debian Chroot et Deluge

Message par QoolBox » 12 févr. 2015 21:25

le plus lourding dans deluge si je me souviens bien c'est la cross compilation de libboost, j'en avais ch.... à l'époque sur Thecus

question bête mais tes downloads, tu y accèdes à l’extérieur de ton chroot ? tu fais un mount bind ?

mickus
Messages : 20
Enregistré le : 14 janvier 2015

Re: Debian Chroot et Deluge

Message par mickus » 13 févr. 2015 11:31

QoolBox a écrit :question bête mais tes downloads, tu y accèdes à l’extérieur de ton chroot ? tu fais un mount bind ?
Ce n'est pas une question bête du tout et elle est même plutôt intéressante !


Actuellement je fais un mount lors du lancement du chroot

Code : Tout sélectionner

grep -q "${CHROOTTARGET}/volume1 " /volume1 || mount -o bind /volume1 ${CHROOTTARGET}/volume1
Mais je suis en train de réfléchir à changer cela avec un mount --bind que je ne connais pas hyper bien.
Je vais faire des tests aujourd'hui voir si je peux faire

Code : Tout sélectionner

mount --bind /volume1/downloads /volume1/@appstore/debian-chroot/var/chroottarget/volume1/downloads
Si tu as 5 minutes pour m'expliquer précisément le fonctionnement du bind je suis preneur ;)

EDIT : ok j'ai fais quelques tests ça marche bien, si j'ai compris le fonctionnement c'est un dossier partagé entre le syno et le chroot, je modifie donc mon tutoriel :)
Modifié en dernier par mickus le 16 févr. 2015 15:00, modifié 1 fois.

Avatar du membre
QoolBox
Représentant de QNAP
Messages : 6497
Enregistré le : 02 janvier 2014
Professionnel : Oui
Localisation : France
Contact :

Re: Debian Chroot et Deluge

Message par QoolBox » 13 févr. 2015 17:29

Bind du verbe binder (je binde, tu bindes...)

le mount -o bind et équivalent à mount --bind (du moins il me semble, ca doit dépendre des version mount [ package util-linux ] )

bind permet d'accèder au contenu d'un même dossier à deux endroits a la fois, tout simplement ;)

Répondre

Retourner vers « Tutoriaux »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités