• Applications
  • [Discussion] Medusa: téléchargement automatique d'épisodes de série

Bonjour à tous,

Je suis entrain de passer de SickRage à Medusa, et j’essaye d’essayer le passer en multi-utilisateur en me basant sur ce tuto : https://mondedie.fr/d/6674-Tuto-Sickrage-multi-utilisateurs mais je bloque...

Donc j’ai créé un fichier /etc/init.d/medusa_garrus (en me basant sur le tuto de xataz) dont voici le contenu :

 
#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          medusa_garrus
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Should-Start:      $NetworkManager
# Should-Stop:       $NetworkManager
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Daemon pour Medusa
# Description:       Permets le lancement de Medusa en multi-utilisateurs
### END INIT INFO

# A modifier
APP_USER=garrus
APP_INSTALL=/opt/medusa



# Pas touche
NAME=medusa_$APP_USER
DESC="Medusa pour $APP_USER"
APP_HOME=$APP_INSTALL
APP_DATA=$APP_HOME/data/$APP_USER
APP_OPTS=--config=$APP_DATA/config.ini
APP_PIDFILE=$APP_DATA/Medusa.pid


# default
RUN_AS=${APP_USER-medusa}
APP_PATH=${APP_HOME-/opt/medusa}
DATA_DIR=${APP_DATA-/opt/medusa}
PID_FILE=${APP_PIDFILE-/var/run/PyMedusa/Medusa.pid}
DAEMON=${PYTHON_BIN-/usr/bin/python2.7}
EXTRA_DAEMON_OPTS=${APP_OPTS-}
EXTRA_SSD_OPTS=${SSD_OPTS-}

PID_PATH=`dirname $PID_FILE`
DAEMON_OPTS=" start.py -q --daemon --nolaunch --pidfile=${PID_FILE} --datadir=${DATA_DIR} ${EXTRA_DAEMON_OPTS}"

test -x $DAEMON || exit 0
set -e

if [ ! -d $PID_PATH ]; then
    mkdir -p $PID_PATH
    chown $RUN_AS $PID_PATH
fi

if [ ! -d $DATA_DIR ]; then
    mkdir -p $DATA_DIR
    chown $RUN_AS $DATA_DIR
fi

if [ -e $PID_FILE ]; then
    PID=`cat $PID_FILE`
    if ! kill -0 $PID > /dev/null 2>&1; then
        echo "Removing stale $PID_FILE"
        rm $PID_FILE
    fi
fi

d_start() {
    echo "Starting $DESC"
    start-stop-daemon -d $APP_PATH -c $RUN_AS $EXTRA_SSD_OPTS --start --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
}

d_stop() {
    echo "Stopping $DESC"
    start-stop-daemon --stop --pidfile $PID_FILE --retry 15
}

d_status() {
        if [ -e $PID_FILE ]
        then
                if [ $(cat $PID_FILE) -eq $(ps -ef | grep $PID_FILE | grep -v grep | awk '{print $2}') ]
                then
                        echo "$DESC is running"
                else
                        echo "$DESC is stopping"
                fi
        else
                echo "$DESC is stopping"
        fi

}

case "$1" in
    start)
        d_start
        ;;
    stop)
        d_stop
        ;;

restart|force-reload)
    d_stop
    sleep 2
    d_start
    ;;
status)
    d_status
    ;;
*)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|status|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

Mais lorsque je vais sur l’interface web j’ai le message suivant :

Traceback (most recent call last):
  File "/opt/medusa/ext/tornado/web.py", line 1488, in _execute
    result = self.prepare()
  File "/opt/medusa/ext/tornado/web.py", line 2223, in prepare
    raise HTTPError(self._status_code)
HTTPError: HTTP 404: Not Found

