||<>|| = Transmission = The BitTorrent protocol can be used to reduce the server and network impact of distributing large files. Rather than downloading a file from a single source server, the BitTorrent protocol allows users to join a "swarm" of hosts to download and upload from each other simultaneously. [[https://transmissionbt.com/|Transmission]] is designed for easy, powerful use. We've set the defaults to Just Work and it only takes a few clicks to configure advanced features like watch directories, bad peer blocklists, and the web interface. When Ubuntu chose Transmission as its default BitTorrent client, one of the most-cited reasons was its easy learning curve. This How-to focuses on CLI (Command Line Interface) and the Web interface Transmission has been configured to work out of the box on a desktop. Because this how-to is designed for Ubuntu server we need to manually allow remote access. = Installation = Transmission is typically installed by default in Ubuntu. If not, install the [[apt:transmission|transmission]] package from the Universe repository. == Add Transmission PPA Repository == If you want the latest then add the PPA repository {{{ sudo add-apt-repository ppa:transmissionbt/ppa }}} Update repositories {{{ sudo apt-get update }}} Install transmission {{{ sudo apt-get install transmission-cli transmission-common transmission-daemon }}} = Configure = There are many settings which can be configured. This how-to focus on tweaking the default configuration file for use with Ubuntu server. '''transmission-daemon''' will start automatically each time you start your server, with the settings defined in '''/var/lib/transmission-daemon/info/settings.json''' Make sure the Transmission daemon is not running when changing the config file otherwise your changes will be over written. {{{ sudo service transmission-daemon stop }}} edit '''/var/lib/transmission-daemon/info/settings.json''' {{{ sudo nano /var/lib/transmission-daemon/info/settings.json }}} == Username and Password == The default rpc-username '''and''' password is '''“transmission”''' Change if increased security is required Change it to whatever you want (any password will work). After next restart the password will be rewritten in SHA1 encrypted format for security reasons. {{{ "rpc-password": "{62b16db87b89a91dd49a5110a7cafc06d20eb4f2wtK6kqPj", "rpc-username": "transmission", }}} == Whitelist == This must be changed for remote access rpc-whitelist defines access to transmission. Localhost (127.0.0.1) is defined by default. I added ,192.268.*.* to allow any machine on my LAN access. {{{ "rpc-whitelist": "127.0.0.1,192.168.*.*", }}} == "umask" parameter == You will also have to set the "umask" parameter in Transmission’s settings file to “2” (default is 18) for the account user to have full access to files/folders created by Transmission. {{{ "umask": 2, }}} == Transmission Restart == After configuration change, restart transmission {{{ sudo service transmission-daemon start }}} == Default File Directory == Place a torrent file in this directory for automatic file download {{{ /var/lib/transmission-daemon/downloads/ }}} === Configure Users and Permissions === It is recommended that Transmission runs under it’s own username for security reasons. This creates a few issues with file and folder access by Transmission as well as your account (let us assume it is '''user'''). Add the username '''user''' to the group '''debian-transmission:''' {{{ sudo usermod -a -G debian-transmission user }}} '''NOTE: Change "user" to you own Ubuntu user login name.''' '''NOTE: When adding a user to a new group, the user must log out and log back in for it to take affect. A reboot will also accomplish this.''' = Transmission Daemon = == Starting and Stopping Transmission Daemon == After install Transmission, the daemon will be started automatically (but not accessible yet). You can start and stop Transmission daemon using the following commands {{{ sudo service transmission-daemon start sudo service transmission-daemon stop sudo service transmission-daemon reload }}} Note:Restarting (or reloading) Transmission daemon can be tricky. Restarting the the daemon (while it is already running) would rewrite the Transmission settings files to its original state. In other words, restarting the Transmission daemon would reset all the custom settings you saved. == Bash Aliases == Create shortcuts add the following bash aliases to '''/home/user/.bash_aliases''' {{{ sudo nano /home/user/.bash_aliases }}} {{{ alias t-start='sudo service transmission-daemon start' alias t-stop='sudo service transmission-daemon stop' alias t-reload='sudo service transmission-daemon reload' alias t-list='transmission-remote -n 'transmission:transmission' -l' alias t-basicstats='transmission-remote -n 'transmission:transmission' -st' alias t-fullstats='transmission-remote -n 'transmission:transmission' -si' }}} {{{ source /home/user/.bash_aliases }}} Example {{{ user@SVR:~$ t-list }}} will run '''transmission-remote -n 'transmission:transmission' -l''' = Web Interface = With your browser you can now add torrents, download and seed. You can also configure many transmission settings. {{{ http://server-ip:9091 }}} == Port Forward == There are many options but one of the more important one's is port forwarding Check your ports are open === Edit === {{attachment:2015-02-08 10_49_13-.png}} === Port Forward === {{attachment:TransmissionWebConfig.png}} If you port says "closed" you will need to configure your internet router to forward the correct port to your Transmission server/client. Google "How to port forward" If you don't use "Port Forward" another option is "UPnP". Once again this depends on you internet router setup. = Command Line Interface = With a headless server full control of Transmission requires CLI == Transmission Create == Create a torrent file with transmission CLI. Torrent files can be generated from either a single file or directories. The example below is a directory example {{{ transmission-create -o /var/lib/transmission-daemon/downloads/files.torrent -c "My comments" -t udp://tracker.openbittorrent.com:80 -t udp://open.demonii.com:1337 -t udp://tracker.coppersurfer.tk:6969 -t udp://tracker.leechers-paradise.org:6969 ~/torrent/complete/ }}} '''-o /var/lib/transmission-daemon/downloads/files.torrent''' New torrent name and where to store the torrent '''-c "My comments"''' Any comments to be attached to the file '''-t udp://tracker.openbittorrent.com:80''' '''-t udp://open.demonii.com:1337''' '''-t udp://tracker.coppersurfer.tk:6969''' '''-t udp://tracker.leechers-paradise.org:6969''' Trackers for the torrents, more than one tracker is recommended in case one or more goes down. '''~/torrent/complete/''' Directory to be made into a torrent. If a single file is required use this format "/var/lib/transmission-daemon/downloads/MyFile.txt" For more information about "transmission-create" {{{ transmission-create -h }}} == Add a Torrent == To add a torrent to the daemon, use this command: ''transmission-remote -a [path to file].torrent'' {{{ transmission-remote -n 'transmission:transmission' -a /var/lib/transmission-daemon/downloads/files.torrent }}} == Torrent Information == Display information about torrent's being downloaded === Help information === {{{ transmission-remote -h }}} === List all torrents === Note Authentication is required '''transmission-remote -n 'username:password' -l''' {{{ transmission-remote -n 'transmission:transmission' -l }}} === Basic Stats All Torrents === {{{ transmission-remote -n 'transmission:transmission' -st }}} === Full Stats All Torrents === {{{ transmission-remote -n 'transmission:transmission' -si }}} === Torrent #3 Full Stats === {{{ transmission-remote -n 'transmission:transmission' -t 3 -f }}} === Torrent #3 Summary Stats === {{{ transmission-remote -n 'transmission:transmission' -t 3 -i }}} == Transmission Control == === Start all torrents === {{{ transmission-remote -n 'transmission:transmission' -s }}} === Stop all torrents === {{{ transmission-remote -n 'transmission:transmission' -S }}} === Start a specific torrent === ''transmission-remote -s [hash]'' {{{ transmission-remote -n 'transmission:transmission' -s -t 3 }}} === Stop a specific torrent === ''transmission-remote -S [hash]'' {{{ transmission-remote -n 'transmission:transmission' -S -t 3 }}} === Remove all torrents === {{{ transmission-remote -n 'transmission:transmission' -r }}} === Remove a specific torrent === ''transmission-remote -r [hash]'' {{{ transmission-remote -n 'transmission:transmission' -r -t 3 }}} === Get hashes for all torrents === {{{ transmission-remote -n 'transmission:transmission' -i }}} === Quit the daemon === {{{ transmission-remote -n 'transmission:transmission' -q }}}