mirror of
https://git.disroot.org/FollieHiyuki/dotfiles.git
synced 2024-12-01 03:38:32 -05:00
202 lines
10 KiB
Plaintext
202 lines
10 KiB
Plaintext
#############################################################################
|
|
# A minimal rTorrent configuration that provides the basic features
|
|
# you want to have in addition to the built-in defaults.
|
|
#
|
|
# See https://github.com/rakshasa/rtorrent/wiki/CONFIG-Template
|
|
# for an up-to-date version.
|
|
#############################################################################
|
|
|
|
# Instance layout (base paths)
|
|
method.insert = cfg.basedir, private|const|string, (cat,(system.env,HOME),"/Downloads/rtorrent/")
|
|
method.insert = cfg.download, private|const|string, (cat,(cfg.basedir),"download/")
|
|
method.insert = cfg.logs, private|const|string, (cat,(cfg.basedir),"log/")
|
|
method.insert = cfg.logfile, private|const|string, (cat,(cfg.logs),"rtorrent-",(system.time),".log")
|
|
method.insert = cfg.session, private|const|string, (cat,(cfg.basedir),".session/")
|
|
method.insert = cfg.watch, private|const|string, (cat,(cfg.basedir),"watch/")
|
|
|
|
# Create instance directories
|
|
execute.throw = sh, -c, (cat,\
|
|
"mkdir -p \"",(cfg.download),"\" ",\
|
|
"\"",(cfg.logs),"\" ",\
|
|
"\"",(cfg.session),"\" ",\
|
|
"\"",(cfg.watch),"/load\" ",\
|
|
"\"",(cfg.watch),"/start\" ")
|
|
|
|
# Listening port for incoming peer traffic (fixed; you can also randomize it)
|
|
network.port_range.set = 62820-62820
|
|
network.port_random.set = no
|
|
|
|
# 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.
|
|
# See https://help.ubuntu.com/community/Dnsmasq#Local_DNS_Cache for enabling local DNS cache
|
|
# Open ports to the firewall as well
|
|
dht.mode.set = auto
|
|
|
|
# UDP port to use for DHT
|
|
dht.port.set = 62882
|
|
|
|
# Enable/disable peer exchange for torrents that aren't marked private. Disabled by default. (peer_exchange)
|
|
protocol.pex.set = 1
|
|
|
|
# Set whether the client should try to connect to UDP trackers (It can cause various problems if it's enabled, if you experience any with this option enabled then disable it.)
|
|
trackers.use_udp.set = 1
|
|
|
|
# Adding public DHT servers for easy bootstrapping
|
|
# schedule2 = dht_node_1, 5, 0, "dht.add_node=router.utorrent.com:6881"
|
|
# schedule2 = dht_node_2, 5, 0, "dht.add_node=dht.transmissionbt.com:6881"
|
|
# schedule2 = dht_node_3, 5, 0, "dht.add_node=router.bitcomet.com:6881"
|
|
# schedule2 = dht_node_4, 5, 0, "dht.add_node=dht.aelitis.com:6881"
|
|
|
|
# Global upload and download rate in KiB, `0` for unlimited (`download_rate`, `upload_rate`)
|
|
throttle.global_down.max_rate.set_kb = 8000
|
|
throttle.global_up.max_rate.set_kb = 2000
|
|
|
|
# Maximum number of simultaneous downloads and uploads slots (global slots!) (`max_downloads_global`, `max_uploads_global`)
|
|
throttle.max_downloads.global.set = 300
|
|
throttle.max_uploads.global.set = 300
|
|
|
|
# Maximum and minimum number of peers to connect to per torrent while downloading (`min_peers`, `max_peers`) Default: `100` and `200` respectively
|
|
throttle.min_peers.normal.set = 50
|
|
throttle.max_peers.normal.set = 100
|
|
|
|
# Same as above but for seeding completed torrents (seeds per torrent), `-1` for same as downloading (`min_peers_seed`, `max_peers_seed`) Default: `-1` for both
|
|
throttle.min_peers.seed.set = -1
|
|
throttle.max_peers.seed.set = -1
|
|
|
|
# Maximum number of simultaneous downloads and uploads slots per torrent (`max_uploads`) Default: `50` for both
|
|
throttle.max_downloads.set = 50
|
|
throttle.max_uploads.set = 50
|
|
|
|
# Set the numwant field sent to the tracker, which indicates how many peers we want.
|
|
# A negative value disables this feature. Default: `-1` (`tracker_numwant`)
|
|
trackers.numwant.set = 100
|
|
|
|
protocol.encryption.set = allow_incoming,try_outgoing,enable_retry
|
|
|
|
# Limits for file handle resources, this is optimized for
|
|
# an `ulimit` of 1024 (a common default). You MUST leave
|
|
# a ceiling of handles reserved for rTorrent's internal needs!
|
|
network.http.max_open.set = 50
|
|
network.max_open_files.set = 600
|
|
network.max_open_sockets.set = 300
|
|
|
|
# Send and receive buffer size for socket. Disabled by default (`0`), this means the default is used by OS
|
|
# (you have to modify the system wide settings!) (`send_buffer_size`, `receive_buffer_size`)
|
|
# Increasing buffer sizes may help reduce disk seeking, connection polling as more data is buffered each time
|
|
# the socket is written to. It will result higher memory usage (not visible in rtorrent process!).
|
|
network.receive_buffer.size.set = 4M
|
|
network.send_buffer.size.set = 12M
|
|
|
|
# Preloading a piece of a file. Default: `0` Possible values: `0` (Off) , `1` (Madvise) , `2` (Direct paging).
|
|
pieces.preload.type.set = 2
|
|
#pieces.preload.min_size.set = 262144
|
|
#pieces.preload.min_rate.set = 5120
|
|
|
|
# TOS of peer connections. Default: `throughput`. If the option is set to `default` then the system default TOS
|
|
# is used. A hex value may be used for non-standard settings. (`tos`)
|
|
# Possible values: `[default|lowdelay|throughput|reliability|mincost]` or a hex value.
|
|
#network.tos.set = throughput
|
|
|
|
# Memory resource usage (increase if you have a large number of items loaded,
|
|
# and/or the available resources to spend)
|
|
pieces.memory.max.set = 2048M
|
|
network.xmlrpc.size_limit.set = 4M
|
|
|
|
# Basic operational settings (no need to change these)
|
|
session.path.set = (cat, (cfg.session))
|
|
directory.default.set = (cat, (cfg.download))
|
|
log.execute = (cat, (cfg.logs), "execute.log")
|
|
##log.xmlrpc = (cat, (cfg.logs), "xmlrpc.log")
|
|
execute.nothrow = sh, -c, (cat, "echo >",\
|
|
(session.path), "rtorrent.pid", " ", (system.pid))
|
|
|
|
# Other operational settings (check & adapt)
|
|
encoding.add = utf8
|
|
system.umask.set = 0027
|
|
system.cwd.set = (directory.default)
|
|
network.http.dns_cache_timeout.set = 25
|
|
schedule2 = monitor_diskspace, 15, 60, ((close_low_diskspace, 1000M))
|
|
pieces.hash.on_completion.set = yes
|
|
##view.sort_current = seeding, greater=d.ratio=
|
|
##keys.layout.set = qwerty
|
|
##network.http.capath.set = "/etc/ssl/certs"
|
|
|
|
# CURL options to add support for nonofficial SSL trackers and peers
|
|
network.http.ssl_verify_peer.set = 0
|
|
network.http.ssl_verify_host.set = 0
|
|
|
|
# Some additional values and commands
|
|
method.insert = system.startup_time, value|const, (system.time)
|
|
method.insert = d.data_path, simple,\
|
|
"if=(d.is_multi_file),\
|
|
(cat, (d.directory), /),\
|
|
(cat, (d.directory), /, (d.name))"
|
|
method.insert = d.session_file, simple, "cat=(session.path), (d.hash), .torrent"
|
|
|
|
# Watch directories (add more as you like, but use unique schedule names)
|
|
schedule2 = watch_start, 10, 10, ((load.start_verbose, (cat, (cfg.watch), "start/*.torrent")))
|
|
schedule2 = watch_load, 11, 10, ((load.verbose, (cat, (cfg.watch), "load/*.torrent")))
|
|
|
|
# Run the rTorrent process as a daemon in the background
|
|
# (and control via XMLRPC sockets)
|
|
#system.daemon.set = true
|
|
#network.scgi.open_local = (cat,(session.path),rtorrent.sock)
|
|
#execute.nothrow = chmod,770,(cat,(session.path),rtorrent.sock)
|
|
|
|
# Logging:
|
|
# Levels = critical error warn notice info debug
|
|
# Groups = connection_* dht_* peer_* rpc_* storage_* thread_* tracker_* torrent_*
|
|
print = (cat, "Logging to ", (cfg.logfile))
|
|
log.open_file = "log", (cfg.logfile)
|
|
log.add_output = "info", "log"
|
|
##log.add_output = "tracker_debug", "log"
|
|
|
|
#############################################################################
|
|
# Advanced configuration
|
|
# Check https://github.com/rakshasa/rtorrent/wiki for more details
|
|
#
|
|
#############################################################################
|
|
|
|
# Notify when finishing a download
|
|
method.set_key = event.download.finished, notify_me, "execute=~/.local/bin/garbage/rtorrent-notify.sh,$d.name="
|
|
|
|
# Set scrape intervals for active (~10 mins) and idle items (~12 hours)
|
|
method.insert = cfg.scrape_interval.active, value, 580
|
|
method.insert = cfg.scrape_interval.idle, value, 43180
|
|
|
|
# Regularly update scrape information for all torrents (even stopped ones), it won't affect the operation of rtorrent, but nice to have these values updated.
|
|
# This info is only updated when rtorrent starts or a torrent is added by default.
|
|
# Try to balance calls to not fire them up at the same time (since multiscraping isn't implemented in libtorrent). Check for update every 5 minutes and distinguish between 2 groups:
|
|
# - transferring (uploading and/or downloading) torrents: update in every 10 minutes
|
|
# - non-transferring torrents: update in every 12 hours
|
|
# helper method: sets current time in a custom field (tm_last_scrape) and saves session
|
|
method.insert = d.last_scrape.set, simple|private, "d.custom.set=tm_last_scrape,$cat=$system.time=; d.save_resume="
|
|
# helper method: sends the scrape request and sets the tm_last_scrape timestamp and saves session
|
|
method.insert = d.last_scrape.send_set, simple, "d.tracker.send_scrape=0;d.last_scrape.set="
|
|
# helper method: decides whether the required time interval (with the help of an argument) has passed and if so calls the above method
|
|
method.insert = d.last_scrape.check_elapsed, simple|private, "branch={(elapsed.greater,$d.custom=tm_last_scrape,$argument.0=),d.last_scrape.send_set=}"
|
|
# helper method: checks for non-existing/empty custom field to be able to test its validity later
|
|
method.insert = d.last_scrape.check, simple|private, "branch={d.custom=tm_last_scrape,d.last_scrape.check_elapsed=$argument.0=,d.last_scrape.send_set=}"
|
|
# sets custom field (tm_last_scrape) to current time only for torrents just has been added (skips setting time on purpose when rtorrent started)
|
|
method.set_key = event.download.inserted_new, ~last_scrape_i, "d.last_scrape.set="
|
|
# check for update every 5 minutes (300 sec) and update scrape info for transferring torrents in every 10 minutes (600-20=580 sec) and for non-transferring ones in every 12 hours (43200-20=43180 sec)
|
|
schedule2 = last_scrape_t, 300, 300, "d.multicall2=default,\"branch=\\\"or={d.up.rate=,d.down.rate=}\\\",d.last_scrape.check=$cfg.scrape_interval.active=,d.last_scrape.check=$cfg.scrape_interval.idle=\""
|
|
|
|
# IP filtering (https://list.iblocklist.com)
|
|
# ip_tables.insert_table = <block_list>
|
|
# ip_tables.load = <block_list>, ~/.local/share/rtorrent/block_list.txt, unwanted
|
|
|
|
# Save all the sessions in every 12 hours instead of the default 20 minutes.
|
|
schedule2 = session_save, 1200, 43200, ((session.save))
|
|
|
|
# Prune file status in every 24 hours, this is the default setting.
|
|
#schedule2 = prune_file_status, 3600, 86400, ((system.file_status_cache.prune))
|
|
|
|
# Whether to allocate disk space for a new torrent. Default: `0`
|
|
#system.file.allocate.set = 0
|
|
|
|
### END of rtorrent.rc ###
|