All Projects → crazy-max → Docker Rtorrent Rutorrent

crazy-max / Docker Rtorrent Rutorrent

Licence: mit
rTorrent and ruTorrent Docker image based on Alpine Linux

Projects that are alternatives of or similar to Docker Rtorrent Rutorrent

Dockerfiles
lots of dockerfiles, based on alpine
Stars: ✭ 69 (-8%)
Mutual labels:  rtorrent, rutorrent, nginx
Rutorrent Bonobox
Auto install script for rTorrent with ruTorrent
Stars: ✭ 161 (+114.67%)
Mutual labels:  rtorrent, rutorrent, nginx
Dockerfiles
Discontinued. Fork at your will.
Stars: ✭ 384 (+412%)
Mutual labels:  rtorrent, alpine-linux, nginx
Swizzin
A simple, modular seedbox solution
Stars: ✭ 888 (+1084%)
Mutual labels:  rtorrent, rutorrent, nginx
Rtinst
seedbox installation script for Ubuntu and Debian systems
Stars: ✭ 1,029 (+1272%)
Mutual labels:  rtorrent, rutorrent, nginx
Pimp My Box
🌱 Automated seedbox install of rTorrent-PS and PyroScope CLI etc. via Ansible.
Stars: ✭ 127 (+69.33%)
Mutual labels:  rtorrent, rutorrent
Arch Rtorrentvpn
Docker build script for Arch Linux base with ruTorrent, rTorrent, autodl-irssi, Privoxy and OpenVPN
Stars: ✭ 185 (+146.67%)
Mutual labels:  rtorrent, rutorrent
Thoradia
Thoradia Add-ons Repository
Stars: ✭ 208 (+177.33%)
Mutual labels:  rtorrent, rutorrent
MySB
MySB (MySeedBox) is more than a simplified installation script of a multi-users Seedbox. There are many solutions to install a Seedbox, but we never talk about safety and regular operations. MySB could be renamed MySSB (MySecuredSeedBox).
Stars: ✭ 105 (+40%)
Mutual labels:  rtorrent, rutorrent
seedbox-from-scratch
The Dockered Seedbox From Scratch Mod 2 Script
Stars: ✭ 14 (-81.33%)
Mutual labels:  rtorrent, rutorrent
Docker
LibreNMS Docker image based on Alpine Linux and Nginx
Stars: ✭ 283 (+277.33%)
Mutual labels:  alpine-linux, nginx
Docker Wordpress
WordPress container with Nginx 1.16 & PHP-FPM 7.3 based on Alpine Linux
Stars: ✭ 148 (+97.33%)
Mutual labels:  alpine-linux, nginx
Docker Matomo
Matomo (formerly Piwik) Docker image based on Alpine Linux
Stars: ✭ 117 (+56%)
Mutual labels:  alpine-linux, nginx
Docker Oidc Proxy
Docker Image built on Alpine Linux for secure OpenID Connect (OIDC) proxy authentication
Stars: ✭ 91 (+21.33%)
Mutual labels:  alpine-linux, nginx
Docker Alpine
Docker containers running Alpine Linux and s6 for process management. Solid, reliable containers.
Stars: ✭ 574 (+665.33%)
Mutual labels:  alpine-linux, nginx
Docker Php Nginx
Docker image with Nginx 1.18 & PHP-FPM 7.4 on Alpine Linux
Stars: ✭ 581 (+674.67%)
Mutual labels:  alpine-linux, nginx
Rtorrent Cleaner
🧹 rtorrent-cleaner is a tool to clean up unnecessary files in rtorrent
Stars: ✭ 36 (-52%)
Mutual labels:  rtorrent, rutorrent
Docker Flarum
Flarum Docker image based on Alpine Linux
Stars: ✭ 43 (-42.67%)
Mutual labels:  alpine-linux, nginx
Nginx Sysvinit Script
Linux Standard Base compliant SysVinit script for nginx.
Stars: ✭ 66 (-12%)
Mutual labels:  nginx
Wheel Of Lunch
HTML5 randomised spinning wheel to select a place to eat by using a RESTful API to fetch local places.
Stars: ✭ 70 (-6.67%)
Mutual labels:  nginx

