Flood
Flood is a monitoring service for rTorrent. It's a Node.js service that communicates with rTorrent instances and serves a decent web UI for administration. It's a work-in-progress.
Feedback
If you have a specific issue or bug, please file a Github issue. Please join the Flood Discord server to discuss feature requests and implementation details.
Getting started
Pre-Requisites
- rTorrent needs to be installed and running with XMLRPC configuration.
- For Linux & OS X, check out rTorrent's installation wiki and/or this third-party tutorial. When you run
./configure
, be sure to run with the--with-xmlrpc-c
flag. - For Windows, try this guide.
- For Linux & OS X, check out rTorrent's installation wiki and/or this third-party tutorial. When you run
- Install NodeJS version
8
or higher (you might want to manage different Node versions with nvm or n).
Configuration
Copy config.template.js
to config.js
and review its comments. This is required.
When loading the web interface, you will be prompted to configure the connection to rtorrent. Other configuration options are handled config.js
.
What to configure
- Be sure to create a long and unique secret (used to sign JWT auth tokens).
- If you are proxying requests to Flood from your own web server, configure Flood's path from the host at the
baseURI
property. All requests will be prefixed with this value.- For example, if serving Flood from
https://foo.bar/apps/flood
, you would setbaseURI
to/apps/flood
. If serving flood fromhttps://foo.bar
, you do not need to configurebaseURI
. - Read more about proxying requests to Flood on the Wiki, this is a common pain-point for users.
- For example, if serving Flood from
Note: Some of these values are baked into the static assets (like baseURI
), so changes to this file require recompling static assets.
Compiling assets and starting the server
From the root of the Flood directory...
- Run
npm install
if you haven't already or if you've pulled changes. - Run
npm run build
. - Run
npm start
.
Access the UI in your browser. With default settings, go to http://localhost:3000
. You can configure the port in config.js
.
Updating
I've been bad about cutting actual releases, so check this repo for recent commits.
- To update, run
git pull
in this repository's directory. - Check
config.template.js
for configuration changes that you may wish to incoporate in yourconfig.js
. - Kill the currently running Flood server.
- Run
npm install
to update dependencies. - Run
npm run build
to transpile and bundle static assets. - Start the Flood server with
npm start
.
Troubleshooting
- Ubuntu users may need to install
nodejs-legacy
(sudo apt-get install nodejs-legacy
) for dependencies to install successfully. You can read more on this Stack Overflow post. - Ask for help in the Flood Discord server.
Local Development
- Run
npm install
. - Run
npm run start:development:server
andnpm run start:development:client
in separate terminal instances.npm run start:development:server
uses nodemon to watch for changes to the server-side JavaScript.npm run start:development:client
watches for changes in the client-side source.
- Access the UI in your browser. Defaults to
localhost:4200
.
Environment Variables
DEV_SERVER_PORT
: webpackDevServer's port, used when developing Flood. Defaults to4200
.DEV_SERVER_HOST
: webpackDevServer's host, used when developing Flood. Defaults to0.0.0.0
.DEV_SERVER_HTTPS
: webpackDevServer's protocol, used when developing Flood. Defaults tohttp
.
Running with Docker
docker build -t rtorrent-flood .
docker run --name rtorrent-flood -e RTORRENT_SCGI_HOST=w.x.y.z -p 3000:3000 rtorrent-flood
- Other supported environment variables:
FLOOD_BASE_URI
FLOOD_SECRET
FLOOD_ENABLE_SSL
The docker container includes a volume at /data
, which is where the database will be located. Additionally, you can place your SSL files there, /data/flood_ssl.key
and /data/flood_ssl.cert
. Set FLOOD_ENABLE_SSL
to true
to enable their use if present. Additionally, a local rtorrent socket file located at /data/rtorrent.sock
can be used if RTORRENT_SOCK
is set to true
.
Check out the Wiki for more information.
Acknowledgments
Check out package.json
's dependency
property to see the projects that make this app possible. Flood's client-side build tooling is based on the wonderful create-react-app.