TL;DR: Whenever I upload large amounts of data to my server which is running with Nginx Proxy Manager, it eventually fails somewhere in the middle. The usual solutions didn’t work.

I use Nginx Proxy Manager as my reverse proxy on my server. All my services are in Docker containers, none of which have open ports except for NPM. Each service sits in its own Docker network, and the NPM container is part of all the networks, which allows it to redirect traffic to each one as configured, and can reference them by hostname which makes it more robust.

The setup works perfectly for any service that doesn’t require large uploads, but for those that do… it’s a pain.

I have tried three file syncing solutions. Nextcloud, Owncloud Infinite Scale, and Seafile. All had issues when uploading my files, they all got stuck, or failed.

Seafile for instance would consistently get stuck at 9.5MB. If you tried enough it sometimes went through up to a couple gigabytes, but it would always, eventually, get stuck and never go on. The nginx access logs would suddenly go from 200 to something in the 500 (I don’t remember the code exactly). If logs turn out to be needed I’ll look around the server and paste them here.

Nextcloud also fails when uploading large files, even when downloading. The difference is that with Nextcloud I can sync a folder instead of doing an upload through the web UI. So I can just sync a folder, which WILL eventually fail, but since it can just keep retrying until it syncs, it works. Using the web UI for this purpose is a no-go.

Same deal with Owncloud Infinite Scale.

So, of course I looked around and people were having similar issues. Basically all of them resulted in going to the advanced tab in NPM and adding a combination of these options:

client_body_buffer_size 512k;
proxy_read_timeout 86400s;
client_max_body_size 0;
proxy_buffering off;
proxy_request_buffering off;
auth_basic off;

I’ve tried these with all services, I’ve tried tweaking the values, adding and removing some. Nothing. Absolutely nothing at all. I think tweaking with these options is what made Seafile get unstuck from 9.5MB and progress further, but if it just gets stuck again later on, it’s kinda the same to me. But that serves to know that at least they are doing something, just not enough.

So how do I fix this? This has to be an NGINX issue, right? I connect to my servers via ZeroTier, which doesn’t have datacaps or anything since data doesn’t go through their servers in the first place, they just initiate a connection, so that can’t be it.

It can’t be the VPS or anything since it’s my own hardware, it’s sitting in my home, so nothing there either.

I’m at a loss. Please, throw me a bone.