Latest Version Build Status Docker Stars Docker Pulls
Become a sponsor Donate Paypal

About

rTorrent and ruTorrent Docker image based on Alpine Linux.
If you are interested, check out my other Docker images!

💡 Want to be notified of new releases? Check out 🔔 Diun (Docker Image Update Notifier) project!


Features

  • Run as non-root user
  • Multi-platform image
  • Latest rTorrent / libTorrent release compiled from source
  • Latest ruTorrent release
  • Name resolving enhancements with c-ares for asynchronous DNS requests (including name resolves)
  • Enhanced rTorrent config and bootstraping with a local config
  • WAN IP address automatically resolved for reporting to the tracker
  • XMLRPC through nginx over SCGI socket (basic auth optional)
  • WebDAV on completed downloads (basic auth optional)
  • Ability to add a custom ruTorrent plugin / theme
  • Allow persisting specific configuration for ruTorrent plugins
  • ruTorrent GeoIP2 plugin
  • mktorrent installed for ruTorrent create plugin
  • Traefik Docker image as reverse proxy and creation/renewal of Let's Encrypt certificates (see this template)
  • geoip-updater Docker image to download MaxMind's GeoIP2 databases on a time-based schedule for geolocation

Build locally

git clone https://github.com/crazy-max/docker-rtorrent-rutorrent.git
cd docker-rtorrent-rutorrent

# Build image and output to docker (default)
docker buildx bake

# Build image
docker buildx bake image

# Build multi-platform image
docker buildx bake image-all

Image

Registry Image
Docker Hub crazymax/rtorrent-rutorrent
GitHub Container Registry ghcr.io/crazy-max/rtorrent-rutorrent

Following platforms for this image are available:

$ docker run --rm mplatform/mquery crazymax/rtorrent-rutorrent:latest
Image: crazymax/rtorrent-rutorrent:latest
 * Manifest List: Yes
 * Supported platforms:
   - linux/amd64
   - linux/arm/v6
   - linux/arm/v7
   - linux/arm64

Environment variables

General

  • TZ: The timezone assigned to the container (default: UTC)
  • PUID: rTorrent user id (default 1000)
  • PGID: rTorrent group id (default 1000)
  • WAN_IP: Public IP address reported to the tracker (default auto resolved with dig +short myip.opendns.com @resolver1.opendns.com)
  • MEMORY_LIMIT: PHP memory limit (default: 256M)
  • UPLOAD_MAX_SIZE: Upload max size (default: 16M)
  • CLEAR_ENV: Clear environment in FPM workers (default yes)
  • OPCACHE_MEM_SIZE: PHP OpCache memory consumption (default: 128)
  • MAX_FILE_UPLOADS: The maximum number of files allowed to be uploaded simultaneously (default: 50)
  • REAL_IP_FROM: Trusted addresses that are known to send correct replacement addresses (default 0.0.0.0/32)
  • REAL_IP_HEADER: Request header field whose value will be used to replace the client address (default X-Forwarded-For)
  • LOG_IP_VAR: Use another variable to retrieve the remote IP address for access log_format on Nginx. (default remote_addr)
  • XMLRPC_AUTHBASIC_STRING: Message displayed during validation of XMLRPC Basic Auth (default: rTorrent XMLRPC restricted access)
  • RUTORRENT_AUTHBASIC_STRING: Message displayed during validation of ruTorrent Basic Auth (default: ruTorrent restricted access)
  • WEBDAV_AUTHBASIC_STRING: Message displayed during validation of WebDAV Basic Auth (default: WebDAV restricted access)

rTorrent

  • RT_LOG_LEVEL: rTorrent log level (default: info)
  • RT_LOG_EXECUTE: Log executed commands to /data/rtorrent/log/execute.log (default: false)
  • RT_LOG_XMLRPC: Log XMLRPC queries to /data/rtorrent/log/xmlrpc.log (default: false)

