Table of Contents

About

This is a rtorrent-rutorrent combo created by crazy-max but with some changes that make the build more applicable to use with PVRs such as Sonarr, Lidarr, etc.

Source

The sources can be downloaded from the Wizardry and Steamworks Subversion:

Usage

The usage is documented on the original repository page by crazy-max and can be found on github.

Differences

The following changes have been made to the current crazy-max releases:

  • rTorrent has been downgraded to 0.9.8 and the configuration adapted to match,
  • temp and complete folders have both been remapped into downloads for compatibility with PVRs

Because the Dockerfile needs additional components, the build environment can be downloaded via the SVN and the following is just a patch in order to be able to inspect the changes.

diff --git a/Dockerfile b/Dockerfile
index 4429594..f6a8b17 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,9 +12,9 @@ ARG GEOIP2_RUTORRENT_VERSION=4ff2bde530bb8eef13af84e4413cedea97eda148
 ARG DUMP_TORRENT_VERSION=302ac444a20442edb4aeabef65b264a85ab88ce9
 
 # libtorrent v0.15.3
-ARG LIBTORRENT_VERSION=0cb559ea23fa67ded8aea69c93cba50ae0ab243f
+ARG LIBTORRENT_VERSION=756f70010779927dc0691e1e722ed433d5d295e1
 # rtorrent v0.15.3
-ARG RTORRENT_VERSION=6f8c1246dc013d1d5c39ecd66373346ac42fe746
+ARG RTORRENT_VERSION=6154d1698756e0c4842b1c13a0e56db93f1aa947
 
 ARG ALPINE_VERSION=3.21
 ARG ALPINE_S6_VERSION=${ALPINE_VERSION}-2.2.0.3
@@ -86,6 +86,7 @@ RUN apk --update --no-cache add \
     brotli-dev \
     build-base \
     cppunit-dev \
+    cppunit \
     cmake \
     gd-dev \
     geoip-dev \
@@ -102,9 +103,16 @@ RUN apk --update --no-cache add \
     tar \
     tree \
     xz \
-    zlib-dev
+    zlib-dev \
+    xmlrpc-c \
+    xmlrpc-c-dev \
+    libcurl \
+    distcc
 
 ENV DIST_PATH="/dist"
+ENV DISTCC_HOSTS="docker1.internal:35001 docker2.internal:35002"
+ENV CC="distcc"
+ENV CXX="distcc g++"
 
 WORKDIR /usr/local/src/libsig
 COPY --from=src-libsig /src .
@@ -142,7 +150,7 @@ RUN tree ${DIST_PATH}
 WORKDIR /usr/local/src/rtorrent
 COPY --from=src-rtorrent /src .
 RUN autoreconf -vfi
-RUN ./configure --with-xmlrpc-tinyxml2 --with-ncurses
+RUN ./configure --with-xmlrpc-c --with-ncurses --with-libcurl
 RUN make -j$(nproc) CXXFLAGS="-w -O3 -flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
 RUN make install -j$(nproc)
 RUN make DESTDIR=${DIST_PATH} install -j$(nproc)
@@ -246,6 +254,8 @@ RUN apk --update --no-cache add \
     unzip \
     util-linux \
     zip \
+    cppunit=1.15.1-r4 \
+    xmlrpc-c \
   && pip3 install --upgrade --break-system-packages pip \
   && pip3 install --break-system-packages cfscrape cloudscraper \
   && addgroup -g ${PGID} rtorrent \
diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh
index d8594c1..addb22d 100644
--- a/rootfs/etc/cont-init.d/03-config.sh
+++ b/rootfs/etc/cont-init.d/03-config.sh
@@ -150,9 +150,11 @@ mkdir -p /data/geoip \
   /data/rutorrent/plugins-conf \
   /data/rutorrent/share/users \
   /data/rutorrent/share/torrents \
-  /data/rutorrent/themes \
-  /downloads/complete \
-  /downloads/temp
+  /data/rutorrent/themes/
+  /downloads
+# x rtorrent 0.9.8
+#  /downloads/complete \
+#  /downloads/temp
 touch /passwd/rpc.htpasswd \
   /passwd/rutorrent.htpasswd \
   /passwd/webdav.htpasswd \
@@ -397,9 +399,10 @@ chown rtorrent:rtorrent \
   /data/rutorrent/share/users \
   /data/rutorrent/share/torrents \
   /downloads \
-  /downloads/complete \
-  /downloads/temp \
   "${RU_LOG_FILE}"
+# x rtorrent 0.9.8
+#  /downloads/complete \
+#  /downloads/temp \
 chown -R rtorrent:rtorrent \
   /data/geoip \
   /data/rtorrent/log \
diff --git a/rootfs/tpls/etc/rtorrent/.rtlocal.rc b/rootfs/tpls/etc/rtorrent/.rtlocal.rc
index 7f6d497..3049957 100644
--- a/rootfs/tpls/etc/rtorrent/.rtlocal.rc
+++ b/rootfs/tpls/etc/rtorrent/.rtlocal.rc
@@ -4,8 +4,11 @@ system.daemon.set = true
 # Instance layout
 method.insert = cfg.basedir, private|const|string, (cat,"/data/rtorrent/")
 method.insert = cfg.download, private|const|string, (cat,"/downloads/")
-method.insert = cfg.download_complete, private|const|string, (cat,(cfg.download),"complete/")
-method.insert = cfg.download_temp, private|const|string, (cat,(cfg.download),"temp/")
+# x rtorrent 0.9.8
+#method.insert = cfg.download_complete, private|const|string, (cat,(cfg.download),"complete/")
+#method.insert = cfg.download_temp, private|const|string, (cat,(cfg.download),"temp/")
+method.insert = cfg.download_complete, (cat,(cfg.download))
+method.insert = cfg.download_temp, (cat,(cfg.download))
 method.insert = cfg.logs, private|const|string, (cat,(cfg.basedir),"log/")
 method.insert = cfg.session, private|const|string, (cat,(cfg.basedir),".session/")
 method.insert = cfg.watch, private|const|string, (cat,(cfg.basedir),"watch/")
@@ -15,7 +18,9 @@ method.insert = cfg.rundir, private|const|string, (cat,"/var/run/rtorrent/")
 method.insert = d.data_path, simple, "if=(d.is_multi_file), (cat,(d.directory),/), (cat,(d.directory),/,(d.name))"
 
 # Default directory to save the downloaded torrents
-directory.default.set = (cat,(cfg.download_temp))
+# x rtorrent 0.9.8
+#directory.default.set = (cat,(cfg.download_temp))
+directory.default.set = (cat,(cfg.download))
 
 # Default session directory
 session.path.set = (cat,(cfg.session))
@@ -45,7 +50,8 @@ schedule2 = session_save, 1200, @RT_SESSION_SAVE_SECONDS@, ((session.save))
 method.set_key = event.download.inserted_new, "schedule2 = ((d.hash)), 0, 0, ((d.save_full_session))"
 
 # Configure whether to delay tracker announces at startup
-trackers.delay_scrape = @RT_TRACKER_DELAY_SCRAPE@
+# x rtorrent 0.9.8
+#trackers.delay_scrape = @RT_TRACKER_DELAY_SCRAPE@
 
 # Configure TCP rmem and wmem for rTorrent client
 network.send_buffer.size.set = @RT_SEND_BUFFER_SIZE@

assets/docker/build/rtorrent/0.9.8-rutorrent.txt ยท Last modified: 2025/05/31 05:03 by office

Wizardry and Steamworks

© 2025 Wizardry and Steamworks

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.