WebUI Configuration¶
Configure Torrentarr's modern React-based web interface for monitoring and managing your Torrentarr instance.
Overview¶
The Torrentarr WebUI provides:
- Real-time monitoring - Live process status and logs
- Media browsing - View movies, shows, and albums from Arr instances
- Configuration management - Edit config.toml from the web
- System information - Version, uptime, and health metrics
- Responsive design - Works on desktop, tablet, and mobile
Access: http://localhost:6969/ui (default)
Configuration Section¶
WebUI settings are configured in the [WebUI] section:
[WebUI]
# Listen address
Host = "0.0.0.0"
# Listen port
Port = 6969
# Optional authentication token
Token = ""
# Live updates
LiveArr = true
# Group settings
GroupSonarr = true
GroupLidarr = true
# Default theme
Theme = "Dark"
Host¶
Type: String (IP address) Default: "0.0.0.0"
IP address the WebUI server listens on.
Options:
"0.0.0.0"- (Default) Listen on all network interfaces"127.0.0.1"- Localhost only (secure, but can't access remotely)"192.168.1.100"- Specific network interface
Use cases:
| Host | Use Case | Security | Remote Access |
|---|---|---|---|
0.0.0.0 | Docker, network access | Medium | ✅ Yes |
127.0.0.1 | Localhost only | High | ❌ No |
| Specific IP | Bind to one interface | Medium | ✅ Limited |
Recommendations:
# Docker (with reverse proxy)
Host = "0.0.0.0"
# Native (with reverse proxy)
Host = "127.0.0.1"
# Native (direct access)
Host = "0.0.0.0" # Use with Token for security
Port¶
Type: Integer Default: 6969
TCP port the WebUI listens on.
Access URL: http://<host>:<port>/ui
Common ports:
Port conflicts:
If port 6969 is in use:
# Check what's using the port
sudo lsof -i :6969
sudo netstat -tulpn | grep 6969
# Change to alternative
Port = 6970
Token¶
Type: String Default: "" (empty, no authentication)
Bearer token for API authentication.
When empty: - WebUI and API are publicly accessible - No authentication required - Anyone with network access can use the WebUI
When set: - All /api/* endpoints require authentication - Must include Authorization: Bearer header in API requests - WebUI automatically handles token for you
Setting up authentication:
Generating secure tokens:
# Linux/macOS
openssl rand -hex 32
# Alternative (any environment with Python)
python3 -c "import secrets; print(secrets.token_hex(32))"
# Output: a1b2c3d4e5f6...
Using authenticated API:
Security Recommendation
Always set a token if:
- Torrentarr is accessible from the internet
- You're not using a reverse proxy with authentication
- Multiple users have network access
Token can be omitted if:
- Behind reverse proxy with its own authentication
- Only accessible from localhost
- Running in a trusted private network
LiveArr¶
Type: Boolean Default: true
Enable live updates for Arr instance views (Radarr/Sonarr/Lidarr tabs).
When true: - Real-time status updates - Progress bars update automatically - No manual page refresh needed - Uses polling every few seconds
When false: - Static snapshots - Must manually refresh page - Lower resource usage - Reduced API calls to Arr instances
Recommendation: true for best user experience.
Performance consideration:
# High-resource system
LiveArr = true # Enable real-time updates
# Low-resource system (Raspberry Pi, etc.)
LiveArr = false # Reduce load
GroupSonarr¶
Type: Boolean Default: true
Group Sonarr episodes by series in the WebUI.
When true (grouped):
└─ Breaking Bad
├─ S01E01 - Pilot
├─ S01E02 - Cat's in the Bag
└─ S01E03 - ...and the Bag's in the River
When false (flat list):
├─ Breaking Bad S01E01 - Pilot
├─ Breaking Bad S01E02 - Cat's in the Bag
└─ Breaking Bad S01E03 - ...and the Bag's in the River
Recommendation: true for better organization.
GroupLidarr¶
Type: Boolean Default: true
Group Lidarr albums by artist in the WebUI.
When true (grouped):
When false (flat list):
├─ Pink Floyd - The Dark Side of the Moon
├─ Pink Floyd - The Wall
└─ Pink Floyd - Wish You Were Here
Recommendation: true for better navigation.
ViewDensity¶
Type: String Default: "Comfortable" Options: "Comfortable", "Compact"
UI density setting for tables and lists.
"Comfortable"- More spacing, easier to read"Compact"- Denser layout, shows more data per screen
Note: Users can toggle this in the WebUI settings. This sets the initial default.
Theme¶
Type: String Default: "Dark" Options: "Dark", "Light"
Default color theme for the WebUI.
"Dark"- Dark mode (easier on eyes, lower power consumption)"Light"- Light mode (better in bright environments)
Note: Users can toggle theme in the WebUI itself. This sets the initial default.
Complete Configuration Examples¶
Example 1: Default (Public Access)¶
[WebUI]
Host = "0.0.0.0"
Port = 6969
Token = "" # No authentication
LiveArr = true
GroupSonarr = true
GroupLidarr = true
Theme = "Dark"
ViewDensity = "Comfortable"
Access: http://localhost:6969/ui
Use case: Local network, trusted environment.
Example 2: Secured with Token¶
[WebUI]
Host = "0.0.0.0"
Port = 6969
Token = "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
LiveArr = true
GroupSonarr = true
GroupLidarr = true
Theme = "Dark"
ViewDensity = "Comfortable"
Access: http://localhost:6969/ui (token handled automatically by WebUI)
Use case: Exposed to internet or untrusted network.
Example 3: Localhost Only (with Reverse Proxy)¶
[WebUI]
Host = "127.0.0.1"
Port = 6969
Token = "" # Reverse proxy handles auth
LiveArr = true
GroupSonarr = true
GroupLidarr = true
Theme = "Dark"
ViewDensity = "Comfortable"
Nginx reverse proxy:
location /torrentarr/ {
proxy_pass http://127.0.0.1:6969/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
Access: https://yourdomain.com/torrentarr/ui
Example 4: Low Resource System¶
[WebUI]
Host = "0.0.0.0"
Port = 6969
Token = ""
LiveArr = false # Disable auto-refresh
GroupSonarr = false # Flat lists
GroupLidarr = false # Flat lists
Theme = "Dark"
Use case: Raspberry Pi, low-power devices.
Reverse Proxy Configuration¶
Nginx¶
server {
listen 80;
server_name torrentarr.example.com;
location / {
proxy_pass http://localhost:6969;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
Torrentarr config:
Apache¶
<VirtualHost *:80>
ServerName torrentarr.example.com
ProxyPreserveHost On
ProxyPass / http://localhost:6969/
ProxyPassReverse / http://localhost:6969/
<Location />
Require all granted
</Location>
</VirtualHost>
Enable required modules:
Traefik (Docker)¶
services:
torrentarr:
image: feramance/torrentarr:latest
labels:
- "traefik.enable=true"
- "traefik.http.routers.torrentarr.rule=Host(`torrentarr.example.com`)"
- "traefik.http.services.torrentarr.loadbalancer.server.port=6969"
- "traefik.http.routers.torrentarr.entrypoints=websecure"
- "traefik.http.routers.torrentarr.tls.certresolver=letsencrypt"
Caddy¶
Docker Port Mapping¶
Docker Run:
docker run -d \
--name torrentarr \
-p 6969:6969 \
-v /path/to/config:/config \
feramance/torrentarr:latest
Docker Compose:
version: '3'
services:
torrentarr:
image: feramance/torrentarr:latest
container_name: torrentarr
ports:
- "6969:6969" # External:Internal
volumes:
- /path/to/config:/config
Alternative port mapping:
Access: http://localhost:8080/ui
Config file only¶
WebUI settings (Host, Port, Token) are read from config.toml only. Torrentarr does not support environment variable overrides for individual settings. Use the Config Editor or edit config.toml directly. To point Torrentarr at a different config file (e.g. in Docker), set TORRENTARR_CONFIG=/config/config.toml.
Troubleshooting¶
WebUI Not Loading¶
Symptom: Cannot access http://localhost:6969/ui
Solutions:
-
Check Torrentarr is running:
-
Verify port:
-
Check logs:
-
Verify configuration:
401 Unauthorized¶
Symptom: API requests return 401 errors
Solutions:
-
Check token is set:
-
Include token in requests:
-
Clear browser cache and cookies
-
Check WebUI logs:
Connection Refused¶
Symptom: Browser shows "Connection refused"
Solutions:
-
Check Host binding:
-
Check firewall:
-
Docker: Check port mapping:
Slow Performance¶
Symptom: WebUI is slow or unresponsive
Solutions:
-
Disable live updates:
-
Disable grouping:
-
Check resource usage:
-
Clear browser cache
-
Reduce log retention:
- Fewer logs = faster log view
- Consider log rotation
CORS Errors¶
Symptom: Browser console shows CORS errors
Solutions:
- Access via correct URL:
- Use
http://localhost:6969/ui -
Not
http://127.0.0.1:6969/ui(different origin) -
Configure reverse proxy correctly:
- Set proper headers
- See reverse proxy examples above
Security Best Practices¶
1. Use a Strong Token¶
2. Bind to Localhost with Reverse Proxy¶
Use Nginx/Apache/Caddy for external access with HTTPS.
3. Use HTTPS¶
Never expose WebUI over HTTP on the internet.
Options:
- Reverse proxy with Let's Encrypt
- Cloudflare Tunnel
- VPN (Tailscale, WireGuard)
4. Restrict Network Access¶
Docker:
services:
torrentarr:
networks:
- internal # Private network only
networks:
internal:
internal: true # No external access
Firewall:
5. Regular Updates¶
Keep Torrentarr updated for security patches:
# Docker
docker pull feramance/torrentarr:latest
docker restart torrentarr
# dotnet tool
dotnet tool update -g torrentarr
# Binary: download latest from GitHub Releases and replace executable
Performance Tuning¶
For Large Libraries¶
[WebUI]
LiveArr = false # Disable auto-refresh
GroupSonarr = false # Faster rendering
GroupLidarr = false # Faster rendering
In WebUI: - Use search/filters to reduce displayed items - Limit log entries shown
For Low-Resource Systems¶
[WebUI]
Host = "127.0.0.1"
Port = 6969
Token = ""
LiveArr = false
GroupSonarr = false
GroupLidarr = false
Theme = "Dark" # Lower power on OLED
See Also¶
- WebUI Usage Guide - Using the WebUI
- Config File Reference - All configuration options
- Getting Started - Initial setup
- Troubleshooting - Common issues