Nextcloud - Upload / Téléversement de gros fichiers

EVO

Administreur
Membre du personnel
25 Novembre 2019
8 269
1 583
278
/var/run/docker.sock
Hello,

J'ai un soucis avec Nextcloud, il m'est impossible de d'upload un fichier de 11Go. Cela fini en 504 Time-out sur le client Windows, voir Not Found. Via la navigateur, cela va jusqu'au bout, et a la fin NS_ERROR_NET_INTERRUPT dans la console, et sur la WebUI le chargement s'arrete, sans aucune erreur visible :(

Mon Nextcloud est installé avec l'image de linuxserver.

J'ai augmenté les reglages de mon php-local.ini , sans changement :
PHP:
; Edit this file to override php.ini directives and restart the container

date.timezone = Europe/Paris
opcache.interned_strings_buffer = 32
opcache.memory_consumption = 256
memory_limit= 20G

upload_max_filesize= 20G
post_max_size= 20G
max_input_time= 6400
max_execution_time= 6400
upload_tmp_dir = /tmp
output_buffering = 0

apc.enable_cli = 1

et de default.conf :

Code:
    client_max_body_size 0;
    client_body_timeout 6400s;
    fastcgi_buffers 64 4K;

J'ai également essayé de modifier la taille des "morceaux" a 40Mo :
Code:
occ config:app:set files max_chunk_size --value 41943040

C'est bien pris en compte, car je vois des morceaux de 40Mo dans la console réseau du navigateur. Mais le transfert fini toujours en echec.

Voila, si vous avez des idées :)

Ps : Les fichiers jusqu’à 7Go ne sont pas un soucis. Entre 7 et 11Go, pas essayé encore.

1704878736310.png
 
Hello, j'imagine que tu es en reverse proxy. Tu dois avoir un fichier de conf nginx (subfolder ou subdomain) à modifier en plus de ton default.conf
 
Hello, j'imagine que tu es en reverse proxy. Tu dois avoir un fichier de conf nginx (subfolder ou subdomain) à modifier en plus de ton default.conf
Oui, mais mon reverse proxy est tout simple, c'est le reverse proxy du conteneur qui fait le "travail" :

Code:
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name cloud.ndd.fr;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    include /config/nginx/geoblock.conf;

    location / {
        include /config/nginx/proxy.conf;
        # on surcharge access_log
        access_log /config/log/nginx_nc_access.log;
        include /config/nginx/resolver.conf;

        set $upstream_app 192.168.2.20;
        set $upstream_port 8484;
        set $upstream_proto https;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
        proxy_max_temp_file_size 2048m;
    }

}

Cependant au vu de ton message, je vais essayer d'augmenter proxy_max_temp_file_size . Cependant, la valeur est de 2048, et j'arrive sans soucis a uploader des fichiers de 5Go.
 
1704882480219.png
1704882506622.png

Voila le resultat en WebUI. Les morceaux de 40Mo sont bien transféré. Quand l'upload est fini, pas mal de 404, et sa fini en NS_ERROR.
 
Changement de comportement, dans le client Windows, maintenant a la fin de la syncronisation, cela me dit que j'ai supprimé le fichier :
1704883415285.png
 
Tu te concentres sur la taille, mais ne serait ce pas plutôt le temps ?
Combien de temps prend un fichier de 7go pour l'upload ? Puis tente un peu plus gros comme tu as déjà fait mais avec le chrono ?
Je vois que tu as déjà des timeout conséquents, c'est peut être un coup dans l'eau... Ou alors un timeout autre part qui est réglé plus bas ?
Edit : attention on voit ton nom de domaine...
 
Tu te concentres sur la taille, mais ne serait ce pas plutôt le temps ?
Oui, je pense. J'ai trouvé ceci : https://github.com/linuxserver/docker-nextcloud/issues/211
Agrandir le temps t'expose plus au attaque type DDos par exemple, mais pour l'upload de gros fichier, je pense qu'il n'y a pas trop le choix.

