2 Transmission
Drew edited this page 2026-05-22 18:55:45 -04:00

Transmission — torrent.butterbian.org

Archived 2026-05-22transmission-daemon has been removed from the host. ISO distribution moved to Cloudflare R2 at get.butterbian.org (uploads happen from a different machine; the discourse box no longer hosts torrents). The DNS record for torrent.butterbian.org and the matching Cloudflare ingress are gone. Content below is kept for reference in case Transmission is ever brought back.

BitTorrent daemon + web UI. Native Debian package (transmission-daemon), not a container.

Ports

Port Bind Purpose
9091 0.0.0.0 Web UI / RPC (this is what Cloudflare Tunnel hits)
51413 0.0.0.0 Peer port (tcp + udp)

Public ingress

/etc/cloudflared/config.yml:

- hostname: torrent.butterbian.org
  service: http://localhost:9091

/etc/transmission-daemon/settings.json — live values

Sanitised excerpt of what's actually set:

{
  "rpc-enabled": true,
  "rpc-port": 9091,
  "rpc-bind-address": "0.0.0.0",
  "rpc-url": "/transmission/",
  "rpc-authentication-required": true,
  "rpc-username": "drew",
  "rpc-password": "<REDACTED>",         // gets hashed on next clean shutdown
  "rpc-whitelist-enabled": false,        // any IP may hit RPC (gated by Cloudflare instead)
  "rpc-host-whitelist-enabled": false,   // any Host: header accepted

  "download-dir":   "/srv/isos",
  "incomplete-dir": "/srv/isos",
  "incomplete-dir-enabled": false,

  "peer-port": 51413,
  "peer-port-random-on-start": false,
  "port-forwarding-enabled": false,      // upstream router doesn't forward — leave off

  "encryption": 1,                       // prefer encrypted, allow unencrypted
  "dht-enabled": true,
  "pex-enabled": true,
  "lpd-enabled": true,
  "utp-enabled": true,

  "peer-limit-global": 200,
  "peer-limit-per-torrent": 50,
  "download-queue-enabled": true,
  "download-queue-size": 5,

  "anti-brute-force-enabled": false,     // bad-password lockout off
  "anti-brute-force-threshold": 100,

  "umask": "022"
}

Keys to know:

  • rpc-username / rpc-password — web UI auth. Password is stored in cleartext until the daemon stops cleanly; on shutdown it's replaced with a {salted-hash}. Edit while stopped.
  • rpc-whitelist-enabled: false — Transmission accepts RPC from any IP. Access is gated by Cloudflare in front (and by the listening port not being router-forwarded).
  • rpc-host-whitelist-enabled: false — required because Cloudflare forwards the Host: torrent.butterbian.org header, which wouldn't match 127.0.0.1 if the whitelist were on. If you ever turn it on, add torrent.butterbian.org.
  • download-dir = /srv/isos — finished torrents land here. Same dir as incomplete-dir since incomplete-dir-enabled is false (single-stage).
  • port-forwarding-enabled: false — Transmission won't try UPnP. The router doesn't forward 51413 inbound, so peers connect outbound-only via DHT/PEX. Speeds will be slower than with a forwarded port — fine for the way I use it.
  • anti-brute-force-enabled: false — Transmission's built-in lockout after N bad passwords is off.

Editing the config

Always edit while stopped — the daemon overwrites the file on shutdown:

sudo systemctl stop transmission-daemon
sudo $EDITOR /etc/transmission-daemon/settings.json
sudo systemctl start transmission-daemon

Operating

sudo systemctl status transmission-daemon
sudo systemctl restart transmission-daemon
sudo journalctl -u transmission-daemon -f

# CLI control via the same RPC the web UI uses
transmission-remote -n drew:<password> -l         # list torrents
transmission-remote -n drew:<password> -a <magnet-or-torrent-url>

Storage location

/srv/isos is on the host root filesystem. If torrents start filling the disk, either mount a separate volume there, or change download-dir in the config (stop daemon, edit, start, and move existing files yourself — Transmission won't follow them).