-
-
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-processing- 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-processing endpoint
location /api/stream-processing {
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/settings3. 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/stream-processingand/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-processingand/api/stream-item-outputendpoints - Using wrong Tidarr hostname/IP in proxy configuration
- Having
proxy_buffering on(default Nginx behavior)
If you're running both NPM and Tidarr with Docker Compose, ensure they're on the same network:
version: '3.8'
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
ports:
- "80:80"
- "81:81"
- "443:443"
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
networks:
- proxy_network
tidarr:
image: ghcr.io/cstaelen/tidarr:latest
container_name: tidarr
environment:
- ADMIN_PASSWORD=your_password
- PUID=1000
- PGID=1000
volumes:
- ./shared:/shared
- ./library:/music
networks:
- proxy_network
networks:
proxy_network:
driver: bridge
volumes:
npm_data:
npm_letsencrypt:In this setup, use http://tidarr:8484 as the forward address in NPM.
This guide is based on the solution found in Issue #425.
Thanks to the community for identifying and solving this issue!