Added "Nginx Proxy Manager" as a reverse proxy. Also added workaround for websockets disconnecting

Fabian Ommer
2025-11-27 00:17:49 +01:00
parent c6394562b3
commit 43af8676f7

@@ -1,4 +1,4 @@
[Nginx](#nginx) | [Apache](#apache) | [Caddy](#caddy) | [Traefik](#traefik)
[Nginx](#nginx) | [Nginx Proxy Manager](#nginx-proxy-manager-npm) | [Apache](#apache) | [Caddy](#caddy) | [Traefik](#traefik)
If you want to expose paperless to the internet, you should hide it
behind a reverse proxy with SSL enabled. The officially supported method is Nginx.
@@ -63,6 +63,23 @@ Some have found adding the P3P header (`add_header P3P 'CP=""';` see [#817](http
Also make sure to enable `Websocket Support` in nginx, see https://github.com/paperless-ngx/paperless-ngx/discussions/10762#discussioncomment-14299568.
# Nginx Proxy Manager (NPM)
In NPM create a new proxy host and enable websockets support:
<img width="545" height="647" alt="grafik" src="https://github.com/user-attachments/assets/de807b45-27d4-438f-96d2-9163bed9a658" />
Then under the SSL tab select your certificate and enable "Force SSL". All other options are optional:
<img width="547" height="371" alt="grafik" src="https://github.com/user-attachments/assets/4d4891f5-339b-4a64-b313-29e28b95ebd0" />
Nginx Proxy Manager uses a timeout of 90s by default. This is fine for loading the webpage but will cut the websocket connection if there are no updates for 90s. To prevent that, the following 2 lines can be added under the Custom Nginx Configuration Tab (settings icon):
```nginx
proxy_send_timeout 600m;
proxy_read_timeout 600m;
```
Both values can be adjusted. `600m` means that NPM will hold the websocket connection open for 600 minutes.
<img width="546" height="459" alt="grafik" src="https://github.com/user-attachments/assets/f62d2f0f-5bbf-497a-9d94-0650fa10a35c" />
# Apache
Below is an example of an apache2 conf file that you may customize to fit your environment and needs.