Installing rTorrent on Ubuntu Linux
This is my first post blog post I have ever published.
I was at work and noticed there was a torrent that I wanted to download but did not want to download the file to my computer at work. What I had been doing previously on my computer at home which runs Kubuntu is run KTorrent with the web interface enabled. This was working very well until one morning I rushed out of the house without starting KTorrent. When I arrived at work I tried to start KTorrent by connecting to my computer at home with SSH but was having issues with KTorrent finding the XServer. Instead of trying to resolve this issue I decided to switch my torrent client to rTorrent as I do most of my tasks via SSH and rTorrent is a console based application.
This tutorial assumes that you already have knowledge of setting up other torrent clients such as BitTorrent, uTorrent, etc. This tutorial focuses on how to install and configure rTorrent on Ubuntu Linux.
Connect or log into the Ubuntu Linux computer that you would like to install rTorrent. Once you have console access to the computer type the following command and press enter.
sudo apt-get install rtorrent
This will start Ubuntu downloading and installing the rTorrent client. You can also use a package manager if you have access to a XServer.
Once rTorrent is installed it will need to be configured. The first thing we will do is copy an example configuration file to your home directory by typing the following command and pressing enter.
cp /usr/share/doc/rtorrent/examples/rtorrent.rc ~/.rtorrent.rc
UPDATE: The example rtorrent file was not available when I last tried to set up rtorrent, if you want the latest one check here.
What this has done is create a template of the configuration file for rTorrent in your home directory with a file name called “.rtorrent.rc” ready to be edited.
To edit the file you can use your favorite text editor if you have access to a XServer or you can type the following command to start a text editor in the console.
To use a feature in the rTorrent configuration file make sure the ‘#’ has been removed from the start of the line.
Make sure your session directory exists when setting your default session directory.
If you want to have rTorrent watch a directory for new torrent files and start them you need to set the directory. The directory is set on the “watch_directory” schedule for example.
schedule = watch_directory,5,5,load_start=<directory>
you can set the file type by using wildcards. See my supplied rTorrent configuration file for an example.
Make sure ports are forwarded from your router to the IP of the computer running rTorrent.
If you have started editing the rTorrent configuration file in the nano console based text ediror you can save the file pressing the key combination Ctrl + X. The nano text editor will ask if you want to save the modified buffer, press ‘y’. Nano will ask what file name to save the file as, just press enter to save over the original file.
If you have connected to your Ubuntu Linux computer via SSH the best way to start rTorrent is using the “screen” command. The screen command allows you to reconnect to sessions that you have previously disconnected from. To start a screen session for rTorrent and give the screen session the name of “rtorrent” type the following command and press enter.
screen -S rtorrent
This will start rTorrent and also start all of the torrents that are in the watch directory if it has been enabled.
Some simple keys for rTorrent are:
|Cursor Up & Down||Navigate torrents, peers, trackers etc…|
|Cursor Right||View information on what has been navigated to.|
|Cursor Left||Go back.|
|Backspace||Enter the URL of a new torrent to download.|
|Ctrl + q||Quit rTorrent.|
|Ctrl + s||Start a torrent.|
|Ctrl + d||Stop a torrent (A second time removes it from rTorrent)|
|Ctrl + k||Close a torrent.|
|Ctrl + r||Start hash checking a torrent.|
|I||Toggle ignore ratio.|
|p||View peer list.|
|o||View torrent info.|
|i||View file list.|
|u||View tracker list.|
|1/2||Adjust max uploads.|
|3/4||Adjust min peers.|
|5/6||Adjust max peers.|
|t/T||Initiate tracker request. Capital T is used to force the request.|
A full list of keys and full user guide for rTorrent can be found at:
Sample rTorrent Configuration
Here is my rTorrrent configuration file that I have edited slightly from the example file I copied to my home directory. If you decide to use this configuration please edit the watch directory to point to the directory you download torrent files to and port forward the ports in the configuration file to your computers IP address.
# This is an example resource file for rTorrent. Copy to # ~/.rtorrent.rc and enable/modify the options as needed. Remember to # uncomment the options you wish to enable. # Maximum and minimum number of peers to connect to per torrent. min_peers = 40 max_peers = 500 # Same as above but for seeding completed torrents (-1 = same as downloading) #min_peers_seed = 10 #max_peers_seed = 50 # Maximum number of simultanious uploads per torrent. max_uploads = 4 # Global upload and download rate in KiB. "0" for unlimited. download_rate = 0 upload_rate = 75 # Default directory to save the downloaded torrents. directory = /Repository/Torrentz/ # Default session directory. Make sure you don't run multiple instance # of rtorrent using the same session directory. Perhaps using a # relative path? session = ~/.session # Watch a directory for new torrents, and stop those that have been # deleted. schedule = watch_directory,5,5,load_start=~/Downloads/*.torrent #schedule = untied_directory,5,5,stop_untied= # Close torrents when diskspace is low. schedule = low_diskspace,5,60,close_low_diskspace=100M # Stop torrents when reaching upload ratio in percent, # when also reaching total upload in bytes, or when # reaching final upload ratio in percent. # example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0 schedule = ratio,60,60,"stop_on_ratio=20,2M,30" # The ip address reported to the tracker. #ip = 127.0.0.1 #ip = rakshasa.no # The ip address the listening socket and outgoing connections is # bound to. #bind = 127.0.0.1 #bind = rakshasa.no # Port range to use for listening. port_range = 6881-6999 # Start opening ports at a random position within the port range. #port_random = no # Check hash for finished torrents. Might be usefull until the bug is # fixed that causes lack of diskspace not to be properly reported. check_hash = yes # Set whetever the client should try to connect to UDP trackers. use_udp_trackers = yes # Alternative calls to bind and ip that should handle dynamic ip's. #schedule = ip_tick,0,1800,ip=rakshasa #schedule = bind_tick,0,1800,bind=rakshasa # Encryption options, set to none (default) or any combination of the following: # allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext # # The example value allows incoming encrypted connections, starts unencrypted # outgoing connections but retries with encryption if they fail, preferring # plaintext to RC4 encryption after the encrypted handshake # encryption = allow_incoming,enable_retry,prefer_plaintext # Enable DHT support for trackerless torrents or when all trackers are down. # May be set to "disable" (completely disable DHT), "off" (do not start DHT), # "auto" (start and stop DHT as needed), or "on" (start DHT immediately). # The default is "off". For DHT to work, a session directory must be defined. # dht = on # UDP port to use for DHT. # dht_port = 6881 # Enable peer exchange (for torrents not marked private) # peer_exchange = yes # # Do not modify the following parameters unless you know what you're doing. # # Hash read-ahead controls how many MB to request the kernel to read # ahead. If the value is too low the disk may not be fully utilized, # while if too high the kernel might not be able to keep the read # pages in memory thus end up trashing. hash_read_ahead = 10 # Interval between attempts to check the hash, in milliseconds. hash_interval = 100 # Number of attempts to check the hash while using the mincore status, # before forcing. Overworked systems might need lower values to get a # decent hash checking rate. hash_max_tries = 10