| 1 | 1 | new file mode 100644 | 
                    
                | ... | ... | @@ -0,0 +1,76 @@ | 
                    
                |  | 0 | +--- | 
                    
                |  | 1 | +layout: post | 
                    
                |  | 2 | +title: "Download torrents on your server" | 
                    
                |  | 3 | +date: 2013-12-25 22:34 | 
                    
                |  | 4 | +comments: true | 
                    
                |  | 5 | +categories: [server] | 
                    
                |  | 6 | +cover: /images/cover/avatar.png | 
                    
                |  | 7 | +keywords: transmission, torrent, server, remote, rsync, firewall | 
                    
                |  | 8 | +description: Setup transmission client on server | 
                    
                |  | 9 | +--- | 
                    
                |  | 10 | + | 
                    
                |  | 11 | +### tl;dr | 
                    
                |  | 12 | +* How to setup Transmission client on your Linux server | 
                    
                |  | 13 | +* Firewall setup | 
                    
                |  | 14 | +* Email notifications setup | 
                    
                |  | 15 | + | 
                    
                |  | 16 | +# Why am I doing this? | 
                    
                |  | 17 | + | 
                    
                |  | 18 | +Recently I've needed to download some stuff from torrentz. I have quite | 
                    
                |  | 19 | +unstable and slow internet connection at home, so I've decided to  | 
                    
                |  | 20 | +download the stuff to my server and later transfer it to my laptop via | 
                    
                |  | 21 | +rsync (with transfer resume enabled and high compression ratio). | 
                    
                |  | 22 | + | 
                    
                |  | 23 | +# Choose a torrent client | 
                    
                |  | 24 | + | 
                    
                |  | 25 | +There are [many](http://alinuxblog.wordpress.com/2010/09/14/top-10-torrent-clients-for-linux/) | 
                    
                |  | 26 | +torrent clients suitable for headless Linux server (so they don't  | 
                    
                |  | 27 | +need X.Org server and allow remote access). I've picked out [Transmission](http://www.transmissionbt.com/). | 
                    
                |  | 28 | +It looks easy to configure & use, supports magnet links, is lightweight,  | 
                    
                |  | 29 | +has web interface and is actively developed. | 
                    
                |  | 30 | + | 
                    
                |  | 31 | +# Install & configure | 
                    
                |  | 32 | + | 
                    
                |  | 33 | +If your Linux distribution provides split Transmission package, you need just | 
                    
                |  | 34 | +transmission-cli or transmission-daemon (simply, ignore GTK or Qt packages). | 
                    
                |  | 35 | + | 
                    
                |  | 36 | +After installation edit Transmission daemon configuration file (may be located | 
                    
                |  | 37 | +here ```/var/lib/transmission/.config/transmission-daemon/settings.json``` or  | 
                    
                |  | 38 | +here ```/etc/init.d/transmission-daemon/settings.json```).  | 
                    
                |  | 39 | + | 
                    
                |  | 40 | +Interesting options you'll probably need to edit are these: | 
                    
                |  | 41 | + | 
                    
                |  | 42 | +* encryption: 2 (Require encrypted connections) | 
                    
                |  | 43 | +* rpc-enabled: true (Required for Transmission web client) | 
                    
                |  | 44 | +* rpc-password: "" (Put some password, after transmission-daemon restart it will be | 
                    
                |  | 45 | +hashed) | 
                    
                |  | 46 | +* rpc-port: 9091 | 
                    
                |  | 47 | +* rpc-whitelist-enabled: false (if you have dynamic public IP address you want disable this option) | 
                    
                |  | 48 | +* umask: 0 (Give access to downloaded files to everybody -- files have read & write permissions for owner, group and others) | 
                    
                |  | 49 | + | 
                    
                |  | 50 | +If you're a bitch and want to disable seeding right after torrent download is completed, | 
                    
                |  | 51 | +set ```ratio-limit``` to ```0``` and ```ratio-limit-enabled``` to ```true```. | 
                    
                |  | 52 | + | 
                    
                |  | 53 | +# Open ports in your firewall | 
                    
                |  | 54 | + | 
                    
                |  | 55 | +Find ```peer-port``` option in transmission config. Open this port in ```/etc/iptables/iptables.rules```: | 
                    
                |  | 56 | + | 
                    
                |  | 57 | +	-A INPUT -p tcp -m tcp --dport 51413 -j ACCEPT | 
                    
                |  | 58 | +	-A OUTPUT -p tcp -m tcp --sport 51413 -j ACCEPT | 
                    
                |  | 59 | +	-A OUTPUT -p udp -m udp --dport 80:60000 -j ACCEPT | 
                    
                |  | 60 | + | 
                    
                |  | 61 | +Port 51413 has to be opened otherwise Transmission cannot download and upload | 
                    
                |  | 62 | +data. Also I've opened a range of UDP ports because of magnet links. | 
                    
                |  | 63 | + | 
                    
                |  | 64 | +# Hey! Downloading is finished! | 
                    
                |  | 65 | + | 
                    
                |  | 66 | +Transmission daemon can run any script after downloads are completed. | 
                    
                |  | 67 | +First I've set ```script-torrent-done-enabled``` to ```true``` and inserted | 
                    
                |  | 68 | +full path to the script into ```script-torrent-done-filename``` option. | 
                    
                |  | 69 | + | 
                    
                |  | 70 | +Here's my script: | 
                    
                |  | 71 | + | 
                    
                |  | 72 | +{% codeblock lang:bash %} | 
                    
                |  | 73 | +#!/usr/bin/env bash | 
                    
                |  | 74 | +echo "'$TR_TORRENT_NAME' is finished!" | gnu-mail -a "From: cinan.remote@gmail.com" -s "Torrent download finished" cinan6@gmail.com | 
                    
                |  | 75 | +{% endcodeblock %} |