Instal rutorrent in docker with rtorrent

This is probably the easiest way to set up a rutorrent with torrent in docker. The Project is managed in the following repository. Rutorrent is the most popular BitTorrent client to run on the web.

https://github.com/mondediefr/ and is actively developed.

Our special Thanks to Magicalex for actively maintaining and updating it.

I believe it would be beneficial to clarify that a pre-existing docker environment is necessary for the task.

Important points to know about this rutorrent installation

Docker Properties

  • Cross-platform image: linux/amd64, linux/arm64
  • Docker container based on Alpine Linux.
  • Provides a solid, out-of-the-box configuration by default.
  • No root process.
  • The ability for custom rtorrent and rutorrent configurations.
  • You can add your plugins and themes.
  • Filebot is included, and create symlinks in /data/media (choose the filebot tag).

Tag available

  • latest (Dockerfile)
  • filebot (Dockerfile)

Build Docker image

Build arguments

Argument Type Default value Description
FILEBOT optional False Build with filebot
FILEBOT_VER Optional 4.9.1 Filebot version
CHROMAPRINT_VER Optional 1.4.3 Chromaprint version

Build

docker build --tag mondedie/rutorrent:latest https://github.com/mondediefr/docker-rutorrent.git

Build with arguments

docker build --tag mondedie/rutorrent:filebot --build-arg FILEBOT=true https://github.com/mondediefr/docker-rutorrent.git

Setup values for rutorrent docker

Environment variables without FileBot

Variable Type Default value Description
UID optional 991 UID to launch rtorrent
GID optional 991 GID to launch rtorrent
PORT_RTORRENT optional 45000 Port for rtorrent
DHT_RTORRENT optional Off Option for DHT in rtorrent.rc file
CHECK_PERM_DATA optional true Check permissions in the downloads folder
HTTP_AUTH optional true Enable HTTP authentication

Environment Variables for FileBot

Variable Type Default value Description
FILEBOT_LICENSE required None License File Path
FILEBOT_RENAME_METHOD optional Symlink Media Renaming Method
FILEBOT_LANG optional fr Set your language
FILEBOT_CONFLICT optional Skip Conflict Management

Volumes

  • /data: Folder for downloading torrents
  • /config: Folder for rtorrent/rutorrent configurations

Folder tree

  • /data/.watch: watch directory for rtorrent
  • /data/.session: rtorrent backup
  • /data/downloads: rtorrent download here
  • /data/media: Organize your media and create a symbolic link with Filebot
  • /config/rtorrent: path to .rtorrent.rc
  • /config/rutorrent/conf: global configuration for rutorrent
  • /config/rutorrent/share: Rutorrent user configuration and cache
  • /config/custom_plugins: add your plugins here
  • /config/custom_themes: Add your themes here
  • /config/filebot: folder for the FileBot license file
  • /config/filebot/args_amc.txt : configuration of fn:amc script of filebot
  • /config/filebot/postdl: Adjust the postdl script, examples here

Ports

  • 8080
  • PORT_RTORRENT ( default : 45000 )

That’s it for the moment we’ve seen the technical part. It is important to read it to understand the folder tree.

Uses

Simple launch

docker run --name rutorrent -dt \
  -e UID=1000 \
  -e GID=1000 \
  -p 8080:8080 \
  -p 45000:45000 \
  -v /mnt/docker/rutorrent/config:/config \
  -v /mnt/docker/rutorrent/data:/data \
mondedie/rutorrent:latest

with docker-compose you can choose the version of rutorrent:

version: "3.8"
services:
  rutorrent:
    image: mondedie/rutorrent:latest
    container_name: rutorrent
    environment:
      - UID=1000
      - GID=1000
    volumes:
      - /path/to/rutorrent/config:/config
      - /path/to/rutorrent/data:/data
    ports:
      - 8080:8080
      - 45000:45000
    restart: unless-stopped

URL: http://xx.xx.yy.zz:8080
remember to adapt with your tree structure and the UID and GID with your users./mnt/docker/rutorrent/*

Advanced Launch with FileBot

docker run --name rutorrent -dt \
  -e UID=1000 \
  -e GID=1000 \
  -e DHT_RTORRENT=on \
  -e PORT_RTORRENT=6881 \
  -e FILEBOT_LICENSE=/config/filebot/FileBot_License_XXXXXXXXX.psm \
  -e FILEBOT_RENAME_METHOD=move \
  -p 9080:8080 \
  -p 6881:6881 \
  -p 6881:6881/udp \
  -v /mnt/docker/rutorrent/config:/config \
  -v /mnt/docker/rutorrent/data:/data \
mondedie/rutorrent:filebot

with docker-compose:

version: "3.8"
services:
  rutorrent:
    image: mondedie/rutorrent:filebot
    container_name: rutorrent
    environment:
      - UID=1000
      - GID=1000
	  - DHT_RTORRENT=on
	  - PORT_RTORRENT=6881
	  - FILEBOT_LICENSE=/config/filebot/FileBot_License_XXXXXXXXX.psm
	  - FILEBOT_RENAME_METHOD=move
    volumes:
      - /path/to/rutorrent/config:/config
      - /path/to/rutorrent/data:/data
    ports:
      - 9080:8080
	  - 6881:6881
      - 6881:6881/udp
    restart: unless-stopped

URL: http://xx.xx.yy.zz:9080

Example of a more in-depth launch by @Aerya

docker run -dt \
--name=rutorrentseries \
--restart always \
-e HTTP_AUTH=true \
-e CHECK_PERM_DATA=false \
-p 9202:8080 \
-p 47918:45000 \
-v /home/aerya/docker/rutorrentseries:/config \
-v /home/aerya/mnt/PreSeries:/data/downloads \
-v /home/aerya/mnt/sourcetorrents/PreSeries:/data/.watch \
-v /home/aerya/docker/rutorrentseries/session:/data/.session \
--label=com.centurylinklabs.watchtower.enable=true \
mondedie/rutorrent:latest

Add custom plugin to rutorrent docker:

mkdir -p /mnt/docker/rutorrent/config/custom_plugins
git clone https://github.com/Gyran/rutorrent-ratiocolor.git /mnt/docker/rutorrent/config/custom_plugins

Add HTTP authentication

docker run --name rutorrent -dt \
  -e UID=1000 \
  -e GID=1000 \
  -e PORT_RTORRENT=46000 \
  -e HTTP_AUTH=true \
  -p 8080:8080 \
  -p 46000:46000 \
  -v /mnt/docker/rutorrent/config:/config \
  -v /mnt/docker/rutorrent/data:/data \
mondedie/rutorrent:latest

Generate your password:

docker exec -it rutorrent gen-http-passwd
Username: torrent
Password:
Verifying - Password:
Password was generated for the http user: torrent

Open your browser and type: http://xx.xx.xx.xx:8080

That’s it, I think I’ve covered how to install and use the mondedie image.
Thank you @Magicalex for allowing me to take over his Github README.

Head of Operations Evoseedbox

Website | + posts

DevOps pro Tim Michels breaks down complex tech concepts into easy-to-follow tutorials, making digital privacy accessible to everyone. Find his work on TorrentFr, PassVault.me, and more.