Transmission Daemon


Introduction

The work involved in getting transmission-daemon to work is ridiculous.  Here's how I got mine to work the way I wanted:

Config Files

The primary configuration file is /etc/transmission-daemon/settings.json.

This file should be edited by hand.  While the Web interface is activated, it doesn't include all options.

My settings.json reads:

settings.json

{
    "alt-speed-down": 50, 
    "alt-speed-enabled": true, 
    "alt-speed-time-begin": 1320, 
    "alt-speed-time-day": 62, 
    "alt-speed-time-enabled": true, 
    "alt-speed-time-end": 150, 
    "alt-speed-up": 50, 
    "bind-address-ipv4": "0.0.0.0", 
    "bind-address-ipv6": "::", 
    "blocklist-date": **REDACTED**, 
    "blocklist-enabled": true, 
    "blocklist-updates-enabled": true, 
    "blocklist-url": "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz", 
    "cache-size-mb": 4, 
    "compact-view": false, 
    "dht-enabled": true, 
    "download-dir": "**REDACTED**", 
    "download-limit": 100, 
    "download-limit-enabled": 0, 
    "download-queue-enabled": true, 
    "download-queue-size": 5, 
    "encryption": 1, 
    "idle-seeding-limit": 30, 
    "idle-seeding-limit-enabled": true, 
    "incomplete-dir": "**REDACTED**", 
    "incomplete-dir-enabled": true, 
    "inhibit-desktop-hibernation": false, 
    "lpd-enabled": true, 
    "max-peers-global": 200, 
    "message-level": 2, 
    "peer-congestion-algorithm": "", 
    "peer-limit-global": 240, 
    "peer-limit-per-torrent": 60, 
    "peer-port": **REDACTED**, 
    "peer-port-random-high": 65535, 
    "peer-port-random-low": 49152, 
    "peer-port-random-on-start": false, 
    "peer-socket-tos": "default", 
    "pex-enabled": true, 
    "port-forwarding-enabled": true, 
    "preallocation": 1, 
    "prefetch-enabled": 1, 
    "queue-stalled-enabled": true, 
    "queue-stalled-minutes": 30, 
    "ratio-limit": 2, 
    "ratio-limit-enabled": true, 
    "rename-partial-files": true, 
    "rpc-authentication-required": true, 
    "rpc-bind-address": "0.0.0.0", 
    "rpc-enabled": true, 
    "rpc-password": "**REDACTED**", 
    "rpc-port": 9091, 
    "rpc-url": "/transmission/", 
    "rpc-username": "**REDACTED**", 
    "rpc-whitelist": "127.0.0.1,**REDACTED**", 
    "rpc-whitelist-enabled": true, 
    "scrape-paused-torrents-enabled": true, 
    "script-torrent-done-enabled": false, 
    "script-torrent-done-filename": "", 
    "seed-queue-enabled": false, 
    "seed-queue-size": 10, 
    "show-backup-trackers": true, 
    "show-extra-peer-details": true, 
    "sort-mode": "sort-by-name", 
    "sort-reversed": false, 
    "speed-limit-down": 100, 
    "speed-limit-down-enabled": false, 
    "speed-limit-up": 100, 
    "speed-limit-up-enabled": false, 
    "start-added-torrents": true, 
    "trash-original-torrent-files": false, 
    "umask": 18, 
    "upload-limit": 100, 
    "upload-limit-enabled": 0, 
    "upload-slots-per-torrent": 14, 
    "user-has-given-informed-consent": true, 
    "utp-enabled": true, 
    "watch-dir": "**REDACTED**", 
    "watch-dir-enabled": true
}

Automatic Blocklist Update

In order to update the blocklist daily, I've created the script /etc/cron.daily/update-transmission-blocklist.

It reads:

update-transmission-blocklist

#!/bin/sh

set -e

[ -x /usr/bin/transmission-remote ] || exit 0

# Write the date to the log file
/bin/date -u >> /var/log/update-transmission-blocklist.log

# Try to update the blocklist and write to the log file
/usr/bin/transmission-remote -n transmission:transmission --blocklist-update >> /var/log/update-transmission-blocklist.log 2>&1

Gotchas

Saving the configuration file is somewhat problematic.  If you edit settings.json while tranmission is running and then stop/start the daemon, all settings are lost.

It's better to force the running process to re-read its config file with the following command:

killall -HUP transmission-daemon

Remote Control Software


Web Interface

The Web interface is serviceable.  Whitelist your IP or subnet and point a Web browser to:

http://<your-server-name-or-ip>:<your-port-number>

Transmission Remote GUI

The Web interface is decent enough, but if you want a native GUI, there's Transmission Remote GUI.

In Ubuntu, simply enter the command:

killall -HUP transmission-daemon

When it finishes, you'll have a menu item.  You can also run it from the command line via the command:

transgui

There are GUIs for other operating systems.  You can find them on their Google Code page:
There's a great remote control client for Android called Torrent-fu.  You can find it in Google Play Apps:
Combine Torrent-fu and judicious port-forwarding and security, and you have a Transmission Daemon that you can control and manage torrents (including adding them) from anywhere.
Comments