Skip to content

Downloads and Torrents

60plus edited this page Jul 11, 2026 · 8 revisions

Downloads & Sharing

GamesDownloader gives you several ways to get files off the server and to hand them to other people. Any file in your library can be streamed straight to the browser, bundled into a single per-platform archive, capped at a chosen speed, shared through a one-time link, or seeded as a torrent. This page covers all of those from the point of view of the Settings → Downloads panel and the download tray.

Most of these controls live under Settings → Downloads, split into four collapsible sections: Download Tokens, Speed Limits, Packaging, and Transmission.

Contents

Browser downloads and the progress tray

Every file in the Library can be downloaded natively through the browser. GamesDownloader streams the file rather than buffering it, so large games start immediately and the browser's own download manager tracks byte progress. Longer running server-side operations (such as building a packaged archive, see below) report live progress in the in-app download tray as well.

Per-platform packaging

A single GOG title can contain dozens of loose files (installer parts, patches, extras). Pulling all of those at once means dozens of simultaneous browser downloads. Packaging solves this by bundling a game's files into one archive per platform.

The automatic packaging configured below runs on GOG downloads (OS installers only; extras stay loose). The same bundling is also available on demand for any library game - GOG, custom, or an admin custom library - from the Package button on the game's detail page (admins), or the plugin and theme API (__GD__.library.package(gameId, opts), see Plugin Development). The button opens a dialog that lists the game's packable groups - each OS platform, plus Extras and DLC if present - as separate options; each selected group becomes its own download: {Title}.zip per platform, extras.zip, and dlc.zip. Extras and DLC are bundled even when their files are already individual .zip archives (they are glued together, not re-compressed). A group with only a single file is not offered (there is nothing to bundle). The dialog also offers Package everything into one archive (a single combined {Title}.zip) and Delete loose files after zipping. Only the title-first {game}/{windows|mac|linux|extras|dlc}/ layout is packaged.

Configure it under Settings → Downloads → Packaging:

Setting Effect
Bundle into one archive per platform (zip_per_platform) When enabled, a game's files are gathered into a single archive for each platform it targets (Windows / Linux / macOS), so pulling the game is one download instead of many.
Delete loose files after zipping (delete_originals) Only shown when packaging is on. Removes the individual loose files once they have been bundled, leaving just the archive on disk.
Also package extras and DLC (gog_zip_include_extras) Only shown when packaging is on. Extends GOG auto-packaging to also bundle the game's extras and DLC folders (each into its own archive, once the whole game has finished downloading), not just the OS installers.

Key behaviours:

  • No compression. The archive is a fast container copy, not a slow compressed archive, so packaging is quick and does not tax the CPU.
  • Recursive folders. Nested subdirectories inside a game's files are included.
  • Live progress. The packaging job reports its progress in the download tray while it runs.

The "delete loose files after zipping" option is destructive: it removes the original individual files after they are packed. Leave it off if you want to keep both the archive and the loose files.

Download speed limits

You can cap how fast files are served so a single download does not saturate your upstream link. Set this under Settings → Downloads → Speed Limits:

  • Global limit - a server-wide cap applied to all downloads. Leaving it at 0 means unlimited.
  • Per-user overrides - each user can be given their own cap. A user left at 0 inherits the global limit.

The UI works in MB/s for convenience; the values are stored internally in KB/s. Remember to press Save after changing limits.

These caps govern the HTTP file downloads served by GamesDownloader itself. Transmission has its own separate upload / download speed limits in the Transmission section (measured in KB/s).

Download tokens (shareable links)

Download tokens let you hand a single file to someone who does not have an account on your server. Each token is a shareable link of the form https://your-server/dl/<token>. Manage them under Settings → Downloads → Download Tokens.

Press New token, pick a file, and optionally set:

Field Meaning
File Any file in the library, grouped by game in the picker.
Expiry Hours until the link stops working. Leave blank for no expiry.
Max downloads How many times the link may be used before it is exhausted. Leave blank for unlimited; set 1 for a true one-time link.
Password Optional password the recipient must enter before the download starts.
Note A private label for your own reference (for example "for John").

After creation the full link is shown with a Copy button. The token table lists every token with its status, use count, expiry, and creation date, and lets you copy the link again or delete (revoke) a token. Status is one of:

Status Meaning
active Usable right now.
expired Past its expiry time.
exhausted Reached its max-download limit.
revoked Deleted by an admin.

Tokens are the main way library files leave the safety of your login wall, so treat the links as secrets. Prefer a short expiry, a low max-download count, and a password for anything sensitive. See Network & Security for how the server protects these endpoints.

Torrent seeding

Any library file can be handed out as a .torrent instead of a direct download. This offloads bandwidth to peers and is handy for large files.

How it works:

  1. You request a .torrent for a library file.
  2. The server creates it and begins seeding the file through the bundled Transmission daemon.
  3. Transmission keeps seeding until the file has been fully uploaded to at least one peer, that is a 1x ratio (one full copy sent out).
  4. Once that ratio is reached the seed expires. To share the file again you must generate a fresh .torrent.

This one-copy-then-expire model means the server does not seed indefinitely; it uploads exactly one full copy and then stops.

Torrent seeding requires Transmission to be enabled and the peer port reachable. See Enabling Transmission below.

Add via torrent (admins)

Torrents also work the other way round for administrators. An admin can add a game into the server library by supplying:

  • a magnet link,
  • a .torrent URL, or
  • an uploaded .torrent file.

The download runs through Transmission into a staging area (data/downloads/torrents). When it completes, the files are moved into the library and automatically registered as a custom game.

Where the finished files land depends on which library you were viewing when you started the torrent. From the built-in Games library they go to data/games/CUSTOM/. From one of your own custom libraries (one with its own folder) they go into that library's folder instead, and the game is added to that library rather than the default Games list - exactly like Add game and Upload file. All four built-in and bundled themes (Modern, Classic, Vapor, Neon Horizon) expose Add game, Upload file, upload from URL and add-via-torrent, and every one of them targets the current library the same way.

Enabling Transmission

The Transmission daemon ships inside the container and starts automatically, but seeding and add-via-torrent are off until you switch them on under Settings → Downloads → Transmission.

The Transmission section shows a live online / offline badge and, once enabled, exposes networking, speed-limit, and advanced options, including:

  • Peer port (default 51413), optional random port, and UPnP / NAT-PMP port forwarding.
  • A public hostname / announced IP for peers to reach you.
  • DHT, uTP, and Local Peer Discovery toggles.
  • Separate Transmission download / upload speed caps (KB/s) and an optional seed ratio limit.
  • Advanced options such as trashing the source .torrent and daemon log verbosity.

For peers on the wider internet to connect, expose the relevant ports in your firewall / Docker host:

Port Purpose Protocol
9091 Transmission WebUI TCP
51413 Peer connections TCP + UDP

A typical Docker Compose port mapping looks like:

    ports:
      - "9091:9091"        # Transmission WebUI
      - "51413:51413/tcp"  # peers (TCP)
      - "51413:51413/udp"  # peers (UDP)

If your server is LAN-only, you do not need to open these ports to the internet; seeding will still work between machines on your local network. On a Debian host, generated .torrent files live under data/config/torrents and the daemon's own config under data/config/transmission.

Choosing a method

Method Recipient needs an account One archive per game Offloads bandwidth to peers Best for
Browser download + Grabbing a file yourself
Packaging + + Multi-file games pulled in one go
Download token Sending one file to an outside person
Torrent seeding + Large files shared with several people

Next: Library · Network & Security

Clone this wiki locally