An open source command line RatioMaster with an optional WebUI.
Find a file
2017-10-21 01:06:43 +02:00
.mvn/wrapper Introduce spring & create new package structure 2017-05-04 20:36:48 +02:00
readme-assets Add supported clients to readme 2017-07-19 21:44:12 +02:00
resources Add utorrent 3.5.0 build 44090 2017-10-21 01:06:43 +02:00
src Refactor peerid provider 2017-10-19 00:08:11 +02:00
.dockerignore [skip ci] prepare dockerfile 2017-10-08 23:14:46 +02:00
.gitignore Prepare version 1.0.1 2017-03-14 02:07:26 +01:00
.travis.yml Add release name to travis deploy 2017-09-12 00:48:44 +02:00
Dockerfile Fix missing backslash in dockerfile 2017-10-18 17:13:13 +02:00
Dockerfile.arm [skip ci] prepare dockerfile 2017-10-08 23:14:46 +02:00
LICENSE Add Apache 2.0 licence 2017-04-23 15:19:01 +02:00
pom.xml [skip ci] Updates Springboot and log4j version 2017-10-06 23:37:53 +02:00
publish.sh Added publish.sh script to trigger a github release 2017-09-12 01:07:04 +02:00
README.md [skip ci] make it more clear how to build docker image 2017-10-21 01:06:43 +02:00
THANKS.md Updated THANKS.md 2017-10-21 01:06:42 +02:00

Build Status

JOAL

This is the server application (with an optional webui), if you are interested in the desktop app look at here.

Which client can JOAL emulate?

Client Support Comment
BitComet FUCK NO ! Will never be !
BitTorrent Yes
Deluge Yes
qBittorrent Yes
rTorrent Yes
Transmission Yes
µTorrent Yes
Vuze Azureus Yes Will soon be
Vuze Leap Yes

If your favorite client is not yet supported feel free to ask (except for BitComet).
Ask for it in GitHub issues or mail joal.contact@gmail.com.

Getting started

Download the latest tar.gz release. Put config.json, clients, and torrents folder into the location of your choice (this will be your configuration folder). For the rest of this README, it will be named joal-conf.

How to run

java -Djava.net.preferIPv6Addresses=true -jar .\jack-of-all-trades-X.X.X.jar --joal-conf="PATH_TO_CONF" 
  • -Djava.net.preferIPv6Addresses=true: is for instruct the JVM to prefer ipv6, if you ISP does not support ipv6 don't prepend this parameter.
  • --joal-conf=PATH_TO_CONF is a required argument: path to the joal-conf folder (ie: /home/anthony/joal-conf).

By default the web-ui is disabled, you can enable it with some more arguments:
  • --spring.main.web-environment=true: to enable the web context.
  • --server.port=YOUR_PORT: the port to be used for both HTTP and WebSocket connection.
  • --joal.ui.path.prefix="SECRET_OBFUSCATION_PATH": use your own complicated path here (this will be your first layer of security to keep joal secret). This is security though obscurity, but it is required in our case.
  • --joal.ui.secret-token="SECRET_TOKEN": use your own secret token here (this is some kind of a password, choose a complicated one).

Once joal is started head to: http://localhost:port/SECRET_OBFUSCATION_PATH/ui/ (obviously, replace SECRET_OBFUSCATION_PATH) by the value you had chosen The joal.ui.path.prefix might seems useless but it's actually crucial to set it as complex as possible to prevent peoples to know that joal is running on your server.

Start seeding

Just add some .torrent files to the joal-conf/torrents folder. There is no need to restart JOAL to add more torrents, add it to the folder and JOAL will be aware of after few seconds.

Docker

Build it:

docker build -f Dockerfile -t araymond/joal .

If you want to build the raspberry docker image replace Dockerfile with Dockerfile.arm.

Then run it: In next command you have to replace PORT, PATH_TO_CONF, SECRET_OBFUSCATION_PATH and SECRET_TOKEN.

docker run -d \
    -p PORT:PORT \
    -e _JAVA_OPTIONS='-Djava.net.preferIPv6Addresses=true' \
    -v PATH_TO_CONF:/data \
    --name="joal" araymond/joal \
    --joal-conf="/data" \
    --spring.main.web-environment=true \
    --server.port="PORT" \
    --joal.ui.path.prefix="SECRET_OBFUSCATION_PATH" \
    --joal.ui.secret-token="SECRET_TOKEN"

You can pass along all the CLI argument to customize JOAL.

Configuration file

Application configuration

The application configuration belongs in joal-conf/config.json.

{
  "minUploadRate" : 30,
  "maxUploadRate" : 160,
  "simultaneousSeed" : 20,
  "client" : "qbittorrent-3.3.16.client",
  "keepTorrentWithZeroLeechers" : true
}
  • minUploadRate : The minimum uploadRate you want to fake (in kB/s) (required)
  • maxUploadRate : The maximum uploadRate you want to fake (in kB/s) (required)
  • simultaneousSeed : How many torrents should be seeding at the same time (required)
  • client : The name of the .client file to use in joal-conf/clients/ (required)
  • keepTorrentWithZeroLeechers: should JOAL keep torrent with no leechers or seeders. If yes, torrent with no peers will be seed at 0kB/s. If false torrents will be deleted on 0 peers reached.

Thanks:

This project use a modified version of the awesome mpetazzoni/ttorrent library. Thanks to mpetazzoni for this. Also this project has benefited from the help of several peoples, see Thanks.md

Analytics