-
Notifications
You must be signed in to change notification settings - Fork 0
Downloads and Torrents
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.
- Browser downloads and the progress tray
- Per-platform packaging
- Download speed limits
- Download tokens (shareable links)
- Torrent seeding
- Add via torrent (admins)
- Enabling Transmission
- Choosing a method
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.
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.
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
0means unlimited. -
Per-user overrides - each user can be given their own cap. A user left at
0inherits 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 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.
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:
- You request a
.torrentfor a library file. - The server creates it and begins seeding the file through the bundled Transmission daemon.
- 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).
- 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.
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
.torrentURL, or - an uploaded
.torrentfile.
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.
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
.torrentand 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
.torrentfiles live underdata/config/torrentsand the daemon's own config underdata/config/transmission.
| 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
Getting Started
Configuration
Features
- Dashboard
- Library
- Collections
- Game Requests
- GOG Integration
- ROMs & Emulation
- Downloads & Torrents
- Users & Permissions
- Themes
Plugin Development
Reference