/speedrr

Dynamically manage upload speeds on torrent clients, with Plex/Jellyfin intergration.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

speedrr

speedrr - Dynamic Upload Speed Manager for Torrenting

Change your torrent client's upload speed dynamically, on certain events such as:

  • When a Plex/Jellyfin stream starts
  • Time of day and day of the week
  • More coming soon!

This script is ideal for users with limited upload speed, however anyone can use it to maximise their upload speed, whilst keeping their Plex/Jellyfin streams buffer-free!

Features

  • Multi-server support for Plex, Jellyfin, and Tautulli.
  • Supports qBittorrent (more clients soon, maybe).
  • Multi-torrent-client support.
    • Bandwidth is split between them, by number of downloading/uploading torrents.
  • Schedule a time/day when upload speed should be lowered.

Setup

Docker

Pull the image with:

docker pull itschasa/speedrr

Your config file should be stored outside of the container, for easy editing.

You can then add a volume to the container (like /data/), which points to a folder where your config is stored.

Example docker run command:

docker run -d
    -e SPEEDRR_CONFIG=/data/config.yaml
    -v /folder_with_config/:/data/
    --name speedrr
    --network host
    itschasa/speedrr

Unraid

  1. Open your console and run the following command:
cd /boot/config/plugins/dockerMan/templates-user && touch my-speedrr.xml && nano my-speedrr.xml
  1. Go to speedrr-unraid.xml, and copy and paste it into your console.
  2. Press Ctrl+O, then Enter, then Ctrl+X (to save the file and exit).
  3. Open your WebUI > Docker > Add Container.
  4. Click Select a template, and select speedrr.
  5. The options should be fine as they are defaulted. Apply changes.
  6. Using the template, create config.yaml in your /appdata/speedrr/ folder, and fill out the config.
  7. Start/Restart the container in the WebUI.
  8. Check everything is working in the logs (Docker Logs).

Source

  1. Download the source code.
  2. Install Python 3.10 (other versions should work).
  3. Install the required modules with python -m pip install -r requirements.txt.
  4. Edit the config to your liking.
  5. Run python main.py --config_path config.yaml to start.

Contributing

Anyone is welcome to contribute! Feel free to open pull requests.

Issues and Bugs

Please report any bugs in the Issues section.

Feature Suggestions

Got an idea for the project? Suggest it here!