ruTorrent

  • RU_REMOVE_CORE_PLUGINS: Remove ruTorrent core plugins ; comma separated (default: erasedata,httprpc)
  • RU_HTTP_USER_AGENT: ruTorrent HTTP user agent (default: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0)
  • RU_HTTP_TIME_OUT: ruTorrent HTTP timeout in seconds (default: 30)
  • RU_HTTP_USE_GZIP: Use HTTP Gzip compression (default: true)
  • RU_RPC_TIME_OUT: ruTorrent RPC timeout in seconds (default: 5)
  • RU_LOG_RPC_CALLS: Log ruTorrent RPC calls (default: false)
  • RU_LOG_RPC_FAULTS: Log ruTorrent RPC faults (default: true)
  • RU_PHP_USE_GZIP: Use PHP Gzip compression (default: false)
  • RU_PHP_GZIP_LEVEL: PHP Gzip compression level (default: 2)
  • RU_SCHEDULE_RAND: Rand for schedulers start, +0..X seconds (default: 10)
  • RU_LOG_FILE: ruTorrent log file path for errors messages (default: /data/rutorrent/rutorrent.log)
  • RU_DO_DIAGNOSTIC: ruTorrent diagnostics like permission checking (default: true)
  • RU_SAVE_UPLOADED_TORRENTS: Save torrents files added wia ruTorrent in /data/rutorrent/share/torrents (default: true)
  • RU_OVERWRITE_UPLOADED_TORRENTS: Existing .torrent files will be overwritten (default: false)
  • RU_FORBID_USER_SETTINGS: If true, allows for single user style configuration, even with webauth (default: false)
  • RU_LOCALE: Set default locale for ruTorrent (default: UTF8)

Volumes

  • /data: rTorrent / ruTorrent config, session files, log, ...
  • /downloads: Downloaded files
  • /passwd: Contains htpasswd files for basic auth

⚠️ Note that the volumes should be owned by the user/group with the specified PUID and PGID. If you don't give the volumes correct permissions, the container may not start.

Ports

  • 6881: DHT UDP port (dht.port.set)
  • 8000: XMLRPC port through nginx over SCGI socket
  • 8080: ruTorrent HTTP port
  • 9000: WebDAV port on completed downloads
  • 50000: Incoming connections (network.port_range.set)

Usage

Docker Compose

Docker compose is the recommended way to run this image. Copy the content of folder examples/compose in /var/rtorrent-rutorrent/ on your host for example. Edit the compose file with your preferences and run the following command:

mkdir data downloads passwd
chown ${PUID}:${PGID} data downloads passwd
docker-compose up -d
docker-compose logs -f

Command line

You can also use the following minimal command:

mkdir data downloads passwd
chown ${PUID}:${PGID} data downloads passwd
docker run -d --name rtorrent_rutorrent \
  --ulimit nproc=65535 \
  --ulimit nofile=32000:40000 \
  -p 6881:6881/udp \
  -p 8000:8000 \
  -p 8080:8080 \
  -p 9000:9000 \
  -p 50000:50000 \
  -v $(pwd)/data:/data \
  -v $(pwd)/downloads:/downloads \
  -v $(pwd)/passwd:/passwd \
  crazymax/rtorrent-rutorrent:latest

Notes

XMLRPC through nginx

rTorrent 0.9.7+ has a built-in daemon mode disabling the user interface, so you can only control it via XMLRPC. Nginx will route XMLRPC requests to rtorrent through port 8000. These requests can be secured with basic authentication through the /passwd/rpc.htpasswd file in which you will need to add a username with his password. See below to populate this file with a user / password.

WebDAV

WebDAV allows you to retrieve your completed torrent files in /downloads/completed on port 9000. Like XMLRPC, these requests can be secured with basic authentication through the /passwd/webdav.htpasswd file in which you will need to add a username with his password. See below to populate this file with a user / password.

Populate .htpasswd files