Je suis entrain d'essayer la modif.

Edit : attention on voit ton nom de domaine...
Oui, un domaine public en soi ;)
 
Visiblement c'est bien cela qu'il faut augmenter. La c'est passé du 1er coup. je pense que c'est le temps apres l'upload du fichier ( celui ou le fichier est reconstruit puis déplacer de /tmp au dossier nextcloud ) qui était trop court.

je vais remettre les autres choses dans des valeurs un peu plus classique, et re-essayer.
 
Bon, je me re-repond, je viens de valider 2 fois le fonctionnement, c'est deja bon signe :D

Ma config actuelle :
> php-local.ini
PHP:
; Edit this file to override php.ini directives and restart the container

date.timezone = Europe/Paris
opcache.interned_strings_buffer = 32
opcache.memory_consumption = 256
memory_limit= 4096M

upload_max_filesize= 20G
post_max_size= 20G
max_input_time= 3600
max_execution_time= 3600
upload_tmp_dir = /tmp
output_buffering = 0

apc.enable_cli = 1

> default.conf

PHP:
    client_max_body_size 0;
    client_body_timeout 3600s;
    fastcgi_buffers 64 4K;

Dans "location ~ \.php(?:$|/) {"

PHP:
        fastcgi_read_timeout 1200;
        fastcgi_send_timeout 1200;
        fastcgi_connect_timeout 1200;
        proxy_connect_timeout 1200;
        proxy_send_timeout 1200;
        proxy_read_timeout 1200;
        send_timeout 1200;
 
Agrandir le temps t'expose plus au attaque type DDos par exemple, mais pour l'upload de gros fichier, je pense qu'il n'y a pas trop le choix.
Je pense aussi que t'as pas trop le choix en utilisant la synchro avec le/les clients desktop.

Oui, un domaine public en soi ;)

Je préfère relever en règle générale, certains préfèrent masquer 🤷‍♂️
C'est beau pour ton amour pour la citrouille 😆

Bonne nouvelle si ça fonctionne, et merci d'avoir partagé la soluce, j'envisage de migrer de docker linuxserver à une install directe sur un lxc debian, ça va certainement me servir
 
  • J'aime
Réactions: EVO
Bon, je me re-repond, je viens de valider 2 fois le fonctionnement, c'est deja bon signe :D

Ma config actuelle :
> php-local.ini
PHP:
; Edit this file to override php.ini directives and restart the container

date.timezone = Europe/Paris
opcache.interned_strings_buffer = 32
opcache.memory_consumption = 256
memory_limit= 4096M

upload_max_filesize= 20G
post_max_size= 20G
max_input_time= 3600
max_execution_time= 3600
upload_tmp_dir = /tmp
output_buffering = 0

apc.enable_cli = 1

> default.conf

PHP:
    client_max_body_size 0;
    client_body_timeout 3600s;
    fastcgi_buffers 64 4K;

Dans "location ~ \.php(?:$|/) {"

PHP:
        fastcgi_read_timeout 1200;
        fastcgi_send_timeout 1200;
        fastcgi_connect_timeout 1200;
        proxy_connect_timeout 1200;
        proxy_send_timeout 1200;
        proxy_read_timeout 1200;
        send_timeout 1200;
Bonjour Evo,

Pourrais tu etre plus precis dans la localisation des fichiers que tu as modifier (j'ai un Nas DYI sur lequel j'ai installe Openmediavault, puis Portainer/Docker puis Nextcloud) mon arborescence ressemble à cela :

dev-disk ...../data/appdata/nextcloud/config

ou puis je trouver les fichier à modifier afin de permettre le telechargement dans Nextcloud de fichier volumineux (8Go maximum - si j'ai bien compris il faut augmenter les limites de taille mais egalement, de temps de charge)

SVP Merci

Raphael3922