-
-
Notifications
You must be signed in to change notification settings - Fork 44
Nginx Proxy Manager Configuration Guide
This guide explains how to properly configure Nginx Proxy Manager (NPM) as a reverse proxy for Tidarr to ensure real-time updates work correctly.
When accessing Tidarr through Nginx Proxy Manager (HTTPS reverse proxy), you may experience:
- Downloads appear to not start or hang
- No real-time progress updates in the UI
- Processing queue doesn't update automatically
- Terminal output window remains empty
However, accessing Tidarr directly via IP address (e.g., http://192.168.1.100:8484) works perfectly with real-time updates.
Important: Tidarr uses Server-Sent Events (SSE), not WebSockets, for real-time updates.
- Enabling "WebSocket Support" in Nginx Proxy Manager will not fix this issue
- The problem is caused by Nginx buffering SSE responses instead of streaming them
Tidarr has two SSE endpoints:
-
/api/stream- Broadcasts processing queue updates to all connected clients -
/api/stream_item_output/:id- Sends real-time download output logs to the terminal dialog
Both endpoints require special Nginx configuration to work through a reverse proxy.
You need to configure Nginx Proxy Manager to disable buffering and allow long-lived connections for SSE endpoints.
# Disable buffering for SSE
proxy_buffering off;
proxy_cache off;
# Allow long-lived connections (24 hours)
proxy_read_timeout 86400s;
# Ensure proper SSE streaming
chunked_transfer_encoding off;
# Remove interfering headers
proxy_set_header Connection '';Log in to your Nginx Proxy Manager web interface (usually at http://your-server:81).
- Go to Hosts → Proxy Hosts
- Click Add Proxy Host (or edit existing Tidarr proxy)
- Fill in the Details tab:
-
Domain Names:
tidarr.yourdomain.com -
Scheme:
http -
Forward Hostname / IP:
tidarr(or your Tidarr container name/IP) -
Forward Port:
8484 - Cache Assets: OFF
- Block Common Exploits: ON
- WebSocket Support: OFF (not needed for SSE)
-
Domain Names:
- Go to the SSL tab
- Select your SSL certificate or use Request a new SSL Certificate
- Enable Force SSL if desired
- Go to the Advanced tab
- Add the following configuration:
# SSE configuration for /api/stream endpoint
location /api/stream {
proxy_pass http://tidarr:8484;
# Disable buffering for SSE
proxy_buffering off;
proxy_cache off;
# Allow long-lived connections
proxy_read_timeout 86400s;
# Ensure proper SSE streaming
chunked_transfer_encoding off;
# Remove interfering headers
proxy_set_header Connection '';
# Forward necessary headers
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;
}
# SSE configuration for /api/stream_item_output endpoint
location /api/stream_item_output {
proxy_pass http://tidarr:8484;
# Disable buffering for SSE
proxy_buffering off;
proxy_cache off;
# Allow long-lived connections
proxy_read_timeout 86400s;
# Ensure proper SSE streaming
chunked_transfer_encoding off;
# Remove interfering headers
proxy_set_header Connection '';
# Forward necessary headers
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;
}Note: Replace tidarr:8484 with your actual Tidarr hostname/IP and port if different.
- Click Save
- Wait for Nginx to reload (usually a few seconds)
- Access Tidarr via your domain (e.g.,
https://tidarr.yourdomain.com) - Add a download and verify that:
- Processing queue updates in real-time
- Progress bars update automatically
- Terminal output shows download logs
1. Check Nginx Proxy Manager Logs
Access your NPM container logs:
docker logs nginx-proxy-managerLook for any errors related to your proxy host configuration.
2. Verify Tidarr is Accessible Directly
Test that Tidarr works when accessed directly:
curl http://tidarr:8484/api/check3. Test SSE Endpoint Directly
Open your browser's developer console (F12) and check the Network tab:
- Filter by "stream"
- Start a download
- You should see active connections to
/api/streamand/api/stream_item_output/:id - Check the response type is
text/event-stream
4. Browser Cache
Clear your browser cache or test in an incognito/private window.
5. Check Docker Network
If using Docker Compose, ensure NPM and Tidarr are on the same network or can communicate:
docker network ls
docker network inspect <network_name>- Enabling "WebSocket Support" in NPM (not needed for SSE)
- Not adding the advanced configuration for
/api/stream*endpoints - Using wrong Tidarr hostname/IP in proxy configuration
- Having
proxy_buffering on(default Nginx behavior)
This guide is based on the solution found in Issue #425.
Thanks to the community for identifying and solving this issue!
Some parts of this guide were generated with the help of AI. While I've made every effort to ensure accuracy, please verify the information with your specific setup