réponse un peu basique, le fichier existe t il bien et les droits sont ils les bons ?

    therealcorwin Merci pour l'aide, mais oui le fichier est bien au bon endroit et avec les bons droits...

      Garrus
      Salut
      jai fait ça mais non testé

      #
      ### BEGIN INIT INFO
      # Provides:          medusa
      # Required-Start:    $local_fs $network $remote_fs
      # Required-Stop:     $local_fs $network $remote_fs
      # Should-Start:      $NetworkManager
      # Should-Stop:       $NetworkManager
      # Default-Start:     2 3 4 5
      # Default-Stop:      0 1 6
      # Short-Description: starts instance of Medusa
      # Description:       starts instance of Medusa using start-stop-daemon
      ### END INIT INFO
      
      # Load the VERBOSE setting and other rcS variables
      . /lib/init/vars.sh
      
      # Define LSB log_* functions.
      # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
      . /lib/lsb/init-functions
      
      
      ## Don't set -e
      ## Don't edit this file!
      ## Edit user configuation in /etc/default/medusa to change
      ##
      ## APP_USER=         #$RUN_AS, username to run medusa under, the default is medusa
      ## APP_GROUP=        #$RUN_GROUP, group to run medusa under, the default is medusa
      ## APP_HOME=         #$APP_PATH, the location of start.py, the default is /opt/medusa
      ## APP_DATA=         #$DATA_DIR, the location of sickbeard.db, cache, logs, the default is /opt/medusa
      ## APP_PIDFILE=      #$PID_FILE, the location of medusa.pid, the default is /var/run/PyMedusa/Medusa.pid
      ## PYTHON_BIN=      #$DAEMON, the location of the python binary, the default is /usr/bin/python2.7
      ## APP_OPTS=         #$EXTRA_DAEMON_OPTS, extra cli option for medusa, i.e. " --config=/home/medusa/config.ini"
      ## SSD_OPTS=        #$EXTRA_SSD_OPTS, extra start-stop-daemon option like " --group=users"
      ##
      ## EXAMPLE if want to run as different user
      ## add APP_USER=username to /etc/default/medusa
      ## otherwise default medusa is used
      
      
      # A modifier
      MD_USER=garrus
      MD_INSTALL=/opt/medusa
      
      
      
      # Pas touche
      NAME=Medusa_$MD_USER
      MD_HOME=$MD_INSTALL
      MD_DATA=$MD_HOME/data/$MD_USER
      MD_OPTS=--config=$MD_DATA/config.ini
      MD_PIDFILE=$MD_DATA/sickrage.pid
      
      
      
      # App name
      DESC="Medusa pour $MD_USER"
      
      ## The defaults
      # Run as username
      RUN_AS=${MD_USER-medusa}
      
      # Run as group
      RUN_GROUP=${MD_USER-medusa}
      
      # Path to app APP_HOME=path_to_app_start.py
      APP_PATH=${MD_HOME-/opt/medusa}
      
      # Data directory where sickbeard.db, cache and logs are stored
      DATA_DIR=${MD_DATA-/opt/medusa}
      
      # Path to store PID file
      PID_FILE=${MD_PIDFILE-/var/run/PyMedusa/Medusa.pid}
      
      # path to python bin
      DAEMON=${PYTHON_BIN-/usr/bin/python2.7}
      
      # Extra daemon option like: APP_OPTS=" --config=/home/medusa/config.ini"
      EXTRA_DAEMON_OPTS=${MD_OPTS-}
      
      # Extra start-stop-daemon option like START_OPTS=" --group=users"
      EXTRA_SSD_OPTS=${SSD_OPTS-}
      ##
      
      PID_PATH=$(dirname $PID_FILE)
      DAEMON_OPTS=" start.py -q --daemon --nolaunch --pidfile=${PID_FILE} --datadir=${DATA_DIR} ${EXTRA_DAEMON_OPTS}"
      
      ##
      
      test -x $DAEMON || exit 0
      
      # Create PID directory if not exist and ensure the Medusa user can write to it
      if [ ! -d $PID_PATH ]; then
          mkdir -p $PID_PATH
          chown $RUN_AS $PID_PATH
      fi
      
      if [ ! -d $DATA_DIR ]; then
          mkdir -p $DATA_DIR
          chown $RUN_AS $DATA_DIR
      fi
      
      if [ -e $PID_FILE ]; then
          PID=`cat $PID_FILE`
          if ! kill -0 $PID > /dev/null 2>&1; then
              [ "$VERBOSE" != no ] && echo "Removing stale $PID_FILE"
              rm -f $PID_FILE
          fi
      fi
      
      start_medusa() {
          [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
          start-stop-daemon -d $APP_PATH -c $RUN_AS --group=${RUN_GROUP} $EXTRA_SSD_OPTS --start --quiet --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
          RETVAL="$?"
          case "${RETVAL}" in
              # Service was started or was running already
              0|1) [ "${VERBOSE}" != no ] && log_end_msg 0 ;;
              # Service couldn't be started
              2) [ "${VERBOSE}" != no ] && log_end_msg 1 ;;
          esac
          [ "${RETVAL}" = 2 ] && return 2
          return 0
      }
      
      stop_medusa() {
          [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
          start-stop-daemon --stop --pidfile $PID_FILE --quiet --retry TERM/30/KILL/5
          RETVAL="$?"
          case "${RETVAL}" in
              # Service was stopped or wasn't running
              0|1) [ "${VERBOSE}" != no ] && log_end_msg 0 ;;
              # Service couldn't be stopped
              2) [ "${VERBOSE}" != no ] && log_end_msg 1 ;;
          esac
          [ "${RETVAL}" = 2 ] && return 2
          [ -f "${PID_FILE}" ] && rm -f ${PID_FILE}
          return 0
      }
      
      case "$1" in
          start)
              start_medusa
              exit $?
              ;;
          stop)
              stop_medusa
              exit $?
              ;;
      
          restart|force-reload)
              stop_medusa
              sleep 2
              start_medusa
              exit $?
              ;;
          status)
              status_of_proc -p "$PID_FILE" "$DAEMON" "$DESC"
              exit $?
              ;;
          *)
              N=/etc/init.d/$NAME
              echo "Usage: $N {start|stop|restart|force-reload}" >&2
              exit 1
              ;;
      esac
      
      exit 0

      il te manque /lib/lsb/init-functions qui sont pour des variables.

        xavier Merci pour ta réponse, j'ai testé mais je me retrouve avec les mêmes erreurs...

          bjr, n'étant pas un spécialiste et comme j'ai peur de merdouiller, je peux laisser sickrage et installer aussi medusa? merci

          Bien sûr que tu peux, il faut juste faire attention à tes paramétrages afin d'éviter de doublonner le snatch

            Garrus
            Déjà on peut ce dire que le fichier est ok.
            Peut-être un problème de version de python ?

            fana les paramétrages à quel endroit? merci

            Ce que je veux dire c'est qu'il faut que tu fasses attention à comment tu compte utiliser sickrage et medusa en même temps. Histoire de ne pas snatcher 2 fois les mêmes choses en fait c'est tout. Perso en ce moment je teste medusa également avec sickrage à côté, du coup j'ai pas les mêmes séries d'un côté et de l'autre.

            [inconnu] Hum à priori la version de python est bonne, d'autant que lorsque je démarre Médusa avec le script "mono utilisateur" ça fonctionne bien...

              adaur Comment faire pour associer jacket à medusa

              en effet, le NZB custom correspond exclusivement à une recherche RSS

              merci par avance.

              adaur Je n'ai pas compris d'ou vient le dossier /var/run/PyMedusa dont on doit changer le propriétaire.

              Sinon je crois que tu as un path faux: python /var/www/medusa/SickBeard.py -d qui devrait être si j'ai bien compris python /chemin/vers/votre/installation/medusa/SickBeard.py -d.

              Pour le moment lorsque j'essaie de faire un service medusa start, j'ai une erreur "Access Denied", j'imagine qu'il manque un sudo ici?

              Hello
              Je découvre vôtre site et c'est une véritable mine d'informations 🙂

              Comme certains j'ai essayé d'installer Medusa et j'ai quelques petits soucis

              Après l'installation si je pointe vers monIp:8081 pas de soucis, par contre des que je mets le reverse proxy dans :

              nano /etc/nginx/sites-enabled/rutorrent.conf
              		location ^~ /medusa {
              			proxy_pass http://localhost:8081;
              			proxy_set_header Host $host;
              			proxy_set_header X-Real-IP $remote_addr;
              			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              			proxy_set_header X-Forwarded-Host $host:443;
              			proxy_set_header X-Forwarded-Server $host;
              			proxy_set_header X-Forwarded-Port 443;
              			proxy_set_header X-Forwarded-Proto $scheme;
              
              	# Websocket
              	proxy_http_version 1.1;
              	proxy_set_header Upgrade $http_upgrade;
              	proxy_set_header Connection "upgrade";
              	proxy_read_timeout 86400;
              }
              

              J'ai aussi testé en modifiant /chemin/vers/votre/installation/medusa/config.ini

              web_root = ""
              en
              web_root = /medusa
              

              Mais toujours les même erreurs

              Une idée ?
              Si je laisse mon acces monip:8081 il y'a un risque ? ( je suis le seul utilisateur)

              Merci d'avance 🙂

                Garrus
                Salut
                je viens de testé cher moi est nickel , multi ok

                ps: pense a changer le port etc etc ..

                Scherba
                Salut
                test ça

                location ^~ /medusa{
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $remote_addr;
                                proxy_set_header Host $host;
                                proxy_redirect off;
                                proxy_pass http://127.0.0.1:8081;
                        }

                  bonjour,

                  où ajouter les conf de Jacket dans medusa merci par avance.

                  xavier
                  Parfait plus d'erreur merci beaucoup ! 😉

                  Me reste plus qu'a réglé le soucis avec plexpy (il veut pas démarrer grrr ) et ce sera au poil .

                  5 jours plus tard

                  Bonjour,

                  j'ai suivie le tuto qui a été récemment modifié mais impossible de faire fonctionné medusa sans sickrage qui est installé dans /opt/sickrage

                  je comprends pas trop pourquoi.

                  pour information j'avais commencé l'installation avant la modification du tuto mais laissé de coté par faute de temps...

                  qui peut m'aider à me dépatouiller...

                  voici le log:

                  Error
                  
                  Cant locate template for uri u'errorlogs.mako'
                  
                  Traceback
                  
                  Traceback (most recent call last): 
                  File "/opt/sickrage/lib/tornado/web.py", line 1511, in _execute 
                  File "/opt/sickrage/lib/tornado/gen.py", line 1055, in run 
                  File "/opt/sickrage/lib/tornado/concurrent.py", line 238, in result 
                  File "/opt/sickrage/lib/tornado/gen.py", line 1063, in run 
                  File "/opt/sickrage/sickbeard/webserve.py", line 257, in get 
                  File "/opt/sickrage/lib/tornado/gen.py", line 1055, in run 
                  File "/opt/sickrage/lib/concurrent/futures/_base.py", line 422, in result 
                  File "/opt/sickrage/lib/concurrent/futures/thread.py", line 62, in run 
                  File "/opt/sickrage/sickbeard/webserve.py", line 273, in async_call 
                  File "/opt/sickrage/sickbeard/webserve.py", line 5296, in index 
                  File "/opt/sickrage/sickbeard/webserve.py", line 111, in __init__ 
                  File "/opt/sickrage/lib/mako/lookup.py", line 261, in get_template 
                  TopLevelLookupException: Cant locate template for uri u'errorlogs.mako' 
                  
                  Request Info
                  
                  body: 
                  files: {}
                  protocol: http
                  connection: 
                  body_arguments: {}
                  uri: /errorlogs/
                  query_arguments: {}
                  _start_time: 1510997603.1
                  headers: Accept-Language: fr-fr Accept-Encoding: gzip, deflate Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5 Host: 192.168.10.202:8081 Cookie: X-OPENMEDIAVAULT-LOGIN-%242y%2410%24HdXZIjHn0eAN1mn02ERPseENMfUhnOkXd1djcJ3wA08Dkk3H1M8qW=He+who+controls+the+spice+controls+the+universe.; X-OPENMEDIAVAULT-LOGIN-%242y%2410%24%2F9sVwsvYGfL8ifTS7ktZI.9NMqFzlg%2FNBea4o7bQR5ZnER8W3FixW=The+beginning+of+knowledge+is+the+discovery+of+something+we+do+not+understand. Referer: http://192.168.10.202:8081/errorlogs/ Upgrade-Insecure-Requests: 1 
                  host: 192.168.10.202:8081
                  version: HTTP/1.1
                  server_connection: 
                  host_name: 192.168.10.202
                  _finish_time: None
                  query: 
                  arguments: {}
                  path: /errorlogs/
                  method: GET
                  remote_ip: 192.168.10.9
                  

                  Salut,

                  J'arrive pas a utilise YGG sur medusa (j'ai toujours une erreur...)

                  2017-11-21 18:58:59 ERROR SEARCHQUEUE-MANUAL-80379 :: [Yggtorrent] :: [b16e0e5] Failed parsing provider.
                  Traceback (most recent call last):
                  File "/home/valounours/.medusa/medusa/providers/torrent/html/yggtorrent.py", line 125, in parse
                  download_url = urljoin(self.url, cells[0].find('a', target='_blank')['href'])
                  TypeError: 'NoneType' object has no attribute 'getitem'

                  Une idée du problème ? D'autre dans le même cas ?