joal/README.md

131 lines
6.9 KiB
Markdown
Raw Normal View History

2017-09-13 05:47:27 +08:00
[![Build Status](https://travis-ci.org/anthonyraymond/joal.svg?branch=master)](https://travis-ci.org/anthonyraymond/joal)
2017-07-20 06:58:40 +08:00
# JOAL
2017-09-20 05:54:25 +08:00
This is the server application (with an **optional** webui), if you are interested in the desktop app look at [here](https://github.com/anthonyraymond/joal-desktop).
2017-07-20 06:58:40 +08:00
### Which client can JOAL emulate?
2017-07-20 03:43:24 +08:00
2017-10-22 06:18:11 +08:00
| Client | Support | Comment | | Client | Support | Comment |
| ------------- |:-----------------------------:|----------------|--|---------------|:-----------------------------:|----------------|
| BitComet | ![Numwant mess][support-never]| Will never be !| | Transmission | ![Yes][support-yes] | |
| BitTorrent | ![Yes][support-yes] | | | µTorrent | ![Yes][support-yes] | |
| Deluge | ![Yes][support-yes] | | | Vuze Azureus | ![Yes][support-yes] | |
| qBittorrent | ![Yes][support-yes] | | | Vuze Leap | ![Yes][support-yes] | |
| rTorrent | ![Yes][support-yes] | | |
2017-07-20 03:43:24 +08:00
If your favorite client is not yet supported feel free to ask (except for BitComet).<br/>
2017-07-20 06:58:40 +08:00
Ask for it in GitHub issues or mail <a href="mailto:joal.contact@gmail.com">joal.contact@gmail.com</a>.
2017-07-20 03:43:24 +08:00
2017-10-22 06:18:11 +08:00
## Preview
![preview](readme-assets/webui-preview.png?raw=true)
2017-07-20 03:43:24 +08:00
2017-04-14 02:31:09 +08:00
2017-09-20 05:54:25 +08:00
## Getting started
2017-10-22 06:18:11 +08:00
Download the [latest tar.gz release](https://github.com/anthonyraymond/joal/releases/latest).
2017-09-20 05:54:25 +08:00
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`.
2017-10-22 06:18:11 +08:00
The folder should look like this:<br/>
![joal-conf][joal-conf-folder]
2017-09-20 05:54:25 +08:00
## How to run
2017-02-18 20:21:23 +08:00
```
2017-12-02 02:51:13 +08:00
java -Djava.net.preferIPv6Addresses=true -jar ./jack-of-all-trades-X.X.X.jar --joal-conf="PATH_TO_CONF"
2017-02-18 20:21:23 +08:00
```
2017-02-18 08:27:17 +08:00
2017-09-20 05:54:25 +08:00
- `-Djava.net.preferIPv6Addresses=true`: is for instruct the JVM to prefer ipv6, if you ISP does not support ipv6 don't prepend this parameter.
2017-10-09 06:44:38 +08:00
- `--joal-conf=PATH_TO_CONF` is a **required** argument: path to the joal-conf folder (ie: /home/anthony/joal-conf).
2017-02-18 08:27:17 +08:00
2017-09-20 05:54:25 +08:00
<br />
By default the web-ui is disabled, you can enable it with some more arguments:
2017-05-05 02:34:43 +08:00
2017-09-20 05:54:25 +08:00
- `--spring.main.web-environment=true`: to enable the web context.
2017-10-09 05:13:49 +08:00
- `--server.port=YOUR_PORT`: the port to be used for both HTTP and WebSocket connection.
2017-09-20 05:54:25 +08:00
- `--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).
2017-02-18 08:27:17 +08:00
2017-10-09 05:13:49 +08:00
Once joal is started head to: `http://localhost:port/SECRET_OBFUSCATION_PATH/ui/` (obviously, replace `SECRET_OBFUSCATION_PATH`) by the value you had chosen
2017-09-20 05:54:25 +08:00
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.
2017-05-05 02:34:43 +08:00
2017-09-20 05:54:25 +08:00
## 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.
2017-10-22 06:18:11 +08:00
If WebUi is enabled you can also drag and drop torrents in the joal ui.
2017-10-09 06:44:38 +08:00
## 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:
2017-10-22 06:18:11 +08:00
In next command you have to replace `PATH_TO_CONF`, `PORT`, `SECRET_OBFUSCATION_PATH` and `SECRET_TOKEN`.
2017-10-09 06:44:38 +08:00
```
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.
2017-09-20 05:54:25 +08:00
## Configuration file
### Application configuration
2017-09-20 05:54:25 +08:00
The application configuration belongs in `joal-conf/config.json`.
2017-02-18 20:21:23 +08:00
```
{
2017-09-20 05:54:25 +08:00
"minUploadRate" : 30,
"maxUploadRate" : 160,
"simultaneousSeed" : 20,
"client" : "qbittorrent-3.3.16.client",
"keepTorrentWithZeroLeechers" : true
2017-02-18 20:21:23 +08:00
}
```
- `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**)
2017-09-20 05:54:25 +08:00
- `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. (**required**)
2017-02-18 20:21:23 +08:00
## Supported browser (for web-ui)
| Client | Support | Comment |
| ----------------------------------- |:-----------------------:|------------------------------------------------------|
| ![Google Chrome][browser-chrome] | ![yes][support-yes] | |
| ![Mozilla Firefox][browser-firefox] | ![yes][support-yes] | |
| ![Opera][browser-opera] | ![yes][support-yes] | |
| ![Opera mini][browser-opera-mini] | ![no][support-no] | Lack of `referrer-policy` & No support for WebSocket |
2018-02-19 04:18:15 +08:00
| ![Safari][browser-safari] | ![no][support-no] | Lack of `referrer-policy` |
| ![Edge][browser-edge] | ![no][support-no] | Lack of `referrer-policy` |
| ![Internet explorer][browser-ie] | ![no][support-never] | Not enough space to explain... |
Some non-supported browser might works, but they may be unsafe due to the lack of support for `referrer-policy`.
# Thanks:
2017-09-20 05:54:25 +08:00
This project use a modified version of the awesome [mpetazzoni/ttorrent](http://mpetazzoni.github.com/ttorrent/) library. Thanks to **mpetazzoni** for this.
Also this project has benefited from the help of several peoples, see [Thanks.md](THANKS.md)
2017-04-18 03:32:17 +08:00
2017-10-22 06:18:11 +08:00
2018-02-19 04:16:42 +08:00
[support-never]:readme-assets/warning.png
2017-10-22 06:18:11 +08:00
[support-no]:readme-assets/cross-mark.png
[support-yes]:readme-assets/check-mark.png
[joal-conf-folder]:readme-assets/joal-conf-folder.png
[browser-chrome]:readme-assets/browsers/chrome.png
[browser-firefox]:readme-assets/browsers/firefox.png
[browser-opera]:readme-assets/browsers/opera.png
[browser-opera-mini]:readme-assets/browsers/opera-mini.png
[browser-safari]:readme-assets/browsers/safari.png
[browser-ie]:readme-assets/browsers/ie.png
[browser-edge]:readme-assets/browsers/edge.png