For ruTorrent basic auth, XMLRPC through nginx and WebDAV on completed downloads, you can populate .htpasswd files with the following command:

docker run --rm -it httpd:2.4-alpine htpasswd -Bbn <username> <password> >> $(pwd)/passwd/webdav.htpasswd

Htpasswd files used:

  • rpc.htpasswd: XMLRPC through nginx
  • rutorrent.htpasswd: ruTorrent basic auth
  • webdav.htpasswd: WebDAV on completed downloads

Boostrap config .rtlocal.rc

When rTorrent is started the bootstrap config /etc/rtorrent/.rtlocal.rc is imported. This configuration cannot be changed unless you rebuild the image or overwrite these elements in your .rtorrent.rc. Here are the particular properties of this file:

  • system.daemon.set = true: Launcher rTorrent as a daemon
  • A config layout for the rTorrent's instance you can use in your .rtorrent.rc:
    • cfg.basedir: Home directory of rtorrent (/data/rtorrent/)
    • cfg.download: Download directory (/downloads/)
    • cfg.download_complete: Completed downloads (/downloads/completed/)
    • cfg.download_temp: Downloads in progress (/downloads/temp/)
    • cfg.logs: Logs directory (/data/rtorrent/log/)
    • cfg.session: Session directory (/data/rtorrent/.session/)
    • cfg.watch: Watch directory for torrents (/data/rtorrent/watch/)
    • cfg.rundir: Runtime data of rtorrent (/var/run/rtorrent/)
  • d.data_path: Config var to get the full path of data of a torrent (workaround for the possibly empty d.base_path attribute)
  • directory.default.set: Default directory to save the downloaded torrents (cfg.download_temp)
  • session.path.set: Default session directory (cfg.session)
  • PID file to /var/run/rtorrent/rtorrent.pid
  • network.scgi.open_local: SCGI local socket and make it group-writable and secure
  • network.port_range.set: Listening port for incoming peer traffic (50000-50000)
  • dht.port.set: UDP port to use for DHT (6881)
  • log.open_file: Default logging to /data/rtorrent/log/rtorrent.log
    • Log level can be modified with the environment variable RT_LOG_LEVEL
    • rpc_events are logged be default
    • To log executed commands, add the environment variable RT_LOG_EXECUTE
    • To log XMLRPC queries, add the environment variable RT_LOG_XMLRPC

Override or add a ruTorrent plugin/theme

You can add a plugin for ruTorrent in /data/rutorrent/plugins/. If you add a plugin that already exists in ruTorrent, it will be removed from ruTorrent core plugins and yours will be used. And you can also add a theme in /data/rutorrent/themes/. The same principle as for plugins will be used if you want to override one.

⚠️ Container has to be restarted to propagate changes

Edit a ruTorrent plugin configuration

As you probably know, plugin configuration is not outsourced in ruTorrent. Loading the configuration of a plugin is done via a conf.php file placed at the root of the plugin folder. To solve this issue with Docker, a special folder has been created in /data/rutorrent/plugins-conf to allow you to configure plugins. For example to configure the diskspace plugin, you will need to create the /data/rutorrent/plugins-conf/diskspace.php file with your configuration:

<?php

$diskUpdateInterval = 10;	// in seconds
$notifySpaceLimit = 512;	// in Mb
$partitionDirectory = null;	// if null, then we will check rtorrent download directory (or $topDirectory if rtorrent is unavailable)
				// otherwise, set this to the absolute path for checked partition. 

⚠️ Container has to be restarted to propagate changes

Upgrade

To upgrade, pull the newer image and launch the container:

docker-compose pull
docker-compose up -d

How can I help?

All kinds of contributions are welcome 🙌! The most basic way to show your support is to star 🌟 the project, or to raise issues 💬 You can also support this project by becoming a sponsor on GitHub 👏 or by making a Paypal donation to ensure this journey continues indefinitely! 🚀

Thanks again for your support, it is much appreciated! 🙏

License

MIT. See LICENSE for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].