Repository navigation
Migrating from qBittorrent FR
S'applique à Hydranos 4.4.
Cette page est un mode opératoire à dérouler sur un week-end pour remplacer qBittorrent par Hydranos sans casser Sonarr, Radarr, autobrr ni cross-seed. Vous installez Hydranos à côté de qBittorrent, importez la bibliothèque, transférez le seed, repointez vos outils, vérifiez, et gardez un chemin de retour. À la fin, vous savez ce qui est repris, ce qui ne l'est pas, et comment revenir en arrière. Termes : Concepts & glossaire.
flowchart TD
S1["1. Installer Hydranos à côté de qBittorrent"] --> T1{"L'interface web répond sur le port 8199 ?"}
T1 -- oui --> S2["2. Créer des catégories avec les mêmes noms"]
S2 --> S3["3. Mettre les outils en pause, taguer, importer à l'arrêt"]
S3 --> T3{"L'aperçu trouve les données ?"}
T3 -- non --> FIX["Corriger la correspondance des chemins, Re-check paths"]
FIX --> T3
T3 -- oui --> S4["4. Arrêter qBittorrent, démarrer dans Hydranos"]
S4 --> T4{"En seed, sans erreur de tracker ?"}
T4 -- oui --> S5["5. Pointer Sonarr et Radarr vers Hydranos"]
S5 --> T5{"Le test passe, un grab est importé ?"}
T5 -- oui --> S6["6. autobrr et cross-seed"]
S6 --> T6{"Les injections de test seedent sans revérification ?"}
T6 -- oui --> KEEP["Garder qBittorrent arrêté, pas supprimé, pendant un temps"]
T1 -- non --> RB["Revenir en arrière"]
T4 -- non --> RB
T5 -- non --> RB
T6 -- non --> RB
Hydranos parle l'API WebUI de qBittorrent (le shim qBittorrent, /api/v2/* sur le port 8199), donc Sonarr, Radarr, autobrr et cross-seed conservent leur type de client de téléchargement « qBittorrent ». Le shim couvre ce dont ces outils ont besoin pour ajouter, lister, arrêter, démarrer, recatégoriser et supprimer des torrents. Ce n'est pas un qBittorrent complet.
Vos réglages qBittorrent, un par un. Les clés de niveau moteur se règlent sous Config › Paramètres avancés (default.toml) › Session Hoard (ou Session Race), s'appliquent à chaud, et sont expliquées sur File d'attente, limites de partage et de débit.
| Réglage de qBittorrent | Hydranos 4.4 | Détails |
|---|---|---|
| Catégories | ✓, mais chaque catégorie a aussi un mode (race ou hoard, qui choisit le moteur) et a besoin d'un chemin de sauvegarde. |
Catégories & routage |
| Tags | ✓ | |
| File d'attente : nombre maximal de téléchargements actifs | ✓ active_downloads par moteur (le [hoard] livré a 10, [race] aucun ; 0 ou -1 = pas de limite). Les téléchargements dont l'essaim a le plus de seeders passent en premier ; les autres affichent en file (queued) (queuedDL pour vos outils) et gardent leur progression. Force Start (ou Forcer le téléchargement) fait tourner un torrent au-delà de la limite ; pas de positions dans la file (refusées avec 409). |
File de téléchargement |
| Nombre maximal d'envois actifs, de torrents actifs | ✓ seulement avec queueing = true : active_seeds, active_limit (téléchargements + seeds). Les seeds les plus anciens continuent ; la file arrête les autres et les relance quand il y a de la place. Désactivé dans le fichier livré. |
File de téléchargement |
| Ne pas compter les torrents lents | ✓ dont_count_slow_torrents = true, avec slow_torrent_dl_rate_threshold et slow_torrent_ul_rate_threshold (Kio/s, 2 par défaut) et slow_torrent_inactive_timer (secondes, 60 par défaut). |
Torrents lents |
| Limites de ratio, de temps de seed et de temps de seed inactif | ✓ par moteur : max_ratio, max_seeding_time, max_inactive_seeding_time (minutes, -1 = désactivé), share_limit_action = stop, remove ou remove_with_files. Par torrent : clic droit › Limites de partage… (Share limits…), ou les limites qu'envoient Sonarr, Radarr ou autobrr. Elles n'agissent jamais avant que le Minimum seed du tracker soit accompli, et jamais sur un tracker sans Minimum seed déclaré. |
Limites de partage |
| Limites de vitesse | ✓ par moteur (upload_rate_limit, download_rate_limit, octets/s, 0 = aucune), par torrent (clic droit › Limiter le débit… (Limit rate…), Kio/s), et un plafond global que seule l'API qBittorrent règle (transfer/setUploadLimit, setDownloadLimit). ✗ limites alternatives et planifiées. |
Limites de débit |
| Téléchargeur RSS | ✓ flux et règles de téléchargement dans l'onglet RSS et via /api/v2/rss/* ; rss/setRule accepte le JSON de règle de qBittorrent. |
RSS et téléchargements automatiques |
| Plugins de recherche | ✗ Gardez Prowlarr. | |
| Priorités de fichiers | Normale, Haute et Maximale (Normal, High, Maximum) ✓ : elles fixent l'ordre de téléchargement des fichiers (panneau de détail › Contenu (Content) › Priorité (Priority)). ✗ « Ne pas télécharger » (la priorité 0 est refusée avec 409) : chaque fichier est toujours téléchargé. | Ajouter des torrents & données existantes |
| Téléchargement séquentiel, première et dernière pièce d'abord | ✓ clic droit › Téléchargement séquentiel (Sequential download), Première/dernière pièce d'abord (First/last piece first), ou les options d'ajout de vos outils. | idem |
| Déplacer les données vers un autre dossier | ✓ dans l'interface web (Déplacer vers un dossier… (Set location…), Changer de catégorie + déplacer les fichiers › (Change category + move files ›)), via l'API REST native, et via l'API qBittorrent (setLocation, un job de déplacement par copie dans l'onglet Jobs). |
Jobs, actions groupées & déplacement |
| Utilisateurs | Un compte admin, plus la clé API. | |
| Dossiers surveillés, magnets | ✓ | Ajouter des torrents & données existantes |
| Ratio et volume envoyé déclarés à Sonarr/Radarr/autobrr/cross-seed | Les vrais chiffres cumulés, dans la continuité des totaux de qBittorrent. | Shim qBittorrent & automatisation |
Absent en 4.4 : recherche, téléchargement sélectif (priorité de fichier 0), limites de vitesse alternatives, utilisateurs multiples. Un client qui appelle un endpoint manquant reçoit un 404 ; les appels qu'Hydranos possède mais ne peut pas honorer (priorité 0, positions dans la file, rename) répondent 409 avec la raison.
Exemple : cinq téléchargements à la fois, et une release bloquée à 99 % n'occupe pas d'emplacement. Les torrents importés et les grabs de Sonarr arrivent dans hoard (étape 2), réglez donc cela dans Session Hoard (active_downloads et les trois valeurs sont des champs numériques, dont_count_slow_torrents un interrupteur), puis Enregistrer les réglages (Save settings) : cela s'applique au prochain passage de la file. Ou dans le fichier, mais une modification à la main n'est lue qu'au prochain démarrage (ou au prochain enregistrement depuis l'interface) :
[hoard]
active_downloads = 5 # à chaud depuis Session Hoard ou une API ; queueing n'est pas nécessaire pour celui-ci
dont_count_slow_torrents = true # un téléchargement sous le seuil pendant la durée du minuteur cesse de compter
slow_torrent_dl_rate_threshold = 2 # Kio/s
slow_torrent_inactive_timer = 60 # secondesUn téléchargement lent continue de tourner ; il cesse seulement d'occuper un emplacement, si bien que plus de cinq peuvent tourner en même temps. Un torrent que vous avez arrêté vous-même ne compte jamais. Un client peut aussi régler le plafond avec app/setPreferences max_active_downloads, qui l'écrit dans chaque moteur local, race compris. Plus de détails : Exemple : garder 5 téléchargements actifs.
Ce que l'import reprend, torrent par torrent : le fichier .torrent (exporté depuis qBittorrent), le nom de catégorie, les tags, le chemin de sauvegarde (après correspondance des chemins), l'état arrêté, l'achèvement (les torrents complets dont les données sont trouvées sautent la vérification par hash), et les totaux cumulés d'envoi/réception, si bien que le ratio qu'Hydranos affiche dans ses propres listes continue. Il ne reprend pas le temps de seed, la date d'ajout, les limites de vitesse ou de partage, les priorités de fichiers, le téléchargement séquentiel, les flux et règles RSS, ni aucun réglage de qBittorrent : réglez-les à nouveau à l'aide du tableau ci-dessus. Comme le temps de seed repart de zéro, une limite de temps de seed et le Minimum seed du tracker sont comptés à partir de l'import pour toute la bibliothèque.
Installez avec la page de votre plateforme : Docker, Linux (bare metal) ou Windows (vue d'ensemble et ports sur Installation & premier démarrage). Laissez qBittorrent tourner : l'import lit sa WebUI.
Ports. Hydranos utilise 8199 (interface web et API, TCP), 16171 (race) et 16172 (hoard), chacun en TCP et UDP. Vérifiez que le port de la WebUI et le port d'écoute de qBittorrent sont différents de ceux-ci sur le même hôte.
Chemins. C'est l'étape qui décide si votre bibliothèque seede tout de suite ou se retélécharge. Hydranos doit voir les données à un vrai chemin, et Sonarr/Radarr doivent pouvoir atteindre les chemins qu'Hydranos déclare (content_path = chemin de sauvegarde + nom du torrent). Le plus simple : montez le même dossier de l'hôte au même chemin dans le conteneur que celui utilisé par qBittorrent. Si qBittorrent voyait /downloads, donnez aussi /downloads à Hydranos (extrait ; le fichier compose complet est sur Docker) :
services:
hydranos:
image: ghcr.io/kheopsian/hydranos:v4.4.1
volumes:
- ./hydranos-config:/config
- /srv/media/downloads:/downloads # same host folder, same container path as qBittorrentVous n'avez alors besoin d'aucune correspondance de chemins nulle part. Si les chemins ne peuvent pas être identiques, l'assistant d'import a une correspondance de chemins (étape 3) et Sonarr/Radarr ont besoin d'un remote path mapping (étape 5) ; les deux ont un exemple complet plus bas.
Premier démarrage, en trois lignes. Ouvrez http://<host>:8199 depuis votre réseau local, avant d'ouvrir le moindre port vers Internet. Créez le compte admin sur l'écran Bienvenue dans Hydranos (Welcome to Hydranos) (Créer le compte (Create account), mot de passe de 8 caractères ou plus), et notez la clé API sous Config › Paramètres avancés (default.toml) (Advanced settings (default.toml)) › Général (General) › api_key. Détails : Installation & premier démarrage.
Juste après la connexion, une fenêtre Import an existing library peut s'ouvrir d'elle-même. Cliquez sur Passer (Skip) pour l'instant : créez d'abord les catégories (étape 2). L'assistant reste accessible sous Config › Paramètres avancés (default.toml) › Import › Importer… (Import…) : malgré le nom « Paramètres avancés », c'est là que commence l'étape 3.
Hydranos refuse un ajout quand la catégorie est inconnue et que le client n'envoie pas de chemin de sauvegarde. Créez une catégorie Hydranos pour chaque catégorie qu'utilisent vos outils, avec exactement le même nom (les noms sont sensibles à la casse) : Catégories (Categories) › + Nouveau (+ New) › Nom (Name), Mode, Chemin d'enregistrement (Save Path) › Enregistrer (Save). Vérifiez deux fois le nom : renommer plus tard ré-étiquette les torrents dans Hydranos, mais chaque outil continue d'envoyer l'ancien nom tant que vous ne le changez pas aussi de son côté (voir Catégories & routage).
| Champ | Quoi mettre |
|---|---|
| Nom | Le nom déjà présent dans le champ Category de votre client de téléchargement qBittorrent dans Sonarr/Radarr (Sonarr propose en général tv-sonarr par défaut, Radarr radarr). Cette page prend tv comme exemple. |
| Chemin d'enregistrement | Le dossier qu'utilisait qBittorrent pour cette catégorie, tel qu'Hydranos le voit. |
| Mode | Hoard. |
La Post-Import Category de Sonarr et de Radarr (par exemple tv-imported) est aussi un nom de catégorie : laissez-la vide à l'étape 5, ou créez-la ici aussi. Sonarr la règle avec setCategory, qui ne vérifie pas que la catégorie existe : une catégorie absente laisse une étiquette orpheline (voir Catégories & routage).
En cas de doute, classez vos catégories en Hoard. Race sert à faire la course sur les nouveaux uploads, et le drain race peut supprimer des torrents race avec leurs données, que Sonarr les ait déjà importés ou non. Les torrents importés depuis qBittorrent arrivent toujours en hoard, quel que soit le mode de leur catégorie : avec une catégorie Hoard, votre ancienne bibliothèque et les nouveaux grabs de Sonarr se retrouvent dans le même onglet Hoard et se comportent de la même façon. Avec une catégorie Race, les anciens torrents tv restent dans Hoard et les nouveaux grabs tv vont dans Race, soumis au drain. Détails : Moteurs : race & hoard.
L'import crée toute catégorie manquante en hoard avec le premier chemin de sauvegarde qu'il rencontre, après correspondance des chemins (la partie droite de l'aperçu), mais il ne modifie jamais une catégorie qui existe déjà : ce sont donc celles que vous créez ici qui l'emportent.
Avant d'importer, faites deux choses dans vos autres outils :
- Coupez les nouveaux grabs vers qBittorrent. Dans Sonarr, Radarr, autobrr et cross-seed, désactivez le client de téléchargement qBittorrent (dans Sonarr et Radarr : Settings › Download Clients, décochez Enable). Sinon, une release récupérée après l'import commence à se télécharger dans qBittorrent, Hydranos ne la reçoit jamais, et la réimporter plus tard mettrait un même torrent dans les deux clients. Ces outils ne pourront plus rien récupérer avant l'étape 5, donc enchaînez les étapes 3 à 5 d'une traite.
-
Taguez ce que vous avez arrêté volontairement. Chaque torrent importé arrive arrêté (le réglage par défaut ci-dessous), donc après l'import plus rien ne distingue les torrents que vous aviez délibérément arrêtés dans qBittorrent. Donnez-leur maintenant un tag dans qBittorrent (par exemple
keep-stopped) : les tags sont repris. Relancer l'import plus tard ne permet pas de l'ajouter, car une relance ignore tout torrent déjà importé.
Ouvrez ensuite Config › Paramètres avancés (default.toml) › Import › Importer… (section Importer depuis un autre client (Import from another client)), et choisissez qBittorrent.
-
Importer depuis qBittorrent (Import from qBittorrent) : saisissez l'URL de la WebUI telle qu'Hydranos l'atteint, le nom d'utilisateur et le mot de passe qBittorrent, puis Aperçu (Preview). Un simple
host:portreçoithttp://en préfixe. Les connexions de qBittorrent 4.x comme 5.x sont comprises. Seule l'URL est obligatoire (le champ du nom d'utilisateur commence àadmin) : Hydranos envoie le nom d'utilisateur et le mot de passe tels que saisis, vides compris, et ne s'arrête que si qBittorrent répondFails.ou un statut d'erreur (qBittorrent refused the login: …). Quelle URL :-
http://qbittorrent:8080uniquement si les deux conteneurs sont sur le même réseau Docker défini par l'utilisateur (un fichier compose met ses services sur un tel réseau). - Pas sûr ? Utilisez l'adresse LAN de l'hôte et le port WebUI publié de qBittorrent, par exemple
http://192.0.2.10:8080. - Hydranos dans un conteneur gluetun : le pare-feu de gluetun bloque le LAN par défaut. Dans gluetun, le réglage s'appelle en général
FIREWALL_OUTBOUND_SUBNETS: ajoutez-y votre plage LAN (par exemple192.0.2.0/24). Si qBittorrent tourne aussi dans le même conteneur gluetun, utilisezhttp://localhost:8080. Non testé par le mainteneur ; voir VPN & sortie réseau.
-
- Aperçu de l'import (Import preview) affiche les totaux (complets, partiels, envoi repris), les catégories qu'il va créer (« toutes importées en hoard ») et la correspondance des chemins : les dossiers de qBittorrent à gauche, ce qu'Hydranos doit utiliser à droite. Il y a une ligne par dossier de sauvegarde de premier niveau : un dossier situé dans un autre dossier listé est couvert par celui-ci, et au-delà de 40 dossiers la liste est regroupée sur les dossiers parents. L'aperçu cherche aussi les données d'un échantillon de 64 torrents au plus, aux chemins de qBittorrent tels quels. S'il indique qu'aucune donnée n'a été trouvée, corrigez les chemins de droite et cliquez sur Re-check paths : il vérifie que chaque dossier de droite existe pour Hydranos (✓ ou ✗), pas les données de chaque torrent.
- Laissez cochée la case Tout importer à l'arrêt, aucune annonce tant qu'ils ne sont pas démarrés (Import everything stopped, no announce until you start them) (le réglage par défaut). Rien n'annonce avant l'étape 4.
- Cliquez sur Importer {n} torrents (Import {n} torrents). La ligne de progression affiche
{done}/{total} · {complete} complets, données trouvées · {check} à vérifier ou télécharger · {failed} en échec({done}/{total} · {complete} complete, data found · {check} to check or download · {failed} failed), puis· {n} skippedet· {n} ajoutés à l'arrêt({n} added stopped) s'il y en a. Les deux premiers compteurs disent ce qu'étaient les données, pas si le torrent annonce : avec la case ci-dessus cochée, chaque torrent ajouté compte aussi comme ajouté à l'arrêt, et la note finale indique{n} torrents ont été ajoutés à l'arrêt, comme demandé : rien n'est annoncé tant que vous ne les démarrez pas depuis la liste.« Données trouvées » signifie que le content path existe après correspondance ; tailles et hashes ne sont pas vérifiés. - Quand elle affiche Import terminé (Import complete), les torrents en échec sont listés (nom et erreur ; au-delà de 200,
…et {n} de plus, dans le journal.(…and {n} more, in the log.)), et un bouton Réessayer les {n} échecs (Retry the {n} failed) relance uniquement ceux-là, sans redemander le mot de passe : il est gardé en mémoire jusqu'au prochain import ou redémarrage, jamais écrit. Cliquez ensuite sur Fermer et recharger (Close & reload). Retour (Back) sur l'aperçu garde aussi le mot de passe.
Correspondance des chemins, un exemple complet. Un seul dossier de l'hôte, /srv/media/downloads, monté à un chemin différent dans chaque conteneur :
| Conteneur | Volume | Chemin pour la catégorie tv
|
|---|---|---|
| qBittorrent | /srv/media/downloads:/data/torrents |
/data/torrents/tv |
| Hydranos | /srv/media/downloads:/downloads |
/downloads/tv |
Dans l'aperçu, la ligne affiche /data/torrents/tv → remplacez la partie droite par /downloads/tv. Règle : prenez le chemin de gauche, remplacez la partie conteneur du volume de qBittorrent (/data/torrents) par la partie conteneur du volume d'Hydranos (/downloads). Re-check paths affiche alors ✓. La catégorie Hydranos tv (étape 2) reçoit ce même /downloads/tv comme chemin de sauvegarde.
sequenceDiagram
actor You as Vous
participant H as Hydranos
participant Q as WebUI qBittorrent
You->>H: Aperçu avec URL, nom d'utilisateur, mot de passe
H->>Q: POST /api/v2/auth/login
H->>Q: GET /api/v2/torrents/info
H-->>You: totaux, catégories, lignes de chemins, test des données sur 64 au plus
opt une ligne de chemin est fausse
You->>H: Re-check paths avec la correspondance modifiée
H-->>You: le dossier existe ou non, par ligne
end
You->>H: Importer N torrents
H->>Q: nouvelle connexion et nouvelle liste
loop chaque torrent
H->>Q: GET /api/v2/torrents/export?hash=HASH
opt connexion coupée, 429 ou 5xx, ou 401 ou 403
H->>Q: nouvelle connexion après un 401 ou 403, attente 1 s puis deux fois plus, nouvelle demande, 4 essais en tout
end
alt export échoué, ou ajout refusé
H->>H: compté failed, listé, gardé pour un nouvel essai
else déjà dans un moteur
H->>H: compté skipped
else complet dans qBittorrent et content path existant
H->>H: ajout dans hoard en mode seed, sans vérification par hash
else sinon
H->>H: ajout dans hoard, vérifié par hash contre le disque
end
end
H-->>You: complets avec données trouvées, à vérifier ou télécharger, failed, skipped, ajoutés à l'arrêt
H->>H: enregistre la provenance si au moins un torrent a été ajouté
opt des torrents ont échoué
You->>H: Réessayer les n échecs
H->>Q: nouvelle connexion, puis export des seuls échecs
end
Note over H,Q: qBittorrent est seulement lu, jamais modifié
Ce que fait l'import, exactement :
-
qBittorrent n'est pas modifié. Hydranos se contente de se connecter, de lister
/api/v2/torrents/infoet de télécharger chaque.torrentvia/api/v2/torrents/export. Rien n'est arrêté, retiré ni modifié côté qBittorrent. - Chaque torrent importé va dans le moteur hoard, quel que soit le mode de sa catégorie.
- Un torrent est ajouté en mode seed (sans vérification par hash) seulement s'il est complet dans qBittorrent et que son content path existe après correspondance. Seule l'existence est vérifiée, pas les tailles. Tout le reste est vérifié par hash contre ce qui se trouve sur le disque, même à l'arrêt, et reprend à partir de là.
- Un torrent arrêté dans qBittorrent reste arrêté, même si vous décochez la case « Tout importer à l'arrêt ».
- L'import ne déclenche pas les workflows « quand un torrent est ajouté » (when a torrent is added).
- Relancer l'import est sans risque : un torrent déjà présent dans un moteur est compté
skippedet laissé tel quel (tags, catégorie et état ne sont pas mis à jour). -
Un qBittorrent occupé ne vous coûte pas de torrents. Chaque export de
.torrentest tenté jusqu'à 4 fois (attente de 1 s, puis doublée) après une connexion coupée, un 429 ou un 5xx ; après un 401 ou 403, Hydranos se reconnecte d'abord, si bien qu'une session qui expire pendant un long import est renouvelée. Un 404, ou un 409 (no metadata yet in qBittorrent: un magnet qui n'a jamais récupéré ses métadonnées là-bas), n'est pas retenté. - Si tous les torrents sont comptés
failed, lisez la liste à la fin ou la ligne de journalimport: torrent not added; unexport … http 404signifie que ce qBittorrent ne propose pas l'endpoint d'export, et(gave up after 4 attempts)qu'il a continué d'échouer. Corrigez la cause, puis Réessayer les {n} échecs (ouPOST /api/import/retry, qui fonctionne aussi après un import Transmission). -
L'import est mémorisé. Un import qui a ajouté au moins un torrent enregistre d'où vient la bibliothèque : la vue d'ensemble affiche
même compteur · repris depuis qBittorrent(same counter · carried over from qBittorrent), et la fenêtre Import an existing library ne s'ouvre plus à la connexion.
Vous venez plutôt de Transmission ? Choisissez Transmission. Hydranos lit le dossier de configuration de Transmission (celui qui contient torrents/ et resume/), donc Transmission n'a pas besoin de tourner ; si le dossier n'est pas visible par Hydranos, envoyez-en un .zip. Options : Créer une catégorie par dossier de destination (Create one category per destination folder) et Importer les libellés comme tags (Import labels as tags) (toutes deux cochées par défaut). Les torrents sans fichier de reprise sont ignorés. L'aperçu a des lignes de correspondance des chemins mais pas de bouton Re-check paths. Tout le reste ci-dessus s'applique.
Ne laissez jamais les deux clients faire tourner le même torrent : deux clients qui écrivent dans un même téléchargement incomplet le corrompent, et deux pairs depuis une même adresse sur le même torrent peuvent déplaire à un tracker privé. qBittorrent s'arrête donc d'abord, puis Hydranos démarre.
- Dans qBittorrent, sélectionnez tous les torrents et arrêtez-les. Arrêtez ensuite qBittorrent lui-même (son conteneur ou son service) et désactivez son démarrage automatique, pour qu'il ne puisse pas revenir de lui-même après un redémarrage. Conservez sa configuration et ses données : c'est votre retour arrière. Dans qBittorrent, les torrents arrêtés restent normalement arrêtés quand il redémarre.
-
Dans Hydranos, ouvrez Hoard. Pour laisser de côté vos torrents
keep-stopped, faites un clic droit surkeep-stoppeddans la liste Tags parmi les filtres à côté du tableau (un clic inclut un tag, un clic droit l'exclut). Appuyez sur Ctrl+A : cela sélectionne tous les torrents qui correspondent au filtre, pas seulement les 500 premières lignes affichées par la liste. Clic droit › Démarrer (Start). Au-delà de 500 torrents, Hydranos demande une confirmation ; un panneau de progression suit la tâche groupée (voir Jobs, actions groupées & déplacement). -
Surveillez les pastilles d'état : Vérification (Checking) pendant les vérifications par hash, puis En partage (Seeding), ou En téléchargement (Downloading) pour les torrents incomplets. Erreur de tracker (Tracker Error) montre les torrents que leur tracker a refusés : ouvrez-en un pour lire le message. Les torrents incomplets au-delà de l'
active_downloadsdu moteur (10 dans le[hoard]livré, ou les 5 de l'exemple ci-dessus) affichent En file (Queued) et démarrent à mesure que des emplacements se libèrent (la file tourne toutes les 30 s : juste après le Démarrer groupé, plus de téléchargements que le plafond peuvent tourner jusqu'à son passage suivant ; après un redémarrage, son premier passage a lieu au bout d'une minute environ).
Dans Sonarr (et de même dans Radarr) : Settings › Download Clients. Ajoutez un nouveau client qBittorrent et laissez l'ancien en place, désactivé depuis l'étape 3, jusqu'à ce que les vérifications passent. Les noms de champs ci-dessous sont ceux de Sonarr/Radarr v4.
| Champ | Valeur |
|---|---|
| Host (hôte) | L'hôte Hydranos tel que Sonarr l'atteint : hydranos si les deux sont sur le même réseau Docker défini par l'utilisateur ; derrière gluetun, gluetun (Hydranos n'a alors pas de réseau propre, et le port 8199 est publié sur gluetun) ; en cas de doute, l'adresse LAN de l'hôte, par exemple 192.0.2.10
|
| Port |
8199 ([daemon] api_port) |
| Use SSL / URL Base | Désactivé / vide, sauf si votre propre reverse proxy les ajoute |
| Username + Password (identifiant + mot de passe) | Le compte admin d'Hydranos (nom par défaut admin) et son mot de passe, ou n'importe quel nom d'utilisateur avec la clé API comme mot de passe |
| Category (catégorie) | La catégorie Hydranos de l'étape 2, par exemple tv
|
| Post-Import Category (catégorie après import) | Vide, ou une catégorie créée à l'étape 2 : elle ne fait que réétiqueter le torrent (aucun déplacement), et un nom qu'Hydranos n'a pas devient une étiquette orpheline |
| Initial State (état initial) | Start (ou un état arrêté). Force Start fonctionne aussi : il démarre le torrent et le fait tourner au-delà de la limite de téléchargements du moteur (active_downloads, 10 dans le [hoard] livré) |
| Sequential Order, First and Last First | Appliqués, comme dans qBittorrent (voir Ordre de téléchargement) |
| Content Layout | Appliqué ; sur Default, [daemon] create_torrent_folder décide |
| Recent / Older Priority | Laissez la valeur par défaut, Last : les appels de position dans la file répondent 409 (Torrent queueing is not enabled), comme qBittorrent avec la file désactivée |
Cliquez sur Test et enregistrez. La connexion répond Ok. ou Fails. ; un appel sans session reçoit 403 Forbidden., ce que Sonarr et Radarr attendent avant de se connecter. Dans les réglages de chaque indexeur, le ratio de seed et le temps de seed fonctionnent désormais. Que l'outil les envoie avec l'ajout ou via setShareLimits, ils deviennent les limites de partage propres au torrent et la share_limit_action du moteur (stop dans le fichier livré) s'applique, mais seulement une fois accompli le Minimum seed du tracker (Trackers › Modifier (Edit), announce_min_seed_hours). Un tracker sans Minimum seed déclaré retient la limite indéfiniment (journal share limit reached, held) : déclarez 0 pour un tracker sans règle de seed.
Remote path mapping, un exemple complet. Nécessaire seulement quand Sonarr voit les téléchargements à un autre chemin qu'Hydranos. Avec Hydranos qui monte /srv/media/downloads sur /downloads (exemple de l'étape 3) et Sonarr qui le monte sur /data/torrents, ajoutez sous Settings › Download Clients › Remote Path Mappings :
| Champ | Valeur |
|---|---|
| Host (hôte) | Exactement le Host du client de téléchargement Hydranos ci-dessus, par exemple hydranos
|
| Remote Path (chemin distant) |
/downloads/ (le chemin qu'Hydranos déclare) |
| Local Path (chemin local) |
/data/torrents/ (le même dossier tel que Sonarr le voit) |
Non testé par le mainteneur. Monter le même chemin de conteneur dans tous les conteneurs évite complètement la correspondance, et les imports par hardlink de Sonarr ont de toute façon besoin que téléchargements et bibliothèque soient sur un seul montage (Docker).
La séquence ci-dessous est ce que reçoit Hydranos quand Sonarr récupère une release.
sequenceDiagram
participant S as Sonarr
participant H as Shim Hydranos
participant P as Placement
participant E as Moteur
S->>H: GET /api/v2/app/webapiVersion (sans session)
H-->>S: 403 Forbidden.
S->>H: POST /api/v2/auth/login (username, password)
H-->>S: Ok. et cookie SID
S->>H: POST /api/v2/torrents/add (torrent ou urls, category=tv)
H->>P: catégorie tv, savepath si envoyé
alt pas de savepath, catégorie inconnue ou sans chemin de sauvegarde, aucun défini par setPreferences
P-->>H: refusé, pas de chemin de sauvegarde
H-->>S: 400 Fails.
else catégorie tv connue, avec un chemin de sauvegarde
P->>E: moteur hoard si le mode est hoard, sinon race
H-->>S: 200 Ok.
end
loop tant que Sonarr suit le téléchargement
S->>H: GET /api/v2/torrents/info?category=tv
H-->>S: état downloading, stalledDL, checkingDL ou queuedDL
H-->>S: puis uploading ou stalledUP, progress 1, content_path
end
Note over S,H: ratio et uploaded sont les vrais chiffres cumulés
Les deux utilisent le même type de client « qBittorrent », le même hôte, le port 8199 et les mêmes identifiants que ci-dessus. Les réglages complets par application sont sur Shim qBittorrent & automatisation ; les points qui comptent pour une migration :
-
autobrr : les magnets envoyés via
urlsfonctionnent ; Hydranos résout les métadonnées en arrière-plan et répondOk.immédiatement. L'option de réannonce d'autobrr utilisetorrents/reannounce, qui fonctionne. Les règles basées sur le ratio ou l'envoi voient les vrais chiffres. Les limites d'envoi et de téléchargement et les limites de ratio et de temps de seed d'une action autobrr sont appliquées (même garde du tracker qu'à l'étape 5). -
cross-seed : une injection avec
skip_checking=trueest ajoutée en mode seed, sans vérification par hash (un magnet aussi, une fois ses métadonnées arrivées). Chaque catégorie qu'envoie cross-seed doit exister dans Hydranos avec le mode voulu : une catégorie inconnue accompagnée d'un chemin de sauvegarde explicite est acceptée et atterrit dans le moteur race. Avec l'option de catégories dupliquées de cross-seed activée, il envoie en général une catégorie terminée par.cross-seed(par exempletv.cross-seed) : créez-la aussi en Hoard. cross-seed voit les torrents de tous les moteurs, chaque hash une seule fois, mais ne peut ajouter que dansraceouhoard(via le mode de la catégorie).
Réactivez les clients de téléchargement de ces outils en les pointant uniquement vers Hydranos. Les anciens clients qBittorrent restent désactivés.
| Vérification | Comment | Résultat attendu |
|---|---|---|
| Test de grab | Recherchez et récupérez manuellement un épisode dans Sonarr | Il apparaît dans l'onglet Hoard avec la catégorie tv, la file de Sonarr l'affiche, et il est importé une fois terminé |
| Nouveau grab | Récupérez une release qu'Hydranos détient déjà | Sonarr indique un succès : « déjà ajouté » compte comme Ok.
|
| Injection cross-seed | Lancez une recherche/injection | Le torrent apparaît en seed, sans phase Vérification |
| Transfert du seed | Onglet Hoard au bout d'une heure | Du trafic d'envoi, aucune nouvelle entrée Erreur de tracker |
| Catégories | Onglet Catégories après le Test de Sonarr | Mêmes noms, modes et chemins de sauvegarde que ceux définis à l'étape 2 |
En option, depuis un shell (remplacez 192.0.2.10 par votre hôte) :
| Vérification | Commande | Résultat attendu |
|---|---|---|
| Connexion au shim | curl -s -c hy.cookie -d 'username=admin&password=YOUR_PASSWORD' http://192.0.2.10:8199/api/v2/auth/login |
Ok. (avec la clé API : -d 'username=any&password=YOUR_API_KEY') |
| Catégories vues par les clients | curl -s -b hy.cookie http://192.0.2.10:8199/api/v2/torrents/categories |
Vos catégories avec leur savePath
|
| Liste | curl -s -b hy.cookie 'http://192.0.2.10:8199/api/v2/torrents/info?category=tv' |
Des lignes JSON ; des chemins content_path qui existent côté Sonarr |
Si un grab échoue avec Fails., la catégorie manque en général ou n'a pas de chemin de sauvegarde : vérifiez l'onglet Catégories. La ligne de journal qbit add refused (qbit add: url refused pour un magnet ou une URL de .torrent) donne la raison exacte (aussi un .torrent illisible, ou un ajout race refusé faute d'espace disque quand add_block_enabled est activé). D'autres symptômes sur Dépannage.
-
Les objectifs de seed sont soumis au minimum du tracker. Vos outils voient le vrai ratio et le vrai volume envoyé, et les limites qu'ils envoient sont appliquées, mais aucune limite de partage (la leur ou celle du moteur) n'arrête ni ne retire un torrent avant que le Minimum seed du tracker soit accompli, et aucune n'agit jamais pour un tracker sans Minimum seed déclaré (un torrent sans aucun tracker n'est pas retenu ; étape 5). L'action est la
share_limit_actiondu moteur, pas un choix par torrent. Le temps de seed n'est pas importé, donc les limites basées sur le temps comptent à partir du jour de l'import pour toute la bibliothèque. Pour les règles que les limites de partage ne savent pas exprimer (par catégorie, par tracker), un workflow à intervalle régulier (on a timer) peut stop the torrent ou delete the torrent ; un nouveau workflow est enregistré désactivé : cochez Activé (Enabled) dans la liste des workflows. Voir Workflows. -
Les catégories créées par un client (via
createCategory) sont toujourshoard, avec le chemin de sauvegarde envoyé par le client, quel qu'il soit ; un nom qui existe déjà répond 409Category already existset reste tel que vous l'avez réglé. Un chemin de sauvegarde vide fait échouer tout ajout dans cette catégorie. Vérifiez l'onglet Catégories après un Test. -
setCategoryne change que l'étiquette : la catégorie post-import de Sonarr ne déplace pas les fichiers et ne change pas de moteur. - Un torrent détenu par deux moteurs est listé une seule fois, comme la copie de son premier moteur (race avant hoard, puis les moteurs supplémentaires).
-
setPreferencesapplique une partie de ce qu'il reçoit : limites de partage, plafonds de débit,max_active_downloads, la règle des torrents lents,save_path, etdht/pex/lsd(au prochain démarrage) ; les autres clés répondent 200 et sont journalisées comme sans effet.queueinglui-même ne se bascule que dans Hydranos. Certains champs restent constants (seedsdans les propriétés,availability, la version de qBittorrent). Le tableau de fidélité complet est sur Shim qBittorrent & automatisation. -
Appels refusés ou manquants : la priorité 0 dans
filePrio,renameet les appels de position dans la file (topPrio,bottomPrio,increasePrio,decreasePrio) répondent 409 ;sync/maindataenvoie toujours une mise à jour complète ; la recherche,renameFile,renameFolder,editTracker,setSuperSeeding,setAutoManagement, les limites de vitesse alternatives etlog/*répondent 404.
L'import ne fait que lire qBittorrent, donc votre bibliothèque, vos réglages et vos données de reprise qBittorrent sont tels que vous les avez laissés. Défaites dans l'ordre inverse :
- Sauvegardez ce qu'Hydranos est seul à avoir. Les torrents récupérés pendant qu'Hydranos était aux commandes ne sont pas dans qBittorrent. Sélectionnez-les (sur Hoard, cliquez sur une ligne puis Maj+clic sur une autre pour sélectionner la plage ; sur Race, où Ctrl+A ne fait rien, même Maj+clic), clic droit › Télécharger les .torrent (.zip) (Download .torrent files (.zip)) › Garder les trackers (Keep trackers).
-
Arrêtez Hydranos lui-même (
docker stop hydranos, ou comme décrit sur Exploiter Hydranos). Cela arrête tous les moteurs, race et hoard, d'un coup. N'utilisez pas Retirer + supprimer les fichiers (Remove + delete files) : les données sont partagées avec qBittorrent. Pour la même raison, gardezshare_limit_actionàstoptant que vous n'êtes pas sûr de ne pas revenir en arrière. -
Remettez qBittorrent en service : réactivez son démarrage automatique, démarrez-le, puis démarrez ses torrents (laissez de côté ceux que vous aviez arrêtés volontairement). Ajoutez les fichiers
.torrentsauvegardés avec l'option de qBittorrent qui saute la vérification par hash (skip hash check). - Dans Sonarr, Radarr, autobrr et cross-seed, réactivez l'ancien client qBittorrent, désactivez ou supprimez celui d'Hydranos, et supprimez tout remote path mapping ajouté pour Hydranos à l'étape 5.
Si vous avez déplacé des données avec Déplacer vers un dossier… ou Changer de catégorie + déplacer les fichiers › dans Hydranos (ou si un outil a appelé setLocation), qBittorrent ne les trouvera pas à l'ancien chemin : remettez-les en place ou indiquez le nouvel emplacement dans qBittorrent.
Hydranos wiki — documents v4.4.1. · 🇬🇧 Home · 🇫🇷 Accueil · Changelog · Report an issue
Hydranos 4.4 · 🇬🇧
Start
Install
- Installation & First Run
- Docker
- Linux (bare metal)
- Windows
- Migrating from qBittorrent
- Upgrading from 3.x
Use
- Categories & Routing
- Adding Torrents & Existing Data
- RSS & Automatic Downloads
- Queue, Share & Speed Limits
- Engines: Race & Hoard
- Race Drain & Graduation
- Trackers & Announces
- Jobs, Bulk Actions & Moving Data
- Workflows
Integrate
Network & machines
- Deployment Topologies
- Networking: Ports & Port Forwarding
- VPN & Egress
- Managed WireGuard
- Nodes & Multiple Machines
Operate
- Operating Hydranos
- Monitoring & Logs
- Prometheus Metrics
- Security & Access
- Troubleshooting
- Known Limitations in 4.4
Reference
- Architecture
- Configuration overview
- Config: daemon, auth & global
- Config: engines & race drain
- Config: environment, CLI & signals
Hydranos 4.4 · 🇫🇷
Démarrer
Installer
- Installation & premier démarrage
- Docker
- Linux (bare metal)
- Windows
- Migrer depuis qBittorrent
- Mettre à jour depuis la 3.x
Utiliser
- Catégories & routage
- Ajouter des torrents & données existantes
- Flux RSS & téléchargements automatiques
- File, limites de partage & de débit
- Moteurs : race & hoard
- Drain race & graduation
- Trackers & annonces
- Jobs, actions groupées & déplacement
- Workflows
Intégrer
Réseau & machines
- Topologies de déploiement
- Réseau : ports & redirection
- VPN & sortie réseau
- WireGuard géré
- Nœuds & plusieurs machines
Exploiter
- Exploiter Hydranos
- Supervision & journaux
- Métriques Prometheus
- Sécurité & accès
- Dépannage
- Limites connues de la 4.4
Référence
- Architecture
- Configuration : vue d'ensemble
- Config : démon, auth & global
- Config : moteurs & drain race
- Config : environnement, CLI & signaux