Nextcloud multiple file download problem

Nextcloud version (eg, 20.0.5): 28.0.3
Operating system and version (eg, Ubuntu 20.04): DietPi v9.2.1
Apache or nginx version (eg, Apache 2.4.25): nginx version: nginx/1.22.1
PHP version (eg, 7.4): PHP 8.2.7

The issue you are facing:
When I want to download a file from my Nextcloud interface, a download file with the extension download.php.html appears and the error “the site could not be reached” appears. I can download files but when i try to download any folder download.php.html appears.

I have been using Nextcloud on my Raspi 4 with DietpiOS installed on it for a long time, but I can’t figure out what is causing this problem.

Is this the first time you’ve seen this error? (Y/N): Y

The output of your Nextcloud log in Admin > Logging:

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

<?php
$CONFIG = array (
  'passwordsalt' => 'eaXQNF2camOW38OR+TU6PzTlkWLg7h',
  'secret' => 'Sz5R4Ek2u8qvpug+AbWgVZrUiwYcnpZH7SQTAqyj6d58uVO/',
  'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => '*.zettabayt.com',
  ),
  'datadirectory' => '/mnt/dietpi_userdata/nextcloud_data',
  'dbtype' => 'mysql',
  'version' => '28.0.3.2',
  'hashingThreads' => 4,
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'filelocking.enabled' => true,
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' =>
  array (
    'host' => '/run/redis/redis-server.sock',
    'port' => 0,
  ),
  'overwrite.cli.url' => 'cloud.********.com/nextcloud',
  'overwriteprotocol' => 'https',
  'dbname' => '*******',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'oc_admin',
  'dbpassword' => '*********',
  'installed' => true,
  'instanceid' => '*******',
  'mail_domain' => '******.com',
  'mail_smtpmode' => 'smtp',
  'mail_sendmailmode' => 'smtp',
  'mail_from_address' => 'noreply',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_smtpauth' => 1,
  'mail_smtphost' => 'smtp.eu.mailgun.org',
  'mail_smtpport' => '587',
  'mail_smtpname' => 'postmaster@mail.********.com',
  'mail_smtppassword' => '**********',
  'maintenance' => false,
  'theme' => '',
  'loglevel' => 2,
);

The output of your Apache/nginx/system log in /var/log/____:

ls -l
total 0
-rw-r----- 1 www-data adm 0 Nov 17  2022 access.log
-rw-r----- 1 www-data adm 0 Mar 21 14:17 error.log

Empty...

Output errors in nextcloud.log in /var/www/ or as admin user in top right menu, filtering for errors. Use a pastebin service if necessary.

PASTE HERE

