# rTorrent Configuration Template ## Overview This page contains a modern rTorrent configuration that provides a good starting point. Its expressed purpose is to replace that years-old rotting piece of garbage that people still use to create their first configuration. Friends don't let friends use that! A detailed explanation of this configuration can be found at [Config Template Deconstructed](http://rtorrent-docs.readthedocs.io/en/latest/cookbook.html#config-template-deconstructed). It uses `0.9.x` syntax and is tested using `0.9.6`, so be sure to run snippets you add through the [migration script](https://github.com/rakshasa/rtorrent/wiki/RPC-Migration-0.9). Be considerate in what you add, this is supposed to help new users to jump-start their installation, so keep things out that are not applicable to a wide range of people. Place advanced use-cases in the appropriate sections of the wiki, like the [Configuration Guide](https://github.com/rakshasa/rtorrent/wiki/Config-Guide). ## Using the Template Use these commands to get a copy of the template to your disk (note that this **overwrites** an existing `~/.rtorrent.rc` you might have), and create the root directory for your instance: ```sh curl -Ls "https://raw.githubusercontent.com/wiki/rakshasa/rtorrent/CONFIG-Template.md" \ | sed -ne "/^######/,/^### END/p" \ | sed -re "s:/home/USERNAME:$HOME:" >~/.rtorrent.rc mkdir -p ~/rtorrent/ ``` Then (re-)start rTorrent. ## The Template Also see [Load ‘Drop-In’ Config Fragments](http://rtorrent-docs.readthedocs.io/en/latest/use-cases.html#drop-in-config) on how to extend this so you can load extensions to this template from files in a ``config.d`` directory. ```ini ############################################################################# # 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,"/home/USERNAME/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 = 50000-50000 network.port_random.set = no ## Tracker-less torrent and UDP tracker support ## (conservative settings for 'private' trackers, change for 'public') dht.mode.set = disable protocol.pex.set = no trackers.use_udp.set = no ## Peer settings throttle.max_uploads.set = 100 throttle.max_uploads.global.set = 250 throttle.min_peers.normal.set = 20 throttle.max_peers.normal.set = 60 throttle.min_peers.seed.set = 30 throttle.max_peers.seed.set = 80 trackers.numwant.set = 80 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 ## Memory resource usage (increase if you have a large number of items loaded, ## and/or the available resources to spend) pieces.memory.max.set = 1800M 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 = UTF-8 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 = no #view.sort_current = seeding, greater=d.ratio= #keys.layout.set = qwerty #network.http.capath.set = "/etc/ssl/certs" #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) ## Add torrent schedule2 = watch_load, 11, 10, ((load.verbose, (cat, (cfg.watch), "load/*.torrent"))) ## Add & download straight away schedule2 = watch_start, 10, 10, ((load.start_verbose, (cat, (cfg.watch), "start/*.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),rpc.socket) #execute.nothrow = chmod,770,(cat,(session.path),rpc.socket) ## 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" ### END of rtorrent.rc ### ```