mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-05 17:52:29 +00:00
143 lines
4.8 KiB
Plaintext
143 lines
4.8 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.
|
|
|
|
How to use this file:
|
|
|
|
1. Copy to destination, remove '-example' suffix
|
|
2. Create rtorrent.rc, containing single command, which executes THIS file.
|
|
For example:
|
|
|
|
lua.execute = (cat, (system.env, HOME), "/.config/rtorrent/rtorrent.rc.lua")
|
|
|
|
]]--
|
|
|
|
--[[ Bootstrap START ]]--
|
|
|
|
local rtorrent = require('rtorrent')
|
|
rc = rtorrent.autocall
|
|
|
|
--[[ Helper functions ]]--
|
|
|
|
local function makeArgs(cmdline)
|
|
return 'sh', '-c', "'"..table.concat(cmdline, "' '").."'"
|
|
end
|
|
|
|
-- Instance layout (base paths)
|
|
local home = os.getenv('HOME')
|
|
|
|
local cfg = {}
|
|
cfg.basedir = home..'/rtorrent/'
|
|
cfg.download = cfg.basedir..'download/'
|
|
cfg.logs = cfg.basedir..'log/'
|
|
cfg.logfile = cfg.logs..'rtorrent-'..rc.system.time()..'.log'
|
|
cfg.session = cfg.basedir..'.session/'
|
|
cfg.watch = cfg.basedir..'watch/'
|
|
|
|
rc.method.insert('cfg.download', 'private|const|string', cfg.download)
|
|
rc.method.insert('cfg.logs', 'private|const|string', cfg.logs)
|
|
rc.method.insert('cfg.logfile', 'private|const|string', cfg.logfile)
|
|
rc.method.insert('cfg.session', 'private|const|string', cfg.session)
|
|
rc.method.insert('cfg.watch', 'private|const|string', cfg.watch)
|
|
|
|
-- Create instance directories
|
|
rc.execute.throw(
|
|
makeArgs({'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)
|
|
rc.network.port_range = '50000-50000'
|
|
rc.network.port_random = false
|
|
|
|
-- Tracker-less torrent and UDP tracker support
|
|
-- (conservative settings for 'private' trackers, change for 'public')
|
|
rc.dht.mode = 'disable'
|
|
rc.protocol.pex = false
|
|
rc.trackers.use_udp = false
|
|
|
|
-- Peer settings
|
|
rc.throttle.max_uploads = 100
|
|
rc.throttle.max_uploads.global = 250
|
|
|
|
rc.throttle.min_peers.normal = 20
|
|
rc.throttle.max_peers.normal = 60
|
|
rc.throttle.min_peers.seed = 30
|
|
rc.throttle.max_peers.seed = 80
|
|
rc.trackers.numwant = 80
|
|
|
|
rc.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!
|
|
rc.network.http.max_open = 50
|
|
rc.network.max_open_files = 600
|
|
rc.network.max_open_sockets = 300
|
|
|
|
-- Memory resource usage (increase if you have a large number of items loaded,
|
|
-- and/or the available resources to spend)
|
|
rc.pieces.memory.max = '1800M'
|
|
rc.network.xmlrpc.size_limit = '4M'
|
|
|
|
-- Basic operational settings (no need to change these)
|
|
rc.session.path = cfg.session
|
|
rc.directory.default = cfg.download
|
|
rc.log.execute(cfg.logs.."execute.log")
|
|
--rc.log.xmlrpc(cfg.logs.."xmlrpc.log")
|
|
rc.execute.nothrow(
|
|
"sh", "-c", table.concat(
|
|
{"echo >", rc.session.path(), "rtorrent.pid", " ", rc.system.pid()
|
|
}))
|
|
|
|
-- Other operational settings (check & adapt)
|
|
rc.encoding.add('utf8')
|
|
rc.system.umask = 0027
|
|
rc.system.cwd = rc.directory.default()
|
|
rc.network.http.dns_cache_timeout = 25
|
|
rc.schedule2('monitor_diskspace', '15', '60', 'close_low_diskspace=1000M')
|
|
--rc.pieces.hash.on_completion = false
|
|
--rc.view.sort_current('seeding', 'greater=d.ratio=')
|
|
--rc.keys.layout = 'qwerty'
|
|
--rc.network.http.capath = '/etc/ssl/certs'
|
|
--rc.network.http.ssl_verify_peer = 0
|
|
--rc.network.http.ssl_verify_host = 0
|
|
--rc.network.rpc.use_xmlrpc = true
|
|
--rc.network.rpc.use_jsonrpc = true
|
|
|
|
-- Some additional values and commands
|
|
-- NOTE: just common names, not commands
|
|
rc.method.insert('system.startup_time', 'value|const', rc.system.time())
|
|
rc.method.insert('d.data_path', 'simple',
|
|
[[if=(d.is_multi_file),
|
|
(cat, (d.directory), /),
|
|
(cat, (d.directory), /, (d.name))]])
|
|
rc.method.insert('d.session_file', 'simple', 'cat=(session.path), (d.hash), .torrent')
|
|
|
|
-- Watch directories (add more as you like, but use unique schedule names)
|
|
rc.schedule2('watch_start', '10', '10', 'load.start_verbose=(cat, (cfg.watch), "start/*.torrent")')
|
|
rc.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)
|
|
--rc.system.daemon = true
|
|
--rc.network.scgi.open_local(cfg.session..'rtorrent.sock')
|
|
--rc.execute.nothrow('chmod', '770', cfg.session..'rtorrent.sock')
|
|
|
|
-- Logging:
|
|
-- Levels = critical error warn notice info debug
|
|
-- Groups = connection_* dht_* peer_* rpc_* storage_* thread_* tracker_* torrent_*
|
|
rc.print('Logging to '..rc.cfg.logfile())
|
|
rc.log.open_file('log', rc.cfg.logfile())
|
|
rc.log.add_output('info', 'log')
|
|
--rc.log.add_output('tracker_events', 'log')
|
|
--rc.log.add_output('tracker_requests', 'log')
|
|
|
|
--[[ END of rtorrent.rc.lua ]]--
|