{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:56+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"OC\\Repair\\Events\\RepairStepEvent: Repair step: Queue a one-time job to check for user uploaded certificates","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:56+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"OC\\Repair\\Events\\RepairStepEvent: Repair step: Repair DAV shares","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:56+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"OC\\Repair\\Events\\RepairStepEvent: Repair step: Add background job to set the lookup server share state for users","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:56+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"OC\\Repair\\Events\\RepairStepEvent: Repair step: Add token cleanup job","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:56+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"OC\\Repair\\Events\\RepairStepEvent: Repair step: Clean up abandoned apps","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:56+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"OC\\Repair\\Events\\RepairStepEvent: Repair step: Add possibly missing system config","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:56+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"OC\\Repair\\Events\\RepairStepEvent: Repair step: Add AI tasks cleanup job","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:56+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"OC\\Repair\\Events\\RepairStepEvent: Repair step: Queue a job to generate metadata","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:42:57+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"\\OC\\Updater::startCheckCodeIntegrity: Starting code integrity check...","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:43:10+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"\\OC\\Updater::finishedCheckCodeIntegrity: Finished code integrity check","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.2.5","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:43:10+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"\\OC\\Updater::updateEnd: Update successful","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.3.2","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:43:10+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"\\OC\\Updater::maintenanceDisabled: Turned off maintenance mode","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.3.2","data":{"app":"updater"}}
{"reqId":"x5WWnIpcATv5HKvWB5r0","level":1,"time":"2024-02-29T21:43:10+00:00","remoteAddr":"::1","user":"--","app":"updater","method":"GET","url":"/nextcloud/core/ajax/update.php?requesttoken=mbF%2FPx5IDYf3tVXKoIj1DiLWSdrA0pzcIuqEabHsFkk%3D%3Ay8MvCEY5dL6%2BhBD8kf%2B%2BPHC4GrOKvNbzWonXXvzefBA%3D","message":"\\OC\\Updater::resetLogLevel: Reset log level to Warning(2)","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36","version":"28.0.3.2","data":{"app":"updater"}}

journalctl -u nginx

Mar 21 14:55:35 DietPi systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Mar 21 14:55:35 DietPi nginx[787]: 2024/03/21 14:55:35 [warn] 787#787: duplicate extension "js", content type: "text/javascript", previous content type: "application/javascript" in /etc/nginx/sites-dietpi/dietpi-nextcloud.conf:82
Mar 21 14:55:35 DietPi nginx[787]: 2024/03/21 14:55:35 [warn] 787#787: duplicate extension "wasm", content type: "application/wasm", previous content type: "application/wasm" in /etc/nginx/sites-dietpi/dietpi-nextcloud.conf:83
Mar 21 14:55:35 DietPi nginx[807]: 2024/03/21 14:55:35 [warn] 807#807: duplicate extension "js", content type: "text/javascript", previous content type: "application/javascript" in /etc/nginx/sites-dietpi/dietpi-nextcloud.conf:82
Mar 21 14:55:35 DietPi nginx[807]: 2024/03/21 14:55:35 [warn] 807#807: duplicate extension "wasm", content type: "application/wasm", previous content type: "application/wasm" in /etc/nginx/sites-dietpi/dietpi-nextcloud.conf:83
Mar 21 14:55:35 DietPi systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.

dietpi-nextcloud.conf

# Based on: https://github.com/nextcloud/documentation/blob/master/admin_manual/installation/nginx-subdir.conf.sample

# Redirect webfinger and nodeinfo requests to Nextcloud endpoint
location /.well-known/webfinger { return 301 /nextcloud/index.php$request_uri; }
location /.well-known/nodeinfo  { return 301 /nextcloud/index.php$request_uri; }

location ^~ /nextcloud {

	# Omit Nginx version on error response
	server_tokens off;

	# Set max upload size
	client_max_body_size 1048576M;
	fastcgi_buffers 64 4K;

	# Enable gzip but do not remove ETag headers
	gzip on;
	gzip_vary on;
	gzip_comp_level 4;
	gzip_min_length 256;
	gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
	gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

	# HTTP response headers borrowed from Nextcloud `.htaccess`
	add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;
	add_header Referrer-Policy "no-referrer" always;
	add_header X-Content-Type-Options "nosniff" always;
	add_header X-Download-Options "noopen" always;
	add_header X-Frame-Options "SAMEORIGIN" always;
	add_header X-Permitted-Cross-Domain-Policies "none" always;
	add_header X-Robots-Tag "noindex, nofollow" always;
	add_header X-XSS-Protection "1; mode=block" always;

	# Remove X-Powered-By, which is an information leak
	fastcgi_hide_header X-Powered-By;

	# Specify how to handle directories -- specifying `/nextcloud/index.php$request_uri`
	# here as the fallback means that Nginx always exhibits the desired behaviour
	# when a client requests a path that corresponds to a directory that exists
	# on the server. In particular, if that directory contains an index.php file,
	# that file is correctly served; if it doesn't, then the request is passed to
	# the front-end controller. This consistent behaviour means that we don't need
	# to specify custom rules for certain paths (e.g. images and other assets,
	# `/updater`, `/ocm-provider`, `/ocs-provider`), and thus
	# `try_files $uri $uri/ /nextcloud/index.php$request_uri`
	# always provides the desired behaviour.
	index index.php index.html /nextcloud/index.php$request_uri;

	# Rule borrowed from `.htaccess` to handle Microsoft DAV clients
	location = /nextcloud {
		if ( $http_user_agent ~ ^DavClnt ) {
			return 302 /nextcloud/remote.php/webdav/$is_args$args;
		}
	}

	# Rules borrowed from `.htaccess` to hide certain paths from clients
	location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
	location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }

	# Ensure this block, which passes PHP files to the PHP process, is above the blocks
	# which handle static assets (as seen below). If this block is not declared first,
	# then Nginx will encounter an infinite rewriting loop when it prepends
	# `/nextcloud/index.php` to the URI, resulting in a HTTP 500 error response.
	location ~ \.php(?:$|/) {
		fastcgi_split_path_info ^(.+?\.php)(/.*|)$;
		set $path_info $fastcgi_path_info;
		try_files $fastcgi_script_name =404;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param HTTPS $https;
		fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
		fastcgi_param front_controller_active true; # Enable pretty URLs without /index.php/
		fastcgi_pass php;
		fastcgi_intercept_errors on;
		fastcgi_request_buffering off;
		fastcgi_max_temp_file_size 0; # Allow downloads > 1 GiB: https://github.com/nextcloud/documentation/pull/7979
	}

	include mime.types;
	types {
		text/javascript js mjs;
		application/wasm wasm;
	}

	location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map)$ {
		try_files $uri /nextcloud/index.php$request_uri;
		# HTTP response headers borrowed from Nextcloud `.htaccess`
		add_header Cache-Control "public, max-age=15778463$asset_immutable";
		#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;
		add_header Referrer-Policy "no-referrer" always;
		add_header X-Content-Type-Options "nosniff" always;
		add_header X-Download-Options "noopen" always;
		add_header X-Frame-Options "SAMEORIGIN" always;
		add_header X-Permitted-Cross-Domain-Policies "none" always;
		add_header X-Robots-Tag "noindex, nofollow" always;
		add_header X-XSS-Protection "1; mode=block" always;
		access_log off; # Optional: Don't log access to assets
	}

	location ~ \.woff2?$ {
		try_files $uri /nextcloud/index.php$request_uri;
		expires 7d; # Cache-Control policy borrowed from `.htaccess`
		access_log off; # Optional: Don't log access to assets
	}

	# Rule borrowed from `.htaccess`
	location /nextcloud/remote {
		return 301 /nextcloud/remote.php$request_uri;
	}

	location /nextcloud {
		try_files $uri $uri/ /nextcloud/index.php$request_uri;
	}
}