From 7cd04fb54ec5b547e8ffc2f6d9686549e9fc0163 Mon Sep 17 00:00:00 2001 From: eater <=@eater.me> Date: Mon, 1 Jun 2020 21:53:24 +0200 Subject: [PATCH] rtorrent: add --- rtorrent/Dockerfile | 6 ++ rtorrent/files/rtorrent.rc | 122 +++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 rtorrent/Dockerfile create mode 100644 rtorrent/files/rtorrent.rc diff --git a/rtorrent/Dockerfile b/rtorrent/Dockerfile new file mode 100644 index 0000000..560fc13 --- /dev/null +++ b/rtorrent/Dockerfile @@ -0,0 +1,6 @@ +FROM d.xr.to/base +RUN xbps-remote rtorrent +COPY files/rtorrent.rc /data/rtorrent.rc +VOLUME ["/data"] +WORKDIR "/data" +CMD ["rtorrent", "-n", "-o", "system.daemon.set=true", "-o", "import=/data/rtorrent.rc", "-s", "/data"] diff --git a/rtorrent/files/rtorrent.rc b/rtorrent/files/rtorrent.rc new file mode 100644 index 0000000..88feb75 --- /dev/null +++ b/rtorrent/files/rtorrent.rc @@ -0,0 +1,122 @@ +############################################################################# +# 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,"/data/") +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 = 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 = 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 ###