Skip to content

Instantly share code, notes, and snippets.

@frengky
Created December 30, 2015 02:55
Show Gist options
  • Save frengky/bf0476da80b8fe85cba7 to your computer and use it in GitHub Desktop.
Save frengky/bf0476da80b8fe85cba7 to your computer and use it in GitHub Desktop.
Setup systemd with the rtorrent service
# 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 = 1
max_peers = 300
# Same as above but for seeding completed torrents (-1 = same as downloading)
min_peers_seed = 1
max_peers_seed = 50
# Maximum number of uploads single torrent may use
max_uploads = 1
# Maximum number of simultaneous downloads
max_downloads_global = 1
# Maximum number of simultaneous uploads
max_uploads_global = 1
# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 0
upload_rate = 10
# Default directory to save the downloaded torrents.
directory = /home/rt/downloads
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /home/rt/sessions
# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=/home/rt/torrent-files/*.torrent
#schedule = tied_directory,6,5,start_tied=
schedule = untied_directory,5,5,stop_untied=
# Close torrents when diskspace is low.
schedule = low_diskspace,5,60,close_low_diskspace=2000M
# Periodically save session data
schedule = session_save,240,300,session_save=
# Enable the default ratio group.
ratio.enable=
# Change the limits, the defaults should be sufficient.
# Upload to a minimum ratio of 4.0
ratio.min.set=400
# Upload to a maximum ratio of 20.0
ratio.max.set=2000
# Upload a minimum of 250 MB
ratio.upload.set=250M
# When seeding ratio is reached close the torrent
system.method.set = group.seeding.ratio.command, d.close=
# Move files to ./unsorted when download completes
# system.method.set_key = event.download.finished,move_complete,"execute=mv,-n,$d.get_base_path=,/home/rt/unsorted/;d.set_directory=/home/rt/unsorted/"
system.method.set_key = event.download.finished,move_complete,"d.set_directory=/home/rt/unsorted/;execute=mv,-n,$d.get_base_path=,/home/rt/unsorted/"
# Port range to use for listening.
port_range = 33101-33199
# Start opening ports at a random position within the port range.
port_random = yes
# 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,try_outgoing,enable_retry,prefer_plaintext
# Sort the main view by ratio
view.sort_current = main,greater=d.get_ratio=
view.sort_new = main,less=d.get_ratio=
view.sort = main
# Sort the seeding view by the upload rate and only show torrents with peers
view.sort_current = seeding,greater=d.get_up_rate=
view.filter = seeding,"and=d.get_complete=,d.get_peers_connected="
view.sort_new = seeding,less=d.get_up_rate=
view.sort = seeding
# Sort the leeching view by name
view.sort_current = leeching,greater=d.get_name=
view.sort_new = leeching,greater=d.get_name=
view.sort = leeching
# Filter the active view by connected peers
view.sort_current = active,less=d.get_name=
view.sort_new = leeching,less=d.get_name=
view.filter = active,d.get_peers_connected=
view.sort = active
schedule = sort_main,11,5,view.sort=main
schedule = sort_seeding,12,5,view.sort=seeding
schedule = sort_leeching,13,5,view.sort=leeching
schedule = sort_active,14,5,view.sort=active
# 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 = auto
# UDP port to use for DHT.
#
#dht_port = 6881
# Enable peer exchange (for torrents not marked private)
#
#peer_exchange = yes
[Unit]
Description=rTorrent Service
After=network.target
[Service]
Type=forking
KillMode=none
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
WorkingDirectory=/home/rt
User=rt
Group=rt
[Install]
WantedBy=multi-user.target
@GroupMaster
Copy link

In the event that more than one instance of rtorrent is running, the above line
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
will kill ALL instances. This is not optimal. To individually stop each rtorrent instance I suggest using the following instead....
ExecStop=/usr/bin/pkill -e -n -f -x 'FULL_PROCESS_STRING'
Substitute 'FULL_PROCESS_STRING' with the full command used when rtorrent is launched.

For Example:
ExecStop=/usr/bin/pkill -e -n -f -x '/usr/bin/rtorrent -n -o import=/home/seedbox/.rtorrent-tv.rc'
This means the ExecStart line would read:
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent-tv /usr/bin/rtorrent -n -o import=/home/seedbox/.rtorrent-tv.rc

Note:
The import= is used to specify an rtorrent configuration file to load instead of the default. This is how multiple instances can be run in parallel. If you only want 1 instance, it does not matter which you use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment