Transmission
Transmission is a very clean and easy to use client. It runs efficiently and includes a web interface. The only downside is under heavy load it suffers performance issues. Say over a hundred torrents and a thousand connections.
But for casual use, it’s my preferred client.
Installation
sudo apt install transmission-daemon
Notes on Use
One note about installing transmission; make sure to stop the service before editing the config file. It will replace your settings with it’s running settings when it exits, otherwise.
sudo apt install transmission-daemon
sudo service transmission-daemon stop
sudo vim /etc/transmission-daemon/settings.json
"dht-enabled": false,
"rpc-whitelist": "127.0.0.1,192.168.*.*",
"peer-limit-global": 960,
"peer-limit-per-torrent": 288,
"preallocation": 2,
"rename-partial-files": false,
"watch-dir": "xxxxx",
"watch-dir-enabled": true
# Legacy setting not needed anymore
"max-peers-global": 960,
Most systems will require adjustment of the iptables firewall, should you be using such, for both the web admin port and the torrent traffic port. If you’re using something other than the standard port, adjust to suit. If you’re using random ports, you may want to open a range.
# The web admin port is tcp 9091 and peer traffic is 51413 tcp/udp by default
sudo iptables -A INPUT -p tcp -s 192.168.1.1/24 --dport 9091 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 51413 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p udp --dport 51413 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Should you have a router and NAT tranmission will use upnp to forward the appropriate ports. You can also check out upnpc for manipulating that device manually or via script.
If you’re using a VPN you may want to restrict traffic to that connection. You can configure transmission for that. Disable the transmission server so that you can start it as part of the VPN service.
sudo systemctl disable --now transmission-daemon
Here’s an example using PIA. Note: This may be somewhat dated at this point.
# These are not your normal credentials. Even though you may be using wireguard, set them up under the openvpn service.
# Get these and the client ID from their website support section
USER=xxxx
PASS=xxxxx
CLIENT_ID=xxxxx
IP=$(ip -o -4 addr list tun0 | awk '{print $4}')
PORT=$(curl -d "user=$USER&pass=$PASS&client_id=$CLIENT_ID&local_ip=$IP" https://www.privateinternetaccess.com/vpninfo/port_forward_assignment | grep -o '[0-9]\+')
echo $IP $PORT
# Just in case it's already running
sudo service transmission-daemon stop
sudo sed -i "s/bind-address-ipv4.*/bind-address-ipv4\": \"$IP\",/" /etc/transmission-daemon/settings.json
sudo sed -i "s/peer-port\".*/peer-port\": $PORT, /" /etc/transmission-daemon/settings.json
sudo iptables -A INPUT -i tun0 -p tcp -m tcp --dport $PORT -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i tun0 -p udp -m udp --dport $PORT -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo service transmission-daemon start
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.