Transmission BitTorrent Client
Running a BitTorrent client directly on a desktop has a couple of drawbacks. Torrents require the client to stay running for hours or days to seed properly. A desktop that gets switched off or suspended stops seeding. Storage on a desktop is also finite and less organised than a dedicated NAS.
The better architecture is a Transmission daemon running permanently on the NAS, with the desktop connecting to it via the remote management interface when you want to add a torrent, check progress, or manage downloads. Downloads land directly on the NAS storage. Seeding continues regardless of whether the desktop is on. The desktop is just a control interface.
transmission-remote-gtk is a GTK client for exactly this purpose. It connects to a remote Transmission daemon over HTTP RPC and provides the same management interface you would expect from a local client.
Prerequisites
The Transmission daemon must be running and accessible on the NAS or server before the desktop client is useful. The NAS section of this series covers the server-side setup. At minimum you need:
- Transmission daemon installed and running on the NAS
- The RPC interface enabled in the Transmission daemon configuration
- An RPC username and password configured
- The RPC port accessible from the desktop (either via the local network or VPN)
The default RPC port is 9091. Verify it is reachable:
curl http://nas.yourdomain.net:9091/transmission/rpc
A response of 409 Conflict with an X-Transmission-Session-Id header confirms the RPC interface is running. A connection refused error means the daemon is not running or the port is not reachable.
Installation
sudo apt install transmission-remote-gtk
Verify the installation:
transmission-remote-gtk --version
Connecting to the remote daemon
Open transmission-remote-gtk. On first launch it will show an empty interface and prompt for connection details.
Go to Edit > Preferences > Connection.
Configure:
| Setting | Value |
|---|---|
| Host | nas.yourdomain.net |
| Port | 9091 |
| Use SSL | Enable if the NAS RPC interface is behind HTTPS |
| Username | The RPC username configured on the daemon |
| Password | The RPC password configured on the daemon |
Click Connect. The torrent list should populate with any active or recently completed torrents.
Using HTTPS for the RPC connection
By default the Transmission RPC interface uses plain HTTP, which is acceptable on the local network since credentials travel only within your own infrastructure. For connections over the WireGuard VPN or from outside the local network, wrapping the RPC interface in HTTPS via a reverse proxy is worth considering.
If your NAS runs nginx as a reverse proxy (covered in the NAS section), proxy the Transmission RPC endpoint:
location /transmission/ {
proxy_pass http://127.0.0.1:9091/transmission/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Required for Transmission's session ID handling
proxy_pass_header X-Transmission-Session-Id;
}
With the proxy in place, update the connection settings in transmission-remote-gtk to use HTTPS on port 443 with /transmission/ as the path.
Adding torrents
There are several ways to add a torrent to the remote daemon from the desktop:
From the GUI: Click the Add button (plus icon) and select a .torrent file or paste a magnet link.
From the command line: The transmission-remote command line tool works alongside the GTK client:
transmission-remote nas.yourdomain.net:9091 \
--auth username:password \
--add /path/to/file.torrent
Or with a magnet link:
transmission-remote nas.yourdomain.net:9091 \
--auth username:password \
--add "magnet:?xt=urn:btih:..."
Via the browser: Brave can be configured to open magnet links and .torrent files with transmission-remote-gtk. Register the handler:
xdg-mime default transmission-remote-gtk.desktop x-scheme-handler/magnet
xdg-mime default transmission-remote-gtk.desktop application/x-bittorrent
Clicking a magnet link in Brave will open transmission-remote-gtk and add the torrent to the remote daemon automatically.
Download locations
Downloads land on the NAS storage at whatever path the Transmission daemon is configured to use. The NAS section covers setting the download directory to an appropriate location on the NAS volume.
From the desktop, the download directory is accessible via:
- Samba/SMB: the NAS share mounted on the desktop (covered in the NAS section)
- SFTP:
sftp://nas.yourdomain.net/volume1/downloads/accessible from Dolphin
If the NAS share is mounted locally at /media/$USER/NAS/Downloads/, completed downloads are accessible immediately in Dolphin without any additional steps.
Managing torrents
transmission-remote-gtk provides the full management interface:
- Pause and resume individual torrents or all at once
- Set speed limits per torrent or globally (useful when working on the network and not wanting torrents to saturate the connection)
- View peer information including connections, upload and download speeds per peer
- Configure per-torrent settings: seed ratio limits, download priority, bandwidth allocation
- Remove torrents with or without deleting the downloaded files
The interface is functionally equivalent to managing a local Transmission client.
Scheduling and speed limits
Transmission’s daemon supports scheduled speed limits that reduce bandwidth during peak hours. Configure these in the daemon’s settings on the NAS rather than in the desktop client. The desktop client reflects whatever limits the daemon is currently operating under.
A useful approach: set a generous default speed limit and a more conservative scheduled limit during working hours, so downloads do not interfere with video calls or other bandwidth-sensitive work.
Checking daemon status
To verify the daemon is healthy from the command line without opening the GUI:
transmission-remote nas.yourdomain.net:9091 \
--auth username:password \
--list
This lists all torrents and their status. Useful for a quick check from a terminal or from a script.
The Transmission RPC password is stored in plaintext in the daemon’s
settings.jsonon the NAS. Store a copy in KeePassXC and ensuresettings.jsonhas appropriate permissions on the NAS. The connection between the desktop and the NAS travels over the local network or the WireGuard VPN, neither of which is a meaningful risk in this setup, but using HTTPS for the RPC connection is still worth doing if the infrastructure supports it.