All apps · 0 apps
torrentng-webui
Docker app from torrentng's Repository
Overview
TorrentNG WebUI is a modern replacement web interface and API for an rTorrent, qBittorrent, Transmission, or Deluge install you already run -- on this box or elsewhere on your network. It does not run its own torrent engine; your existing client keeps owning transfer/session state. TorrentNG polls it, caches state for a fast virtualized 10k-100k-row table, pushes live updates over WebSocket, and exposes a qBittorrent-compatible API so Prowlarr/Sonarr/Radarr/autobrr/cross-seed keep working unchanged.
If you don't already run one of those four clients and just want one box that does everything, use the "TorrentNG" (native) template instead -- it runs TorrentNG's own first-party client with no external dependency.
SETUP: pick "Backend Type" below and fill in only that backend's section (all four are listed since Unraid templates can't hide fields conditionally -- the others are ignored):
- qBittorrent / Transmission / Deluge: point the matching URL variable at your existing container's WebUI/RPC address (e.g. http://192.168.1.10:8080 for qBittorrent). These already speak HTTP over the network, so this is normally a two-field job: URL + credentials.
- rTorrent: leave "Managed" at 0 (the default) to connect to an rTorrent you already run, and set "SCGI TCP Address" to host:port. This requires your existing rTorrent to have SCGI bound to a TCP address rather than a private Unix socket inside its own container -- check that client's own config/template. If your setup only exposes a Unix socket, mount the host directory holding that socket file into this container yourself (extra Path in this template's Unraid config) and point "SCGI Socket Path" at it instead. Set "Managed" to 1 only if you want this container to launch and own its own brand-new rTorrent (rarely what you want alongside an existing install).
IMPORTANT -- rTorrent identity: on every start, TorrentNG pushes its own User-Agent and peer_id to whatever rTorrent it's connected to (this is how the compatible API keeps *arr tools working). Pointing this at an rTorrent that already has an established tracker history under a different identity will silently rewrite that identity going forward. This is expected and safe for a install TorrentNG will manage long-term, but understand it before connecting to a client you don't want touched. See docs/TRACKER-IDENTITY.md in the TorrentNG repository. Never set the same Peer ID Override across more than one install -- a shared peer_id has gotten real users banned from private trackers for "running multiple clients."
Secret Key and API Tokens are required before first start regardless of backend -- they protect the WebUI and API themselves, not your torrent client. Generate both with e.g. openssl rand -hex 32.
LOGIN: each install generates a unique WebUI password in its state directory. This template publishes on a public container bind, so first enter one of the configured API Tokens in either the Username or Password field. To retrieve the active login in Unraid, open the Docker tab, click the torrentng-webui container icon, choose Console, and run torrentng auth-token at the prompt. Use the printed WebUI username and password on TorrentNG's login page. The qBittorrent (or other backend) credentials in this template only let TorrentNG connect to that client; they are not the TorrentNG login. Then open Settings -> Security to choose a username and password of at least 16 characters. The API token remains available for automation. Tokens can also be set in [auth].api_tokens or TNG_API_TOKENS / RTNG_API_TOKENS. See the Unraid deployment README for details.
The image supports runtime PUID/PGID handling. This template defaults to Unraid's standard nobody:users identity, 99:100; the entrypoint prepares its small internal runtime directories and then drops to that non-root identity. Do not add an ExtraParams --user override: the entrypoint needs its short setup phase. Make sure the Downloads/Data and Appdata/State folders are owned by the selected PUID:PGID before first start. For the default paths shown below, use Unraid's Tools -> New Permissions on /mnt/user/downloads and /mnt/user/appdata/torrentng-webui, or run from the Unraid terminal: chown -R 99:100 /mnt/user/downloads /mnt/user/appdata/torrentng-webui. The container never recursively chowns mounted download trees at startup.
Readme
View on GitHubUnraid deployment
Unraid Community Applications (CA) templates for TorrentNG. See deploy/README.md for the underlying Docker images and docs/DEPLOYMENT.md / docs/NATIVE_DEPLOYMENT.md for the non-Unraid deployment paths these templates wrap.
Which template
- Already running rTorrent, qBittorrent, Transmission, or Deluge (on this box or elsewhere on the network) and just want a modern replacement WebUI and a qBittorrent-compatible API for Prowlarr/Sonarr/Radarr/autobrr/ cross-seed? Use torrentng-webui.
- Want one box that does everything with no external client dependency? Use
torrentng (runs
torrentngd, TorrentNG's own first-party engine).
Both are documented in depth in their own <Overview> text, which Unraid
shows on the Add Container page.
WebUI login
TorrentNG has its own WebUI login. The qBittorrent, rTorrent, Transmission, or Deluge credentials entered in the template are only for TorrentNG to connect to that backend; they do not log you in to TorrentNG.
For the first sign-in, you can enter the template's API Token or API Tokens value in either TorrentNG login field. These tokens are separate from the backend client's username and password.
To display the active TorrentNG WebUI username and password:
In Unraid's web interface, open the Docker tab.
Find the TorrentNG container. Click its container icon and choose Console from the menu. This opens a terminal inside the running container.
At the prompt, run the command for the template you installed:
- torrentng-webui (connects to an existing client):
torrentng auth-token - torrentng (TorrentNG engine):
torrentngd auth-token
- torrentng-webui (connects to an existing client):
Use the printed WebUI username and WebUI password on the TorrentNG login page. Run the command in TorrentNG's interactive Console, not in the existing torrent client's console. It reports the active credentials, including values changed earlier in Settings -> Security.
Each install generates a unique WebUI password. After signing in, open Settings -> Security to choose a username and password of at least 16 characters. API tokens remain available for automation, and runtime changes persist in the profile's state directory. See the compatible-client README for the service-specific instructions.
Native torrentng behind Gluetun
The native daemon can share an existing Gluetun network namespace and follow the provider-assigned port after every VPN reconnect. Use the VPN Compose variant when managing the deployment with Compose. For the Community Applications template:
Configure Gluetun with
VPN_PORT_FORWARDING=onand its authenticated control server, for exampleHTTP_CONTROL_SERVER_AUTH_DEFAULT_ROLE={"auth":"apikey","apikey":"..."}. Publish the TorrentNG WebUI/API port (8080) on the Gluetun container; do not expose its control-server port to the host.In the
torrentngtemplate, set Docker Extra Parameters to--network=container:gluetunand remove the WebUI and peer-port mappings from the TorrentNG container. Its shared network is published through Gluetun.Start a port-sync helper in the same network namespace. The native image already contains the helper:
docker run -d --name=torrentng-vpn-port-sync \ --restart=unless-stopped \ --network=container:gluetun \ --user=99:100 \ -e GLUETUN_CONTROL_API_KEY='same-key-configured-in-gluetun' \ -e TORRENTNGD_API_TOKEN='same-token-configured-in-torrentng' \ --entrypoint=/usr/local/lib/torrentng/vpn-port-sync.sh \ ghcr.io/snapetech/torrentng/native:latest
The helper polls Gluetun's authenticated /v1/portforward endpoint and
updates TorrentNG's runtime API. The daemon rebinds TCP and enabled uTP, saves
the assigned port, and refreshes its tracker/DHT peer-port announcements.
Gluetun provides the WireGuard kill switch and provider NAT-PMP forwarding;
for ProtonVPN, enable NAT-PMP when generating the WireGuard profile. Use the
provider's supported port-forwarding setup and a separate key for Gluetun's
control server. Keep dht.port = 0 so DHT follows the runtime peer port; with
incoming uTP enabled, TorrentNG uses the adjacent UDP port for DHT. See
NATIVE_DEPLOYMENT.md for the complete
Compose example.
Manual template installation
For a manual installation, use the template for the mode you want:
- Docker tab -> Add Container.
- In the Template field at the top, paste the raw GitHub URL of the
template you want, e.g.
https://raw.githubusercontent.com/snapetech/TorrentNG/main/templates/torrentng-webui.xml. - The form populates from the template. Fill in the required fields
(Secret Key, API Tokens, and the backend URL/credentials for
torrentng-webui; the API Token and Config path fortorrentng) and Apply.
For the native engine, use
templates/torrentng.xml.
Storage and permissions
Both templates default to Unraid's nobody:users identity (PUID=99,
PGID=100). Set PUID and PGID to an identity that can read and write
its appdata and downloads. Preserve your existing download client's access
when sharing folders. Use these variables rather than a Docker --user
override, because the container entrypoint needs to prepare its runtime files
before dropping privileges.
For the WebUI template, configure the selected backend's URL and credentials. When using rTorrent, the SCGI address must be reachable before startup; the service exits if it cannot apply its tracker identity. Other supported backends report degraded health while reconnecting.
Support
Use the TorrentNG issue tracker for installation and runtime problems. Include your template choice, image version, selected backend, and relevant logs with credentials removed.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/snapetech/torrentng/sidecar:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
TorrentNG WebUI, REST/SSE/WebSocket API, and qBittorrent-compatible API (used by Prowlarr/Sonarr/Radarr/autobrr/cross-seed).
- Target
- 8080
- Default
- 8080
Non-root Linux UID for the WebUI/API service. Defaults to Unraid's nobody UID 99. The entrypoint uses this value after its short setup phase; do not also set ExtraParams --user.
- Target
- PUID
- Default
- 99
Non-root Linux GID for the WebUI/API service. Defaults to Unraid's users GID 100. Make the mounted Downloads/Data and Appdata paths accessible to this group.
- Target
- PGID
- Default
- 100
Which existing torrent client this WebUI talks to. Fill in only the matching section below.
- Target
- TNG_BACKEND
- Default
- rtorrent|qbittorrent|transmission|deluge
Random secret used to sign the WebUI's session cookies. Required. Generate with: openssl rand -hex 32
- Target
- TNG_SECRET_KEY
Comma-separated bearer token(s) for the REST/qBittorrent-compatible API (used by Prowlarr/Sonarr/Radarr/autobrr/cross-seed). Required. Generate with: openssl rand -hex 32
- Target
- TNG_API_TOKENS
Mount the SAME host folder your existing torrent client stores files in. TorrentNG reads this for file browsing and free-space reporting; it does not need to match exactly if your client only reports state remotely, but file-management API calls need it.
- Target
- /data
- Default
- /mnt/user/downloads
TorrentNG's own cache database and the generated per-install peer_id suffix (see docs/TRACKER-IDENTITY.md) live here. Back this up if you want the same identity to persist across container recreates.
- Target
- /var/lib/torrentng
- Default
- /mnt/user/appdata/torrentng-webui/state
Optional config.toml/rtorrent.rc overrides. Leave the folder empty to run entirely from the Variables below and the packaged defaults.
- Target
- /config
- Default
- /mnt/user/appdata/torrentng-webui/config
0 (default): connect to an rTorrent you already run, using SCGI TCP Address or SCGI Socket Path below. 1: this container also launches and owns its own new rTorrent process (rarely wanted when fronting an existing install).
- Target
- TNG_RTORRENT_MANAGED
- Default
- 0
host:port of your existing rTorrent's SCGI listener, e.g. 192.168.1.10:5000. Requires that rTorrent to have network.scgi.open_port bound to a TCP address rather than a local Unix socket. Unlike the qBittorrent/Transmission/Deluge backends, get this right before starting: if the rTorrent backend can't reach and authenticate to rTorrent within about 15 seconds of container start, the container exits (Docker/Unraid will keep restarting and failing) instead of coming up in a degraded state.
- Target
- TNG_SCGI_ADDR
Alternative to SCGI TCP Address: container-side path to a Unix socket, for when you've mounted the host folder holding your existing rTorrent's socket file into this container yourself (add an extra Path in this template's Unraid settings).
- Target
- TNG_SCGI_SOCKET
Only used when rTorrent: Managed is set to 1. Ignored when connecting to an existing rTorrent.
- Target
- 50000
- Default
- 50000
Only used when rTorrent: Managed is set to 1. Ignored when connecting to an existing rTorrent.
- Target
- 50000
- Default
- 50000
Tracker-facing identity pushed to rTorrent on every start. Leave at the default unless you have a specific reason to change it -- see docs/TRACKER-IDENTITY.md.
- Target
- TNG_USER_AGENT
- Default
- rtorrent/0.16.11/0.16.11
Leave empty (recommended): a unique 20-byte peer_id is generated and persisted per install automatically. Only set this to pin one specific, reproducible value -- e.g. a test fixture. NEVER copy the same value into more than one install/template: a shared peer_id has gotten real users banned from private trackers for 'running multiple clients'.
- Target
- TNG_PEER_ID
WebUI URL of your existing qBittorrent, e.g. http://192.168.1.10:8080
- Target
- TNG_QBITTORRENT_URL
qBittorrent WebUI username.
- Target
- TNG_QBITTORRENT_USERNAME
qBittorrent WebUI password.
- Target
- TNG_QBITTORRENT_PASSWORD
Set to 1 only if that qBittorrent's WebUI authentication is disabled for trusted-network access (its own 'Bypass authentication for clients on localhost/whitelisted subnet' setting).
- Target
- TNG_QBITTORRENT_NO_AUTH
- Default
- 0
RPC URL of your existing Transmission, e.g. http://192.168.1.10:9091/transmission/rpc
- Target
- TNG_TRANSMISSION_URL
Transmission RPC username.
- Target
- TNG_TRANSMISSION_USERNAME
Transmission RPC password.
- Target
- TNG_TRANSMISSION_PASSWORD
JSON-RPC URL of your existing Deluge (deluge-web), e.g. http://192.168.1.10:8112/json
- Target
- TNG_DELUGE_URL
Deluge Web UI password.
- Target
- TNG_DELUGE_PASSWORD