Flood for Transmission is an alternative Web UI for Transmission. It's a frontend web app that doesn't require any extra service running to communicate with Transmission. Even though it's a work-in-progress, it's definitely good enough to use.
Flood for Transmission is a clone of Flood, which is originally build for rTorrent. All design and feature credit goes out to the creators of that. The code however is not a copy at all, it's been build from the ground up to make it work with Transmission.
If you have a specific issue or bug, please file a Github issue. Also feel free to bring up feature requests that way.
This project does not aim to support anything else than Transmission. If you're looking for other P2P client support check out Flood by jesec.
How this project is different from jesec's version:
Curious what it looks like? Do check out the screenshots folder but here is also a small sneak peak:
curl -OL https://github.com/johman10/flood-for-transmission/releases/download/latest/flood-for-transmission.zip
unzip flood-for-transmission.zip
. This should end up with a folder called flood-for-transmission
in the current working directory.rm flood-for-transmission.zip
systemctl edit transmission-daemon.service
. In the opened file ensure it contains at least:[Service]
Environment=TRANSMISSION_WEB_HOME=/path/to/flood-for-transmission
Any other configuration can be added as you wish.TRANSMISSION_WEB_HOME
and the "Variable value" to C:\path\to\flood-for-transmission
./Applications/Transmission.app/Contents/Resources/public_html
with cp /Applications/Transmission.app/Contents/Resources/public_html /Applications/Transmission.app/Contents/Resources/public_html.default
. Then copy the latest release folder to /Applications/Transmission.app/Contents/Resources/public_html
like so cp ~/Download/flood-for-transmission /Applications/Transmission.app/Contents/Resources/public_html
. Whenever you update Tranmission you will have to follow this procedure again. Note: there might be a way to do this with environment variables as well, but as of now I don't know how to do it. If you know, please open an issue so that this can be updated.http://localhost:9091
.Note: If you run Flood for Transmission behind SSL and in Chrome you can also run this interface like any other app by installing it as a PWA. For more instructions on that see the Chrome docs.
/flood-for-transmission/public/config.json
, cp config.json.defaults config.json
to get started. The config.json.defaults
file also illustrates the default configuration."DARK_MODE"
"auto"
or "enabled"
or "disabled"
"SWITCH_COLORS"
true
or false
"NOTATION_24H"
true
or false
"WRAP_HEADER"
true
or false
"COMMON_PATH"
["/downloads/expeliarmus", "/downloads/lumos"]
"COLUMNS"
[{ label: "Name", width: 400, enabled: true }, { label: "Progress", width: 600 }, { label: "Ratio", width: 0, enabled: false }]
enabled
will assume the value to be true
, and still show the column"SORT_COLUMN"
"Ratio"
"SORT_DIRECTION"
"asc"
or "desc"
"SHOW_DISK_USAGE"
true
or false
To update follow the following steps (feel free to write a cron job script for this):
rm -r flood-for-transmission
curl -OL https://github.com/johman10/flood-for-transmission/releases/download/latest/flood-for-transmission.zip
unzip flood-for-transmission.zip
. This should end up with a folder called flood-for-transmission
in the current working directory.rm flood-for-transmission.zip
npm install
..env.template
to .env
and edit the values to represent your Transmission configuration.npm start
.localhost:8080
.If you're running Transmission on a different machine behind Nginx or similar you may have to allow for CORS request. You can do this by adding the code below to your Transmission location block.
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' 'http://localhost:8080';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#
# Custom headers and headers various browsers *should* be OK with but aren't
#
add_header 'Access-Control-Allow-Headers' 'Authorization,X-Transmission-Session-Id,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
#
# Tell client that this pre-flight info is valid for 20 days
#
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' 'http://localhost:8080' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization,X-Transmission-Session-Id,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range,X-Transmission-Session-Id' always;
}