Skip to content

History

Revisions

  • Document v4.4.1: fixed rows out of Known Limitations, watched folders on network shares, install tags

    @Kheopsian Kheopsian committed Oct 13, 2026
    06829f4
  • Links in tables: [Text](Page) instead of [[Text|Page]] GitHub reads the | of a wiki link inside a table cell as a column separator, so every link in a table rendered as raw [[Text text.

    @Kheopsian Kheopsian committed Oct 12, 2026
    0bca950
  • Wiki for 4.4: RSS, download order, queue and share limits, managed WireGuard, Prometheus metrics; Known Limitations re-checked against the code Every page re-verified against v4.4.0 (EN and FR). New pages: Managed-WireGuard, RSS-and-Automatic-Downloads, Queue-Share-and-Speed-Limits, Prometheus-Metrics. Known-Limitations: 79 rows fixed in 4.4 moved to a Fixed in 4.4 section.

    @Kheopsian Kheopsian committed Oct 10, 2026
    9abb91f
  • Categories: a category routes on its mode; placement and strategy are not applied The page described placement, strategies (all, least_torrents) and per-agent save paths as working. No 4.x release reads them: the engine comes from the category's mode (or an explicit engine at add), the path from the category (or an explicit path), and an add with neither is refused. Rewritten EN+FR to say so, with the old fields called out as accepted but ignored. Mentions of placement elsewhere follow.

    @Kheopsian Kheopsian committed Sep 30, 2026
    d9a0dfe
  • Gluetun: gluetun forwards several ports, Hydra reads one Tested on staging rather than argued about. With PORTS_COUNT=2 gluetun forwarded 35514 and 58951 on ProtonVPN, opened both inbound, and its API answered {"port":35514,"ports":[35514,58951]}. Hydra's gluetun client decodes the port field and ignores ports, so the second forwarded port has no consumer: a second engine has nothing to follow, and the port rotates each lease so it cannot be pinned in the TOML either. The previous commit concluded a monolith with PORTS_COUNT=2 would work. It does not, yet. Says both halves, since the provider limit and the client limit move independently, and a reader hitting this needs to know which one is in their way.

    @Kheopsian Kheopsian committed Aug 23, 2026
    b7de314
  • Deployment: ProtonVPN is no longer a single-port case, and repair four bullets Follows the gluetun correction: ProtonVPN sat in the list of providers that force a front-only plus one agent per tunnel. It belongs there only if PORTS_COUNT is left at 1. Says what the split still buys either way, an exit IP per engine. Also repairs four list items the punctuation pass flattened: an indented ' - item' matched the spaced-hyphen rule and became ', item', which markdown renders as a stray comma in the middle of a sentence.

    @Kheopsian Kheopsian committed Aug 23, 2026
    4b44b24
  • Gluetun: ProtonVPN forwards up to five ports, not one The page said gluetun exposes a single port for ProtonVPN and pointed at an open feature request. gluetun's maintainer replied that it is already implemented, and the code agrees: VPN_PORT_FORWARDING_PORTS_COUNT defaults to 1 and is accepted up to 5 for ProtonVPN, rejected above 1 for every other provider, and the ProtonVPN provider maps that many through NAT-PMP. This changes the advice, not just a fact. ProtonVPN was in the column that forces a front-only plus one agent per gluetun; it can now run a plain monolith with PORTS_COUNT=2. The split still buys a separate exit IP per engine, which is the reason to keep choosing it. Verified against gluetun master and its documented options.

    @Kheopsian Kheopsian committed Aug 23, 2026
    347fec1
  • Two double hyphens left inside a compose comment

    @Kheopsian Kheopsian committed Aug 23, 2026
    22b6b71
  • Punctuate like a human: commas, not hyphens Replacing the em dashes with a spaced hyphen swapped one tic for another. Nobody writes that. Prose gets a comma, an aside that interrupts a sentence gets parentheses, and a heading that names a thing then explains it gets a colon.

    @Kheopsian Kheopsian committed Aug 23, 2026
    2545609
  • Home: do not tell Windows users they need a server The intro said there is no desktop window and that Hydra runs on a server. There is a Windows build with a tray icon that runs perfectly well on the machine someone is sitting at, so the first sentence talked a chunk of its readers out of installing it. Says what is actually common to every install instead: the interface is a web page, which works the same on a NAS you never look at and on your own PC.

    @Kheopsian Kheopsian committed Aug 23, 2026
    d5c517a
  • Home: say what Hydra is before saying how it is built The landing page opened with control plane, SSE, shim and *arr. Someone arriving without that vocabulary learned nothing from the first paragraph, which is the one paragraph everybody reads. Says the plain thing first - a BitTorrent client that runs on a server, for a library too big for an ordinary one - then what it buys you, and only then the Go and Rust split. Drops the 196k+ figure here. An oddly precise number invites the question of where it comes from, which the landing page is the wrong place to answer; the README carries it with its measurements.

    @Kheopsian Kheopsian committed Aug 23, 2026
    c11828c
  • Style pass: no warning emoji, fewer verbal tics Same house style as the UI. The six warning emoji are gone: the bold lead-in already says it is a warning, so the icon was decoration. Trims the words that read as filler once you notice them - deliberately, on purpose, by construction, simply, note that, under the hood. Where the intent genuinely is the point the sentence keeps saying so, and the rest just state the fact. The language-switch flags stay: they are the navigation, not decoration.

    @Kheopsian Kheopsian committed Aug 23, 2026
    023b2b7
  • Drop the em dashes Same house style as the UI: no em dashes. 355 of them across the wiki, most added by this documentation pass. Replaced with a plain hyphen, which is what the surrounding prose and the commit log already use.

    @Kheopsian Kheopsian committed Aug 23, 2026
    4d6dc61
  • First run: no password is generated, the UI asks you to create one Found by running the install page against a clean container instead of reading it. Four pages told the reader to fish a generated admin password out of the logs. Nothing is generated: an empty password_hash means first run, and the UI asks a human to pick one -- so the grep the docs suggest returns nothing and a new user is stuck at the login screen with no way forward. Says what the setup form does instead, including the part that matters on a public host: it is accepted only from localhost or a private network, so a reachable node cannot have its account claimed by whoever finds it first. Docker, Windows and the Configuration Reference all repeated the claim; all four are corrected, in both languages.

    @Kheopsian Kheopsian committed Aug 23, 2026
    9345b75
  • Shim: document addTrackers, removeTrackers and reannounce The shim gained tracker editing and a forced reannounce, which is exactly the surface cross-seed drives to graft a second tracker onto data already held. Undocumented, an automation author has no reason to believe Hydra answers those calls at all. Also refreshes the version tag the French install page pins, which was still v3.4.0.

    @Kheopsian Kheopsian committed Aug 23, 2026
    00c6648
  • Catch up with v3.127: host-matched overrides, the bench section, the JSON that stayed main moved ten releases while this pass was being written, and one of them changes what the pages just said. Per-tracker overrides are no longer selected by substring over the whole URL: a key is a host, matched exactly or on a dot boundary, longest key first. The old behaviour is worth knowing about because it sent one tracker's passkey to another whose name merely contained it. Adds the [bench] section that came with the same batch, where the key that matters is race_snapshot_retention_days: race_snapshots writes a row per racing torrent per sample and shared the year-long window until it was given its own. Corrects a claim inherited from the old page: v3.50.0 removed the per-torrent JSON files, not every JSON file. categories.json and agents.json are still there, both written by the UI. Also refreshes the Docker tag the install page tells people to pin, which was v3.3.0.

    @Kheopsian Kheopsian committed Aug 23, 2026
    825a443
  • Deployment Topologies: health probe, env-configured agents, moving between nodes Three things a multi-node operator now has and the page did not mention: an agent-only node serves /health for a container probe, an agent can be described entirely by environment variables instead of a mounted config, and a payload can be transferred between nodes piece by piece rather than by copying files over a share. Also states that an engine is addressed by its own id and not by its role. Two nodes can both hold a hoard, so a torrent routed to one of them has to reach that one -- addressing by role sends it to whichever answers first, which looks like a torrent landing on the wrong machine at random.

    @Kheopsian Kheopsian committed Aug 23, 2026
    8f71cdb
  • Networking Modes: correct what SOCKS5 egress actually covers The page said outbound peer AND tracker traffic exits through socks5_outbound_*. Only peer dials do. Announces are issued by the Go side and never consult those keys, so a reader following this page built a relay that kept announcing from the host's own address -- silently, with no error and nothing in the logs. That is the exact leak announce_proxy was added to close, and the page was still describing the broken setup as correct. Adds the Network mode tab and why it exists: the four setups are mutually exclusive, picking one clears the others' keys, and the mode is deduced from the file rather than stored. Adds announce_ip_modes, where the failure mode is announcing over IPv6 only and being invisible to every v4-only peer, again without an error.

    @Kheopsian Kheopsian committed Aug 23, 2026
    e7a8028
  • Concepts and Architecture: SQLite as the primary source, and jobs Two claims had gone stale. Category changes were described as hoard-only; they work on either engine now, and that is the whole mechanism by which a race torrent is handed to the hoard. And persistence was described as a store sitting next to resume files, when resume data moved into the store in v3.100.0 -- along with the job queue, which the mental model did not mention at all. Adds jobs as a fourth concept, since work that outlives a request is now something an operator sees in the UI and has to reason about. Notes what actually dominates a cold boot at six figures, which is parsing the .torrent blobs rather than reading resume records -- the useful thing to know before optimising the wrong half. Also drops '100k+ torrents' for the measured 196k.

    @Kheopsian Kheopsian committed Aug 23, 2026
    ce0b719
  • Add an Operating Hydra page, and finish the flag list Nothing documented how to run the thing once it is installed: log rotation, the health probe, the shutdown budget, the profiler and the alert topic were spread across code comments and a compose file. The parts worth stating are the ones with a bad failure mode. Switching the log to stdout hands rotation to your supervisor, and Docker's default driver rotates nothing -- that is how the log reached 41 GB. The shutdown budget is per engine, so the supervisor's grace period has to clear twice it, or the resume flush is cut short and the next start re-checks complete pieces. Also fills three gaps found while writing it: --health-addr and --listen-port-hook were missing from the Configuration Reference, and --boot-from-store read as opt-in when it has been the default since v2.9.x.

    @Kheopsian Kheopsian committed Aug 23, 2026
    77359c7
  • Add an Editing trackers page Tracker editing shipped and was documented nowhere: the wiki mentioned trackers only as the key of a passkey table. Leads with the two facts an operator needs and cannot guess. Editing trackers cannot change an infohash, because the rewrite copies every value through as raw bytes and never re-encodes the info dict -- without saying so, nobody would risk the button on a torrent they are seeding. And URLs are taken literally, whitespace aside, because every other per-tracker table keys off the exact string: a trailing slash silently makes a different tracker, which is how a passkey override stops applying after an edit.

    @Kheopsian Kheopsian committed Aug 23, 2026
    f6086b5
  • Add a Jobs & moving data page Jobs shipped in v3.100.0 and the wiki never mentioned them: the word 'job' appeared only as an ordinary English noun. So the Jobs tab, the data move behind a category change, the 200 MB/s throughput cap and the piece-by-piece transfer between nodes were all undocumented. Written around the guarantee rather than the feature list, because that is what an operator needs to trust it: across filesystems the source is never removed before the destination is verified, so an interruption leaves the payload where the torrent is still seeding from it. Same for the parts that surprise -- a cross-filesystem move breaks hardlinks and asks first, and the answer is stored so a resumed job does not re-answer it for you.

    @Kheopsian Kheopsian committed Aug 22, 2026
    99587a9
  • Configuration Reference: document every key, not a third of them The page listed the sections and a handful of keys. Measured against main, 71 of the 105 TOML keys appeared nowhere in the wiki, along with most environment variables and four CLI flags -- so the pages that send readers here for the details were sending them nowhere. Every key now has its default and, where the behaviour is surprising, why it exists: that announce_proxy is deliberately separate from socks5_outbound_* and skips UDP trackers, that max_dials_per_sec is the knob that actually bounds a VPN tunnel, that an empty agent_token on both sides means no authentication, that one [[engine]] block makes [race]/[hoard] ignored entirely. Adds the sections that were missing outright (disk_slots, arr_cleanup, notify, announce_ip_modes, [[engine]]), the environment variables an agent node is configured with, and the flag list.

    @Kheopsian Kheopsian committed Aug 22, 2026
    04c5897
  • Fix the front/agent compose form and the nameless [[agent]] block The `command:` in both Deployment-Topologies pages repeated the binary name. The image entrypoint already runs `hydra --config <config> "$@"`, so that made `hydra` a positional argument: flag.Parse stopped there and dropped --agent-only / --front-only behind it. Following this page produced two monoliths -- the agent never opened its gRPC data-plane, the front came up with engines of its own -- with nothing in either log. `command:` now carries the extra flags only. The example front config also omitted `name` from its [[agent]] block, so the front dialed nothing at all. Added, with what it is for. Both are refused/reported as of v3.99.0; two Troubleshooting entries cover the upgrade, EN and FR.

    @Kheopsian Kheopsian committed Aug 20, 2026
    643af57
  • Bare metal: fix the password instructions, document installing without root

    @Kheopsian Kheopsian committed Aug 13, 2026
    c04b30e
  • Document the shutdown budget (stop_grace_period, HYDRA_STOP_TIMEOUT)

    @Kheopsian Kheopsian committed Aug 13, 2026
    57482d9
  • docs: rewrite the configuration reference — what lives in the TOML vs the store (EN+FR)

    @Kheopsian Kheopsian committed Aug 8, 2026
    55d3ef5
  • docs: importing from Transmission, and imported states (EN+FR)

    @Kheopsian Kheopsian committed Aug 8, 2026
    e9a0874
  • docs: qBit 5 stop/start verbs and the stopped vs queued states (EN+FR)

    @Kheopsian Kheopsian committed Aug 7, 2026
    d8e3cef
  • docs: PUID/PGID — running as a non-root user (EN+FR)

    @Kheopsian Kheopsian committed Aug 7, 2026
    86a902a