• Docker
  • Maintien d'une image docker rutorrent pour la communauté mondedie

popov_2 C'est fait maintenant l'image support linux/amd64 et linux/arm64

Petit bilan des commits des derniers jours

  • Pour geoip c'est plus ou moins fix, on utilise tout simplement plus la base de donnée city
  • L'image est multi-platform maintenant linux/amd64 et linux/arm64
  • Optimisation du temps de compilation, je ne compile plus moi même mediainfo (repo alpine à jour)
  • Optimisation de la taille de l'image, j'ai réussi à gratter encore de l'espace.
  • Résolution d'un problème de librairie filebot.
  • Mise en cache de la licence filebot (réduction du nombre d'activation sur le long terme)
  • Divers fix (création d'un user avec un autre groupe, optimisation des scripts, etc)

Pour le multi-plateform vous n'avez pas à vous soucier des tags. Si vous choisissez le tag latest ou filebot docker va pull directement la bonne image pour vous 💪

Pour la taille de l'image on commence à être bon 😃
Il faut surtout comparer les deux tags latest, 131MB contre 214MB pour linuxserver sans compression.

$ docker images | grep rutorrent
mondedie/rutorrent        latest              f3ce36b81490        19 hours ago        117MB
mondedie/rutorrent        filebot             478b55162175        19 hours ago        333MB
linuxserver/rutorrent      latest              902c293c4a2b        8 hours ago         214MB

Voilà, sinon je vous encourage à utiliser cette image. Plus on sera nombreux à l'utiliser plus il y aura des personnes susceptibles de la maintenir à l'avenir! J'ai déjà posé une bonne base je pense et l'image répond à pas mal de vos besoins.

++

Beau travail, va quand même falloir que je la test du coup 👍

Je découvre mondedie qui est une perle d'énergie et de connaissances. Armé d'un petit savoir, j'espère bien utiliser ce script avec succès. Encore merci pour tout ce travail.

Salut !
Merci pour ce beau travail !
Est-il possible et envisageable d'ajouter variables type -e USER=.... et -e PASSWORD=.... ?
Pour bloquer l'acces a rutorrent au public. Un genre de htaccess enfaite.

    CLusmi oui c’est possible, même si je pense qu’il faut gérer ce genre de chose avec un reverse proxy.

      Je plussoie, dans certains cas on ne veut pas de reverse proxy

        Magicalex Oui en effet c'est plus simple d'utiliser un reverse Proxy mais par exemple sur un Synology, si on veut utiliser le reverse proxy par défaut, on peut pas le faire directement via l'interface et on doit bidouiller dans les fichiers NGINX et lors d'une MAJ, je pense qu'ils sont écrasés.

        J'ai ajouté cette feature avec un .htpasswd sur mon github si tu veux voir: https://github.com/MisterCyp/docker-rutorrent

        Peut être qu'on peut faire plus propre, je ne suis pas du tout un pro sur Linux et Docker XD

          Cyprien Je vais considérer la question alors. Je vais réfléchir à une solution. @Cyprien je vais regarder ton travaille et voir comment l'intégrer à l'image.

          Coucou,

          J'ai voulu essayer de pull l image sur arm et j obtient le message suivant :
          $ docker pull mondedie/rutorrent:filebot
          filebot: Pulling from mondedie/rutorrent
          no matching manifest for linux/arm/v8 in the manifest list entries

          Si quelqu'un a une idée ?

            Hello
            Image en prod
            Filebot marche bien, grace au fichier args_amc.txt j ai pu personnaliser et recevoir mes notifications mail>
            bref que du bonheur.
            Je voulais personaliser les scripts postdl et postrm mais je viens de voir qu ils ne sont pas dans des repertoires accessibles. pourquoi les avoir mis dans /usr/local et pas dans /config ? y a des contraintes ?
            je voulais juste les adapter, du coup je vais modifier .rtorrent.rc pour pointer vers d autres scripts, c est pas l ideal

            en tout cas gros merci pour l image

              hello
              de nouveau moi apres quelques tests supplementaires
              je vous partage ce que j ai constaste (qui est peut etre normal mais j en doute)
              lors de tests et toujours pour personnaliser mon container, j ai a un moment donne efface le fichier amc.excludes.
              Jusque la rien de grave me direz vous.
              La ou j ai ete surpris c est lorsque j ai relance un DL et que ce dernier s est termine : filebot a procede a tout le renommage de mes fichiers dans downloads et non uniquement le torrent qui venait de se finir. Comme si les parametres de postdl n etaient pas pris en compte.
              Bref normal ou petit souci?
              En soit c est pas genant dans le sens ou en theorie tu n effaces pas ce ficher mais je me dis que lorsque le fichier comportera des cetaines de lignes ca va commencer a ralentir le traitement, non?

              a+

                Magicalex
                du coup je suis un peu perdu sur le role de --def ut_dir="${TORRENT_PATH}" et --def ut_title="${TORRENT_NAME}"
                Le but de ces options n est il pas de traiter le fichier renseigne par ${TORRENT_PATH} et ${TORRENT_NAME} ???

                Je prends en exemple ce petit script que je me suis fait:

                #!/bin/bash
                echo "chemin du fichier à renommer:"
                read TORRENT_PATH
                /home/.filebot/filebot.sh --lang fr -script fn:amc --output "/home/Media" --action symlink --conflict override -non-strict --def tmdbTV=y unsorted=y "ut_dir=$TORRENT_PATH"

                La variable $TORRENT_PATH renseigne bien filebot sur le fichier a traiter et il ne traite que celui la et aucunement les autres du repertoire ( et pas de fichier qui inventorie les fichiers a exclure).

                  christophebe Pour que le script soit dans un PATH et que l'on puisse exécuter le script comme une commande normale.

                  Je vois pas trop ce que tu veux personnaliser dans les deux scripts.

                  christophebe du coup je suis un peu perdu sur le role de --def ut_dir="${TORRENT_PATH}" et --def ut_title="${TORRENT_NAME}"
                  Le but de ces options n est il pas de traiter le fichier renseigne par ${TORRENT_PATH} et ${TORRENT_NAME} ???

                  Non, je t'invite à lire le script pour plus d'info sur comment fonctionne le script de filebot. Il semblerait que ut_title ne soit là que pour les notifications.

                  christophebe La variable $TORRENT_PATH renseigne bien filebot sur le fichier a traiter et il ne traite que celui la et aucunement les autres du repertoire ( et pas de fichier qui inventorie les fichiers a exclure).

                  Non plus, elle renseigne sur le dossier à traiter.

                    Magicalex
                    Desole, j insiste mais apres tests (via mon petit script, via le container de xataz):
                    la variable $TORRENT_PATH renseigne bien filebot sur le fichier a traiter (que ce soit un fichier ou un repertoire) et il ne traite que celui la et aucunement les autres du repertoires ou fichiers.
                    Donc dans ton script postdl, tes variables ne sont pas interpretees et donc ne sont pas utiles.

                      christophebe Et bien non. Ce n'est que des dossiers qui sont passés en paramètre. Le nom de la variable est très explicite. ut_dir dir pour directory

                      Si tu lances le script
                      docker exec -it rutorrent postdl /data/downloads nimportequoi.mkv

                      Tu verras que le script amc va check tous les fichiers si tu as supprimé le cache avant.

                      Hello,
                      Aller on poursuit le sujet de bon matin et de bonne humeur.
                      Etant arrivé tôt au boulot, j'ai fouiné sur le site de filebot et suis allé à la pêche aux infos.
                      J'ai trouvé un topic qui aborde le point ut_dir et surtout avec une réponse de Rednoah le concepteur de filebot:
                      Discussion sur le forum filebot

                      qBT will replace %F with the input folder/file of the completed download and call FileBot on that:

                      --def "ut_dir=%F"_

                      If you pass your entire Downloads folder as input folder every time, then you will end up processing incomplete downloads A, B and C after D is finished and triggers filebot.

                      Du coup voilà ce que je comprends:
                      rtorrent renvoie le nom du torrent que l'on stocke dans la variable TORRENT_PATH
                      ensuite on lance filebot avec en paramètre ut_dir=$TORRENT_PATH
                      Alors filebot est censé traiter uniquement le torrent qui vient de se terminer.
                      Cela permet d'éviter le traitement de fichiers qui seraient encore en cours de téléchargement.

                      Ce que j'ai pu retester ce matin sur le container de la communauté, c'est que le paramètre ut_dir ne s'applique pas et donc systématiquement tout le répertoire downloads est retraité (en excluant tous les torrents référencés dans le fichier amc_exclude).
                      En soit ce n'est pas bien grave, même dans le cas suivant:
                      imaginons que l'on lance 2 downloads, 1 se finit rapidement , le 2ieme prend 1 journée
                      lorsque le 1ier se finit, filebot traite alors le torrent 1 (celui fini) et le torrent 2 (celui en cours de download)
                      et il vient ensuite renseigné ces 2 torrents dans le fichier amc_exclude.
                      Le 2ieme torrent se finit plus tard, filebot se lance mais comme le torrent 2 est référencé dans amc_exclude , aucune action n'est effectuée.
                      la problématique que je vois c'est que l'on crée un symlink sur un fichier non fini et donc si tu es un peu impatient et que tu veux accéder au fichier via ton symlink tu vas avoir une mauvaise surprise.

                      Du coup j'ai regardé le script postdl (je suis très loin d'être un expert et mes compétences en scripting sont très limitées) pour essayer de voir pourquoi le paramètre ut_dir ne s'applique pas.

                      le début me semble bon:

                      TORRENT_PATH="$1"

                      par contre ici j'ai quelques doutes:

                      --def ut_dir="${TORRENT_PATH}"

                      est ce que ce ne devrait pas plutot être:

                      --def ut_dir=$TORRENT_PATH
                      ou

                      --def "ut_dir=$TORRENT_PATH"

                      Après comme je le disais je ne suis pas très doué et ne sais pas si les {....} ou mettre les "..." à cet endroit impactent ou pas. Mais c'est la seule dfférence que je vois avec le script de xataz (pour lequel je trouve le résultat souhaité et expliqué par Rednoah).

                      a+

                        christophebe alors "${TORRENT_PATH}" passe bien. C'est la syntaxe qui est recommandé.

                        Tu accordes trop de valeur à la variable TORRENT_PATH. Cette variable provient de la commande $d.directory= via xmlrpc.
                        Et la commande d.directory me renvoie la plupart du temps le dossier /data/downloads

                        Pour faire ce que tu veux il faudrait concaténer les variables et donc avoir le dossier du torrent en particulier, il faudrait faire ça.

                        FULL_PATH="${TORRENT_PATH}/${TORRENT_NAME}"

                        Le problème avec cette solution c'est que ça ne renvoie pas toujours un dossier mais aussi parfois un fichier.
                        Et si on donne un fichier à filebot il plante. Donc on revient au problème initiale.

                        Donc le mieux que l'on pourrait éventuellement faire serait de passer le dossier du torrent quand il existe.

                        #!/usr/bin/env sh
                        
                        TORRENT_PATH="${1}"
                        TORRENT_NAME="${2}"
                        
                        if [ -d "${TORRENT_PATH}/${TORRENT_NAME}" ]; then
                          FULL_PATH="${TORRENT_PATH}/${TORRENT_NAME}"
                        else
                          FULL_PATH="${TORRENT_PATH}"
                        fi
                        
                        /filebot/filebot.sh \
                          --lang "${FILEBOT_LANG}" \
                          -script fn:amc \
                          --output "/data/media" \
                          --action "${FILEBOT_RENAME_METHOD}" \
                          --conflict "${FILEBOT_CONFLICT}" \
                          -non-strict \
                          --log-file /tmp/filebot-amc.log \
                          --def @/filebot/args_amc.txt \
                          --def ut_dir="${FULL_PATH}" \
                          --def ut_title="${TORRENT_NAME}" 2>> /tmp/filebot-error.log

                        Mais sinon mon script fonctionne exactement de la même manière que celui de xataz.

                        Ok, j'ai bien pris note.
                        Un grand merci d'avoir creusé le sujet et d'avoir pris le temps de éclairer.

                        a+

                        Chris.