Upgrading from 3x FR - Kheopsian/Hydranos GitHub Wiki
S'applique à Hydranos 4.4.
Cette page est pour vous si vous faites tourner Hydranos 3.x (qui s'appelait alors Hydra) et voulez passer en 4.4 sans perdre de torrents, de temps de seed ni votre réputation auprès des trackers. À la fin, vous saurez ce qui a disparu, ce qui le remplace, quoi sauvegarder, ce que le premier démarrage de la 4.4 fait à vos fichiers, et pourquoi il n'y a pas de retour possible en dehors de votre sauvegarde.
C'est la seule page de ce wiki qui explique la 3.x. Les mots « agent », « front », « gRPC » et « processus Typhon » désignent des choses qui n'existent pas en 4.4 ; les autres pages ne les mentionnent que pour dire qu'elles ont disparu.
En bref : la 3.x, c'était deux programmes (un démon Go et un moteur Rust qui se parlaient par un socket local), éventuellement répartis sur plusieurs machines avec des « agents » gRPC. La 4.4, c'est un seul processus Rust, hydranos, qui contient l'interface web, les API et tous les moteurs. Plusieurs machines, ce sont désormais plusieurs instances complètes qui se parlent par leur API HTTP normale.
flowchart LR
subgraph v3["3.x (disparue)"]
direction TB
GO["hydra (démon Go, le front)"]
SOCK(["socket unix local, JSON-RPC"])
ENG["processus moteur Typhon"]
AG["hôte agent distant"]
GO --- SOCK --- ENG
GO -- "gRPC + jeton d'agent" --- AG
end
subgraph v4["4.4"]
direction TB
subgraph P["un seul processus hydranos"]
UI["interface web, API REST, shim qBittorrent, MCP"]
R["moteur race"]
H["moteur hoard"]
X["moteurs supplémentaires, facultatifs"]
end
N["autre instance Hydranos (nœud)"]
P -- "HTTP + la clé API du nœud" --> N
end
| 3.x | 4.4 |
|---|---|
| Démon Go (le « front ») + processus moteur Rust via un socket unix | Un seul processus Rust hydranos ; les moteurs tournent à l'intérieur. Voir Architecture. |
Agents gRPC, --agent-only, --front-only, --agent-addr, --agent-token, TLS des agents |
Nœuds : des instances Hydranos complètes ajoutées par URL + clé API, ou enrôlées avec un jeton à usage unique. Voir Nœuds & plusieurs machines. |
| Un processus moteur Typhon séparé par moteur | Moteurs intégrés au processus ([race], [hoard], plus les moteurs supplémentaires). |
Usurpation de client ([announce_clients], peer id / user agent par tracker) |
Supprimée. Hydranos annonce toujours sous sa propre identité. Une migration unique arrête les torrents concernés (voir plus bas). |
| WireGuard géré | Réimplémenté en 4.4, Linux uniquement : mode réseau WireGuard, managed by Hydranos, un tunnel par moteur à partir du .conf de votre fournisseur. Voir WireGuard géré. |
Sous-commande hydra set-listen-port
|
POST /api/race/listen-port, POST /api/hoard/listen-port ou POST /api/engines/:id/listen-port (rebind à chaud, enregistré dans la config). |
hydra hash-password / hydra reset-password
|
hydranos hash-password <password> et hydranos reset-password <password> [path/to/default.toml] (depuis la 4.4). Voir Sécurité & accès. |
hoard_pinned.json |
Déjà remplacé en 3.x par la colonne pinned du store ; le fichier n'est pas lu. |
Fichiers .torrent dans <data_dir>/uploads/
|
Les octets des .torrent sont dans le store (hydra.db). À chaque démarrage, uploads/ est consulté pour tout torrent dont la metainfo manque encore dans le store ; une fois que tout est dans le store, plus rien n'y est lu. |
Avant 3.94.0 uniquement : JSON de reprise par torrent dans <engine>/resume/
|
Un state.db SQLite par moteur (la 3.94.0 et les suivantes l'utilisent déjà) ; le JSON est importé une fois puis n'est plus écrit (sauf si TYPHON_RESUME_JSON=1 le garde en miroir, ou si TYPHON_STATE_DB=0 garde le moteur sur le JSON seul). |
| Trackers UDP : annoncés depuis la 3.56.0 ; cassés de la 4.0 à la 4.2 (confiés au client HTTP, en échec à chaque passage) | Rétablis en 4.3.0, activés par défaut (enable_udp_trackers = true par [race]/[hoard]). |
placement, agents, strategy, min_free_bytes de catégorie |
Conservés dans la catégorie enregistrée pour faire l'aller-retour, lus par rien, et cités dans un avertissement à chaque démarrage. Une catégorie ne route que sur son Mode. Voir Catégories & routage. |
Nom hydra : binaire, image ghcr.io/kheopsian/hydra, /opt/hydra, unité hydra, variables d'environnement HYDRA_*
|
Renommés en 4.1.0 : hydranos, ghcr.io/kheopsian/hydranos, /opt/hydranos, unité hydranos, HYDRANOS_*. Les anciens noms HYDRA_* ne sont pas lus. Les variables d'environnement TYPHON_* ont gardé leur nom. |
Deux binaires dans l'image Docker (hydra + hydra-engine) |
Un seul binaire de démon, hydranos, dans l'image et dans les archives (les archives y ajoutent l'outil de mise à jour hydranos-update) ; plus de hydranos-engine en 4.4. |
Certains noms de fichiers n'ont pas changé : la config s'appelle toujours default.toml, le store est toujours <data_dir>/hydra.db, et le fichier de statistiques est toujours <data_dir>/bench.db.
La 4.4 lit votre default.toml existant, votre hydra.db existant et vos dossiers de moteurs existants. Rien n'est à convertir à la main. Mais le premier démarrage réécrit certains d'entre eux, et cette réécriture est irréversible.
Il n'y a pas de retour arrière automatique. Dès que la 4.3.0 ou une version ultérieure a ouvert le store, elle reconstruit la table
torrentssur une nouvelle clé (une ligne par torrent et par moteur). Un binaire 3.x suppose une ligne par info hash et ne doit plus jamais être lancé sur ce fichier. Restaurer votre sauvegarde est le seul moyen de revenir à la 3.x.
Arrêtez d'abord la 3.x proprement (pour que ses données de reprise soient écrites), puis copiez :
| Quoi | Où il se trouve | Pourquoi |
|---|---|---|
default.toml |
votre dossier de configuration (Docker : /config) |
La 4.4 en retire les tables [announce_clients] et peut y écrire une api_key. |
hydra.db (et hydra.db-wal, hydra.db-shm s'ils existent) |
[daemon] data_dir |
Recléé et passé en WAL au premier démarrage. |
bench.db |
[daemon] data_dir |
Passé en WAL, réindexé, anciens échantillons par tracker regroupés. |
un dossier par moteur : race/, hoard/, et un par moteur supplémentaire |
à côté de default.toml (le dossier de configuration, pas data_dir) |
État de reprise : importé dans un nouveau state.db ; le JSON n'est plus mis à jour (mêmes exceptions TYPHON_* que plus haut). |
uploads/ |
[daemon] data_dir |
Lu une fois pour migrer tout .torrent absent du store. |
Dans l'image Docker, le dossier de configuration et data_dir sont tous deux /config : copier tout le volume /config, conteneur arrêté, couvre donc l'ensemble. Vos données de contenu ne sont pas touchées par la mise à jour.
Exemple (Docker, conteneur arrêté) :
docker stop -t 300 hydra
tar -C /srv/hydra -czf hydra-3x-backup-$(date +%F).tar.gz configVérifiez aussi, avant de lancer la 4.4 :
-
data_dirpointe vers votre store existant. Sinon, la 4.4 y crée unhydra.dbneuf et vide, et vous voyez une instance vide. -
Les dossiers des moteurs sont à côté de
default.toml. La 4.4 cherche<config dir>/<engine id>/(la même disposition que celle qu'écrit la 3.x). S'ils sont ailleurs, les torrents reviennent sans état de reprise et doivent être revérifiés.
flowchart TD
A["Arrêter la 3.x proprement"] --> B["Sauvegarder default.toml, hydra.db, bench.db,<br/>dossiers des moteurs, uploads/"]
B --> C["Changer d'image ou de binaire, renommer les variables HYDRA_,<br/>retirer les options propres à la 3.x"]
C --> D["Premier démarrage 4.4 : les migrations s'exécutent"]
D --> E{"Lignes de journal attendues ?<br/>Torrents listés ?"}
E -- "oui" --> F["Checklist, puis terminé"]
E -- "non" --> G["Arrêter la 4.4"]
G --> H["Restaurer la sauvegarde"]
H --> I["Relancer la 3.x"]
Vous pouvez passer directement à la 4.4 : à son premier démarrage, elle exécute toutes les migrations du store qu'elle connaît (elles sont cumulatives), aucune version 4.x intermédiaire n'est donc nécessaire. Ne visez pas les versions 4.1.0 à 4.1.4 (voir Versions à éviter).
- Changez l'image pour
ghcr.io/kheopsian/hydranos:v4.4.1(épinglez le tag). L'ancien cheminghcr.io/kheopsian/hydraest obsolète : ne l'utilisez pas pour la 4.x, pas même son taglatest. Il ne contient que des images publiées avant le renommage de la 4.1.0, et le nettoyage par rétention peut en avoir supprimé beaucoup : n'y épinglez un tag 3.x (pour un retour arrière) qu'après avoir vérifié qu'il existe encore ; la 4.1.0 et les suivantes ne sont que sousghcr.io/kheopsian/hydranos. - Renommez chaque variable
HYDRA_*enHYDRANOS_*. Par exemple,HYDRA_STOP_TIMEOUTdevientHYDRANOS_STOP_TIMEOUT. - Retirez tout
command:qui portait des options 3.x (--agent-only,--front-only,--agent-addr…). La 4.4 ne les honore pas : chaque option--agent-…ou--front-…est nommée sur stderr (hydranos: ignoring --agent-only: the agent/front split was removed in 4.x and Hydranos now runs as one process. Starting a normal instance. …, avec la commande d'enrôlement de nœud), les valeurs de--agent-addr,--agent-token,--agent-tls-cert,--agent-tls-keyet--front-addrsont sautées, et le processus démarre comme une instance complète avec ses propres moteurs race et hoard. Tout autre argument inconnu reçoithydranos: ignoring unknown argument "…"; starting anyway (see hydranos --help). - Retirez
HYDRANOS_ENGINE_IDetHYDRANOS_ENGINESde l'environnement. L'entrypoint les refuse : il affichehydranos: ignoring HYDRANOS_ENGINE_ID: the 3.x agent mode was removed in 4.x and Hydranos now runs as one process. Starting a normal instance on /config/default.toml. …(le dossier estHYDRANOS_CONFIG_DIR), vous invite à enrôler plutôt la machine comme nœud, et démarre sur cette config comme d'habitude. Retirer les variables fait taire le message. - Laissez assez de temps à l'arrêt.
HYDRANOS_STOP_TIMEOUTborne l'écriture de reprise (120par défaut ; aussi90s,2m,1m30s, voir Exploiter Hydranos) ; le compose de référence utilisestop_grace_period: 150s. Gardez le délai de grâce au-dessus du timeout plus environ 10 s. - Gardez les mêmes volumes. Les noms de conteneur et de service sont à votre choix ; garder
hydrafonctionne.
Dans un fichier compose 3.x, seules ces lignes changent :
image: ghcr.io/kheopsian/hydranos:v4.4.1 # avant : ghcr.io/kheopsian/hydra:<3.x tag>
stop_grace_period: 150s
# environment : chaque HYDRA_* renommée en HYDRANOS_* ; HYDRANOS_ENGINE_ID / HYDRANOS_ENGINES retirées
# command : aucune option 3.x (--agent-only, --front-only, --agent-addr...)Les ports et les volumes restent tels quels. Le fichier compose complet, avec chaque option expliquée, est sur Docker.
L'installeur bare metal de la 3.x (à partir de la 3.8.0) utilisait /opt/hydra, /etc/hydra, /var/lib/hydra, un utilisateur hydra et une unité hydra. Le install.sh de la 4.4 utilise /opt/hydranos, /etc/hydranos, /var/lib/hydranos, l'utilisateur hydranos et une unité hydranos. Il ne crée une nouvelle config que si /etc/hydranos/default.toml n'existe pas, donc mettez d'abord vos anciens fichiers en place :
sudo systemctl stop hydra
sudo systemctl disable hydra
# Sauvegardez d'abord (voir plus haut), puis déplacez la config + les dossiers des moteurs et le dossier de données
sudo mkdir -p /etc/hydranos /var/lib/hydranos
sudo cp -a /etc/hydra/. /etc/hydranos/
sudo cp -a /var/lib/hydra/. /var/lib/hydranos/
# Faire pointer data_dir vers le nouvel emplacement
sudo sed -i 's#^data_dir = .*#data_dir = "/var/lib/hydranos"#' /etc/hydranos/default.toml
# Créer le nouveau compte maintenant, pour que les fichiers lui appartiennent avant le démarrage du service
sudo useradd --system --home-dir /var/lib/hydranos --shell /usr/sbin/nologin hydranos
sudo chown -R hydranos:hydranos /etc/hydranos /var/lib/hydranos
# Décompressez l'archive 4.4.0, puis depuis son dossier :
sudo ./install.shinstall.sh réutilise le compte hydranos et la config existants, installe hydranos et hydranos-update dans /opt/hydranos, installe l'unité (ou, si /etc/systemd/system/hydranos.service existe déjà et diffère, garde la vôtre et pose celle fournie à côté sous le nom hydranos.service.new), puis active et démarre le service. Renommez en HYDRANOS_* toute variable HYDRA_* des unités drop-in. Les détails de l'unité sont sur Linux (bare metal).
- Arrêtez le démon 3.x.
- Sauvegardez son
default.toml, son dossier de données et ses dossiers de moteurs. - Décompressez
hydranos-v4.4.0-windows-amd64.zipet lancezhydranos.exeavec un chemin de config explicite, pour qu'il utilise vos fichiers existants au lieu d'en créer de nouveaux :hydranos.exe --config C:\Hydranos\default.toml - Arrêtez-le avec le menu de l'icône de notification Quit Hydranos, qui écrit les données de reprise ; attendez que
hydranos.exeait disparu du Gestionnaire des tâches.
Sans --config, la 4.4 sous Windows utilise le default.toml à côté de hydranos.exe ou, s'il n'y en a pas, le \config\default.toml laissé par une installation 4.3. L'avis qu'elle affiche (hydranos: using … (the 4.3 location); move it beside hydranos.exe or pass --config) est écrit avant qu'une console soit attachée : il n'apparaît donc pas dans une fenêtre de console. Voir Windows.
Dans l'ordre, le premier démarrage fait ce qui suit. Les lignes de journal citées sont celles à chercher (dans hydranos.log à côté de la config, et dans tous les cas dans docker logs ou journalctl).
-
Clé API. Si
[daemon] api_keyest vide, une nouvelle clé (48 caractères hexadécimaux) est générée et écrite dans la config, avec la ligne de journalno API key was configured; a new one has been generated and written to the config. Si c'est encore la valeur d'exemple publiéechange-me-in-production, elle est remplacée de la même façon et la ligne estthe configured API key was the published placeholder and has been replaced by a generated one -- clients configured with the old value must be updated …. Tout client qui utilisait l'ancienne valeur doit recevoir la nouvelle clé. -
Clés 3.x nommées. Chaque clé que Hydranos sait morte reçoit un avertissement,
config: <where> is ignored: <why>. Instead: <what to do>., à ce démarrage et à chacun des suivants :[daemon] agent_token; dans les blocsagent/engine,addr(s'il n'est pas vide),token,tls_caet la sous-tableengine;listen_interfaces,file_pool_size,custom_chokingetdisk_slotsdans[race],[hoard]ou lasessiond'un bloc ; les sections[bench],[metrics],[peer_intel],[arr_cleanup],[notify]; et[race_drain] min_age_minutes. Par exemple, pour un bloc agent nommébox2(la ligne nomme le bloc tel qu'il est écrit dans le TOML, type et nom) :config: [[agent]] "box2" addr is ignored: a 3.x remote agent: 4.x has no agent channel, so this block starts nothing here and reaches nothing there. Instead: enrol that machine as a node: …Une fois le store ouvert, les champs de catégorie 3.x reçoivent une ligne par champ, qui nomme les catégories :
config: category field `strategy` (in films, series) is ignored: …. Ce sont des avertissements, jamais des erreurs ; la liste complète est sous Restes plus bas. Une faute de frappe dans un nom de clé est toujours acceptée sans un mot. -
Nouvelle clé de table, nouvelles tables, WAL. Quand le premier moteur ouvre le store, la table
torrentsest reconstruite sur(info_hash, session)en une seule transaction :re-keying the torrents table on (info_hash, session); this rewrites it and ends the 3.x rollback. De nouvelles tables (nœuds, workflows, magnets, bans d'IP…) sont ajoutées, et le store passe en journalisation WAL, sauf si son dossier est sur un système de fichiers réseau. -
Metainfo. Pour chaque moteur, tout torrent connu de son
state.dbdont le.torrentmanque dans le store est importé depuis<data_dir>/uploads/<info_hash>.torrent(seulement les fichiers nommés d'après leur hash, et seulement si le hash correspond) :metainfo migrated out of uploads/ and into the store. Sur une installation dont l'état de reprise était encore en JSON (avant 3.94.0),state.dbest vide à ce moment-là, donc cet import a lieu au deuxième démarrage. -
État de reprise (avant 3.94.0 uniquement). Par moteur, l'ancien JSON de
resume/est importé une fois dans unstate.dbvide :[statedb] first start on SQLite state: N records carried over. -
bench.db. Ouvert après les moteurs, et passé en WAL avec la même exception pour les systèmes de fichiers réseau. -
Torrents arrêtés. Les torrents que vous aviez arrêtés en 3.x restent arrêtés.
-
Suppression de l'usurpation de client. Seuls les torrents dont le premier tracker correspondait à une surcharge
[announce_clients]sont arrêtés, une seule fois ; un avertissement liste les hôtes et le nombre (client spoofing has been removed from Hydranos. These torrents were announcing as another client …). Les tables sont ensuite retirées dedefault.toml. Quand vous redémarrez ces torrents, ils annoncent avec le peer id propre à Hydranos : vérifiez d'abord que chaque tracker autorise Hydranos. Rien d'autre n'est arrêté. -
Travail en arrière-plan. Un index de contenu est construit dans un thread d'arrière-plan, et
bench.dbreçoit un index et regroupe les échantillons par tracker de plus de 48 h en lignes de 5 minutes. L'interface reste utilisable pendant ce temps.
Si le store ne peut pas être ouvert, ou s'il lui manque une colonne dont la 4.4 a besoin, le démon ne devine pas : il journalise the store could not be opened: <why> -- starting in rescue mode et démarre en mode de secours à son adresse habituelle (api_host, api_port). L'interface web n'est pas servie : / répond par le texte d'une ligne hydra: the store could not be opened (voir Mode de secours sur Exploiter Hydranos). Arrêtez-le, restaurez votre sauvegarde, et signalez le message sur le suivi des problèmes.
Votre mot de passe admin continue de fonctionner : le format du hash [auth] n'a pas changé. Si [auth] password_hash est vide, l'interface affiche l'écran de premier démarrage Bienvenue dans Hydranos (Welcome to Hydranos) avec Créer le compte (Create account). Cet écran ne répond qu'à un appelant en boucle locale ou sur un réseau privé ; d'ailleurs, définissez le mot de passe sur l'hôte avec hydranos reset-password (voir Sécurité & accès).
-
hydranos --versionaffiche la version que vous avez installée (hydranos 4.x.y). - Le journal montre les lignes ci-dessus, et l'interface web s'ouvre normalement (le mode de secours ne sert aucune interface).
- Chaque ligne
config: … is ignoredlue, et chaque clé nommée retirée dedefault.toml(votre sauvegarde garde le fichier 3.x ; les champs de catégorie restent dans le store et continuent d'être nommés). - Les onglets Race et Hoard listent vos torrents ; le nombre correspond à celui de la 3.x.
- Torrents arrêtés par la migration de l'usurpation passés en revue, puis démarrés avec Démarrer (Start) là où le tracker l'autorise.
- Sonarr, Radarr, autobrr et les scripts utilisent la clé API actuelle (
[daemon] api_key). - Anciens hôtes agents 3.x rajoutés comme nœuds : onglet Nodes, + Declare an existing one (URL + clé API de cette instance) ou + Enrol a machine. Voir Nœuds & plusieurs machines.
- Les trackers listés avec des URL
udp://sont désormais annoncés ; tant que les annonces d'un moteur passent par un proxy SOCKS5 (announce_proxy, le mode SOCKS5 ouTYPHON_ANNOUNCE_PROXY), ses trackers UDP ne sont pas annoncés (voir VPN & sortie réseau). - Catégories qui dépendaient d'une stratégie de routage ou de chemins par agent : revérifiez leur Mode et leur chemin de sauvegarde.
- Le délai d'arrêt de votre superviseur (
stop_grace_period,TimeoutStopSec) est suffisant. - Gardez la sauvegarde 3.x jusqu'à être sûr de vous ; c'est votre seul moyen de revenir en arrière.
La 4.4 ne convertit pas un agent 3.x en nœud. Chaque machine devient sa propre instance avec son propre store, et l'instance où vous la déclarez (le contrôleur) voit ses torrents dans la liste fusionnée. Il n'y a pas de transfert automatique des torrents qu'un agent 3.x faisait tourner vers une instance 4.4 sur cette machine : prévoyez de les y ajouter à nouveau, en pointant vers les données existantes (voir Ajouter des torrents & données existantes). Quel déploiement convient à quel besoin est expliqué sur Topologies de déploiement.
Plusieurs tunnels VPN sur une même machine n'ont plus besoin d'agents : déclarez un moteur supplémentaire par tunnel (+ Add an engine dans l'onglet Nodes) et, sous Linux, laissez Hydranos monter chaque tunnel (WireGuard géré) ou épinglez chaque moteur à une interface que vous gérez. Lisez ce qu'une interface épingle sur VPN & sortie réseau.
Ces éléments survivent dans d'anciens fichiers de configuration, scripts et fichiers compose. La 4.4 nomme la plupart d'entre eux au lieu de les ignorer en silence. Ne comptez sur aucun d'eux.
Accepté mais ignoré en 4.4 : les réglages d'agent distant de la 3.x — blocs
agent(tableau de tables TOML) avec unaddr(et leurstoken,tls_ca), et[daemon] agent_token— sont lus puis jamais utilisés, et chacun est nommé dans un avertissement au démarrage ; aucune connexion n'est établie — déclarez plutôt la machine distante comme nœud.
Un bloc agent ou engine sans addr et avec un role démarre toujours un moteur supplémentaire local : agent est un ancien nom du même bloc (voir Config : moteurs & drain race). Avec un addr, comme dans cet exemple 3.x, il est ignoré :
# agent distant 3.x : ignoré en 4.4, ne démarre rien, nommé au démarrage
[[agent]]
name = "box2"
addr = "192.0.2.10:7070"L'API d'agents distants de la 3.x a disparu : toute méthode sous /api/agents et /api/jobs/move-remote répond 410 Gone (derrière la clé API, donc 401 sans elle), avec les routes à utiliser à la place :
{"error":"the 3.x agent API was removed in 4.4: engines on this machine are /api/engines, other machines are /api/nodes","see":["/api/engines","/api/nodes"]}{"error":"move-remote was removed in 4.4: use POST /api/selection/handoff with a node from /api/nodes and one of its engines","see":["/api/selection/handoff","/api/nodes","/api/engines"]}| Reste | Ce qui se passe en 4.4 |
|---|---|
Bloc agent avec addr, token, tls_ca, ou une sous-table engine
|
Ignoré, ne démarre rien ; un avertissement au démarrage par clé, avec la commande d'enrôlement de nœud. |
[daemon] agent_token |
N'est plus un réglage ; nommé au démarrage ; supprimé par Revenir aux valeurs par défaut (Reset to defaults). |
listen_interfaces, file_pool_size, [race.custom_choking], [hoard.disk_slots]
|
Non lus ; nommés au démarrage avec la clé à utiliser à la place (bind_interface, aio_threads, choking + max_uploads_per_torrent, rien). |
[bench], [metrics], [peer_intel], [arr_cleanup], [notify], [race_drain] min_age_minutes
|
Non lus ; nommés au démarrage ; masqués dans Paramètres avancés (Advanced settings). |
Toute méthode sous /api/agents (GET, POST, PUT, DELETE, …/test, …/action, …/restore) |
410, qui nomme /api/engines et /api/nodes. |
/api/jobs/move-remote |
410, qui nomme POST /api/selection/handoff. |
placement, agents, strategy, min_free_bytes de catégorie |
Enregistrés (pour qu'un retour à la 3.x les retrouve), jamais lus ; un avertissement au démarrage par champ, qui nomme les catégories. |
HYDRANOS_ENGINE_ID, HYDRANOS_ENGINES
|
Refusées par l'entrypoint Docker avec un message ; le conteneur démarre sur sa propre config (voir l'étape 4 de Docker). |
Variables d'environnement HYDRA_*
|
Non lues. |
--agent-only, --front-only, --agent-addr, --agent-token, toute option --agent-…/--front-…
|
Nommées sur stderr ; le processus démarre comme une instance complète. |
hydranos set-listen-port |
N'existe pas : ignoring unknown argument …; starting anyway, et le démon démarre. Utilisez les routes listen-port. |
hydranos-engine, hydranos-engine.exe, HYDRANOS_ENGINE_BIN
|
Ne sont plus dans les archives, l'image ni l'unité fournie. Un ancien hydranos-engine resté dans /opt/hydranos n'est pas utilisé ; supprimez-le. |
Image ghcr.io/kheopsian/hydra
|
Obsolète ; utilisez ghcr.io/kheopsian/hydranos. |
hydranos reset-password et hydranos hash-password existent de nouveau en 4.4 (voir Sécurité & accès).
Les documents de conception 3.x (docs/architecture-agent-front.md, docs/agentification-status.md, docs/hoard_announce_scheduler.md) ne sont plus dans le dépôt, et packaging/README-windows.md et l'unité fournie décrivent la 4.x. Deux commentaires de configs/default.toml sont périmés : « every agent it drives » (les tables d'annonce), et generate with: hydra hash-password (la commande est hydranos hash-password). Les clés 4.4 qui ne font rien sont listées sur Configuration : vue d'ensemble ; toutes les lacunes connues sont sur Limites connues de la 4.4.
- 4.1.0 à 4.1.4 ont été retirées : leur image s'arrête immédiatement (le binaire à l'intérieur était mal nommé) et les 4.1.0 à 4.1.3 n'ont publié aucune archive. Elles ont disparu du registre et des releases. La première 4.1 fonctionnelle est la 4.1.5.
- 4.0.0 et 4.0.1 n'ont publié aucune archive de binaires.
Les numéros de version se lisent major.release.patch et ne suivent pas le versionnage sémantique : le majeur n'augmente que lorsque la mise à jour demande plus que le remplacement du binaire. Voir le CHANGELOG.
Depuis n'importe quelle 4.x fonctionnelle, passer en 4.4 revient à remplacer le binaire ou l'image sur la même config et le même store. Depuis la 4.0.x, le renommage de la 4.1.0 s'applique (chemin de l'image, variables d'environnement HYDRANOS_*, /opt/hydranos, nom de l'unité). Depuis la 4.2 ou plus ancienne, le premier démarrage passe le store et bench.db en WAL, construit un index d'historique des trackers sur bench.db et ajoute de nouvelles tables (la 4.3.0 le faisait ; la 4.4 exécute toutes les migrations qu'elle connaît). Les installations bare metal et Windows peuvent utiliser hydranos-update ; la procédure (et ses limites) est sur Exploiter Hydranos.
Changez le tag de l'image (ghcr.io/kheopsian/hydranos:v4.4.1) ou les binaires, puis démarrez. Le store ne fait que gagner des tables (rss_*, share_limits) et deux colonnes magnets ; votre config n'est pas réécrite. Une 4.3 sous Windows doit être quittée depuis la zone de notification avant que hydranos-update la remplace (elle ne répond pas à l'événement d'arrêt de la 4.4). Ce qui change pour un fichier écrit par la 4.3 :
-
Test de ligne toutes les heures. Un
default.tomlcréé par la 4.3.0 contient[vpn_speedtest] enabled = true,iperf3_server = "ping.online.net"etinterval_secs = 3600. La 4.3 les ignorait ; la 4.4 les lit, et lance donc un test iperf3 (envoi puis réception, 10 s chacun) contre ce serveur public toutes les heures. Pour ne garder que le Lancer maintenant (Run now) manuel, mettezinterval_secs = 0à la main dans le fichier (les Paramètres avancés masquent cette clé en 4.4), ouenabled = falsepour désactiver complètement le test. Toute valeur inférieure à 300 compte pour 300. -
Clés mortes nommées. Les clés qui ne font rien (
listen_interfaces,[race.custom_choking],[bench],[metrics],[race_drain] min_age_minutes, blocs agent 3.x…) reçoivent désormais un avertissementconfig: … is ignored: …. Instead: ….à chaque démarrage (liste sous Restes plus haut). Rien ne casse ; supprimez-les pour alléger le journal. -
Valeurs par défaut des clés absentes. Une section
[race]/[hoard]sansenable_dht,enable_pexouenable_webseedles a désormais activés (4.3 : désactivés) ; le modèle 4.3 n'a pas d'enable_webseed, les webseeds commencent donc à être utilisés. Unlisten_portabsent vaut 16171 (race) ou 16172 (hoard), ou le suivant qu'aucun autre moteur n'utilise, au lieu d'un port aléatoire. Lespeer_timeout = 30(race) et20(hoard) du modèle sont désormais lus et relevés au minimum de 120 s. -
bind_interfacehors Linux est refusé. Sous Windows et macOS, un moteur dont le fichier contient encorebind_interfacereste hors réseau (pas d'écoute, pas de connexion sortante, pas d'annonce), avec un avertissement au démarragebind_interface is Linux-only: … -- this engine will not announce, accept or dial any peer until the key is removed. Retirez la clé et faites tourner le client VPN au niveau du système. -
Force Start sous une file.
torrents/setForceStart(« Force Start » de Sonarr/Radarr) était un 404 en 4.3 ; en 4.4.0, c'était un démarrage ordinaire, ou un 409 quand le moteur du torrent a un plafond (avec le modèle, chaque torrent hoard). Depuis la 4.4.1, il force le torrent : démarré, et passé devant la file (File d'attente, limites de partage et de débit). -
Les limites de partage attendent le Minimum seed du tracker. Les limites de ratio et de temps de seed (les vôtres, ou celles qu'envoient Sonarr/Radarr) agissent désormais, mais jamais sur un torrent dont le tracker n'a pas de Minimum seed déclaré dans l'onglet Trackers : il est retenu et journalisé une fois. Déclarez les heures, 0 compris (File d'attente, limites de partage et de débit).
active_seedsetactive_limitn'agissent qu'avecqueueing = true. -
Les boutons de redémarrage sortent avec le code 75. Appliquer et redémarrer (Apply & restart) et les autres commandes de redémarrage font désormais l'arrêt propre complet, puis sortent avec le code 75 (4.3 : code 0, sans l'écriture de reprise). L'unité systemd fournie (
Restart=on-failure) et les politiques de redémarrage de Docker relancent Hydranos ; une supervision qui alerte sur un code de sortie non nul le verra (Exploiter Hydranos).
La liste complète est dans le CHANGELOG.