[Solved] Image Previews only working for HEIC photos

Nextcloud version (eg, 20.0.5): 27.0.0
Operating system and version (eg, Ubuntu 20.04): Ubuntu 22.04.2 LTS x86_64
Apache or nginx version (eg, Apache 2.4.25): Apache/2.4.52
PHP version (eg, 7.4): 8.2

The issue you are facing:

Hello to the Nextcloud community

I currently cannot get image previews going except for HEIC images. HEIC images show previews, but everything else, including all other image types, documents, etcetera do not show any image previews.

I don’t honestly remember if those image previews were working before I enabled HEIC images. I tried disabling HEIC image support by removing the HEIC line from the config.php, but that makes my server crash.

The output of your Nextcloud log in Admin > Logging:

Error	PHP	Using ${var} in strings is deprecated, use {$var} instead at /var/www/nextcloud/apps/mail/vendor/voku/portable-utf8/src/voku/helper/UTF8.php#13409		2023-06-16T14:46:11-0400
Error	PHP	Using ${var} in strings is deprecated, use {$var} instead at /var/www/nextcloud/apps/mail/vendor/voku/portable-utf8/src/voku/helper/UTF8.php#13409		2023-06-16T14:23:58-0400
Error	PHP	Using ${var} in strings is deprecated, use {$var} instead at /var/www/nextcloud/apps/mail/vendor/voku/portable-utf8/src/voku/helper/UTF8.php#13409		2023-06-16T14:17:57-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T14:14:12-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T14:12:20-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T14:11:22-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T14:10:01-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T14:09:14-0400
Error	webdav	InvalidArgumentException: X-OC-MTime header must be a valid positive integer		2023-06-16T14:00:16-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:57:31-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:57:30-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:57:22-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:57:01-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:56:31-0400
Error	PHP	Using ${var} in strings is deprecated, use {$var} instead at /var/www/nextcloud/apps/mail/vendor/voku/portable-utf8/src/voku/helper/UTF8.php#13409		2023-06-16T13:48:19-0400
Error	PHP	Using ${var} in strings is deprecated, use {$var} instead at /var/www/nextcloud/apps/mail/vendor/voku/portable-utf8/src/voku/helper/UTF8.php#13409		2023-06-16T13:47:09-0400
Error	PHP	Using ${var} in strings is deprecated, use {$var} instead at /var/www/nextcloud/apps/mail/vendor/voku/portable-utf8/src/voku/helper/UTF8.php#13409		2023-06-16T13:45:37-0400
Error	PHP	Using ${var} in strings is deprecated, use {$var} instead at /var/www/nextcloud/apps/mail/vendor/voku/portable-utf8/src/voku/helper/UTF8.php#13409		2023-06-16T13:43:15-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:39:54-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:29:06-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:28:32-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:28:02-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:27:32-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:27:02-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:26:32-0400
Error	no app in context	Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45		2023-06-16T13:26:02-0400
Error	PHP	Using ${var} in strings is deprecated, use {$var} instead at /var/www/nextcloud/apps/mail/vendor/voku/portable-utf8/src/voku/helper/UTF8.php#13409		2023-06-16T13:25:50-0400
Error	PHP	Allowed memory size of 134217728 bytes exhausted (tried to allocate 263103560 bytes) at /var/www/nextcloud/lib/private/Installer.php#299		2023-06-16T13:25:40-0400

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

<?php
$CONFIG = array (
  'instanceid' => 'ocdytz39duu6',
  'passwordsalt' => 'hidden',
  'secret' => 'hiden',
  'trusted_domains' =>
  array (
    0 => 'hidden.domain.com',
  ),
  'datadirectory' => '/10tb/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '27.0.0.8',
  'overwrite.cli.url' => 'https://mydomain.hidden',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'hidden',
  'dbpassword' => 'hidden',
  'installed' => true,
  'maintenance' => false,
  'enable_previews' => true,
  'enabledPreviewProviders' => [
  'OC\\Preview\\HEIC',
],
);

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

[Fri Jun 16 17:24:23.469501 2023] [mpm_prefork:notice] [pid 31459] AH00170: caught SIGWINCH, shutting down gracefully
Created directory: /var/lib/snmp/cert_indexes
[Fri Jun 16 17:24:23.573659 2023] [mpm_prefork:notice] [pid 35683] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 17:24:23.573703 2023] [core:notice] [pid 35683] AH00094: Command line: '/usr/sbin/apache2'
[Fri Jun 16 17:25:40.990277 2023] [php:error] [pid 35684] [client 73.123.37.53:61925] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 263103560 bytes) in /var/www/nextclo>[Fri Jun 16 17:29:13.376917 2023] [access_compat:error] [pid 35690] [client 73.123.37.53:62192] AH01797: client denied by server configuration: /var/www/nextcloud/data/.ocdata
[Fri Jun 16 17:43:10.400279 2023] [mpm_prefork:notice] [pid 35683] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Jun 16 17:43:10.544235 2023] [mpm_prefork:notice] [pid 36346] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 17:43:10.544289 2023] [core:notice] [pid 36346] AH00094: Command line: '/usr/sbin/apache2'
[Fri Jun 16 17:45:33.547472 2023] [mpm_prefork:notice] [pid 36346] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Jun 16 17:45:33.676455 2023] [mpm_prefork:notice] [pid 36408] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 17:45:33.676502 2023] [core:notice] [pid 36408] AH00094: Command line: '/usr/sbin/apache2'
[Fri Jun 16 17:46:50.505953 2023] [mpm_prefork:notice] [pid 36408] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Jun 16 17:46:50.642991 2023] [mpm_prefork:notice] [pid 36443] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 17:46:50.643039 2023] [core:notice] [pid 36443] AH00094: Command line: '/usr/sbin/apache2'
[Fri Jun 16 17:48:13.970201 2023] [mpm_prefork:notice] [pid 36443] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Jun 16 17:48:14.109958 2023] [mpm_prefork:notice] [pid 36494] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 17:48:14.110003 2023] [core:notice] [pid 36494] AH00094: Command line: '/usr/sbin/apache2'
[Fri Jun 16 18:17:55.931521 2023] [mpm_prefork:notice] [pid 36494] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Jun 16 18:17:56.048432 2023] [mpm_prefork:notice] [pid 39584] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 18:17:56.048586 2023] [core:notice] [pid 39584] AH00094: Command line: '/usr/sbin/apache2'
[Fri Jun 16 18:23:55.385028 2023] [mpm_prefork:notice] [pid 39584] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Jun 16 18:23:55.532970 2023] [mpm_prefork:notice] [pid 39745] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 18:23:55.533018 2023] [core:notice] [pid 39745] AH00094: Command line: '/usr/sbin/apache2'
[Fri Jun 16 18:42:09.095094 2023] [php:error] [pid 53965] [client 51.12.216.100:57571] script '/var/www/nextcloud/xmlrpc.php' not found or unable to stat
[Fri Jun 16 18:45:50.992823 2023] [php:error] [pid 52489] [client 73.123.37.53:50480] PHP Parse error:  Unclosed '(' on line 2 does not match ']' in /var/www/nextcloud/config/config.php on line 23
[Fri Jun 16 18:45:54.222975 2023] [mpm_prefork:notice] [pid 39745] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Jun 16 18:45:54.360739 2023] [mpm_prefork:notice] [pid 54117] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 18:45:54.360884 2023] [core:notice] [pid 54117] AH00094: Command line: '/usr/sbin/apache2'
[Fri Jun 16 18:45:56.568776 2023] [php:error] [pid 54119] [client 73.123.37.53:50487] PHP Parse error:  Unclosed '(' on line 2 does not match ']' in /var/www/nextcloud/config/config.php on line 23
[Fri Jun 16 18:45:57.474431 2023] [php:error] [pid 54120] [client 73.123.37.53:50488] PHP Parse error:  Unclosed '(' on line 2 does not match ']' in /var/www/nextcloud/config/config.php on line 23
[Fri Jun 16 18:45:59.050397 2023] [php:error] [pid 54121] [client 73.123.37.53:50490] PHP Parse error:  Unclosed '(' on line 2 does not match ']' in /var/www/nextcloud/config/config.php on line 23, referer: h>[Fri Jun 16 18:46:03.280710 2023] [php:error] [pid 54123] [client 73.123.37.53:50492] PHP Parse error:  Unclosed '(' on line 2 does not match ']' in /var/www/nextcloud/config/config.php on line 23
[Fri Jun 16 18:46:03.280709 2023] [php:error] [pid 54122] [client 73.123.37.53:50493] PHP Parse error:  Unclosed '(' on line 2 does not match ']' in /var/www/nextcloud/config/config.php on line 23
[Fri Jun 16 18:46:09.365755 2023] [mpm_prefork:notice] [pid 54117] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Jun 16 18:46:09.466959 2023] [mpm_prefork:notice] [pid 54142] AH00163: Apache/2.4.52 (Ubuntu) OpenSSL/3.0.2 configured -- resuming normal operations
[Fri Jun 16 18:46:09.467004 2023] [core:notice] [pid 54142] AH00094: Command line: '/usr/sbin/apache2'

I also installed the image preview generator app. I can run it and it completes without errors. Example output:

2023-06-16T19:10:07+00:00 Generating previews for /jakem/files/USB Drive Recovery/week 7 discussion WCC.docx
2023-06-16T19:10:07+00:00 Generating previews for /jakem/files/USB Drive Recovery/week7 paper WWC - opinion.docx
2023-06-16T19:10:07+00:00 Generating previews for /jakem/files/USB Drive Recovery/white collar crime and gender- opinion.docx
2023-06-16T19:10:07+00:00 Generating previews for /jakem/files/USB Drive Recovery/white collar crime week 1.docx
2023-06-16T19:10:07+00:00 Generating previews for /jakem/files/USB Drive Recovery/youth probabtion.docx
2023-06-16T19:10:07+00:00 Generating previews for /jakem/files/USB Drive Recovery/youth probation.docx
srvr01@server:~$

This is a new install, with some files brought over from an owncloud setup (downloaded via owncloud then uploaded via nextcloud, it was not updated or moved over internally)

hi Lucas_E maybe this thread will help you further

Hi @wwe thank you for the reply. That’s actually the opposite of my issue. HEIC images are working fine, all other formats do not show previews.

I see three things:

  • Your difficulty disabling the previews was likely due to a stray bracket left when you tried to remove it from your config.php (see below)
  • Error logs indicate your PHP environment is running with memory_limit set below the minimum which may cause some things to fail
  • The errors about IntlBreakIterator will need a full stack trace to isolate - please post the Copy raw contents (far right of the entry in Logging will show a clipboard icon where this option will be available) from your logs for one of those entries
  • Check your browser console to see which request is generating that broken image and match it to a transaction entry in your Nextcloud logs
 'enabledPreviewProviders' => [
 'OC\\Preview\\HEIC',
],

Note: Leave the ); after these three lines

1 Like

Ill take a look at those.

The memory limit is an old error, It’s at 800mb now I believe.

1 Like

Here’s one of the intlHBreakIterator errors:

{"reqId":"N0NpyJccZUM21VVJvpCk","level":3,"time":"2023-06-16T17:26:32+00:00","remoteAddr":"hiddenip","user":"myusername","app":"no app in context","method":"GET","url":"/ocs/v2.php/apps/spreed/api/v4/room","message":"Class \"IntlBreakIterator\" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","version":"27.0.0.8","exception":{"Exception":"Exception","Message":"Class \"IntlBreakIterator\" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45","Code":0,"Trace":[{"file":"/var/www/nextcloud/lib/private/AppFramework/App.php","line":183,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::"},{"file":"/var/www/nextcloud/ocs/v1.php","line":64,"function":"match","class":"OC\\Route\\Router","type":"->"},{"file":"/var/www/nextcloud/ocs/v2.php","line":23,"args":["/var/www/nextcloud/ocs/v1.php"],"function":"require_once"}],"File":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","Line":169,"Previous":{"Exception":"Error","Message":"Class \"IntlBreakIterator\" not found","Code":0,"Trace":[{"file":"/var/www/nextcloud/apps/spreed/lib/Service/AvatarService.php","line":344,"function":"isValidSingleEmoji","class":"OC\\EmojiHelper","type":"->"},{"file":"/var/www/nextcloud/apps/spreed/lib/Service/RoomFormatter.php","line":138,"function":"getAvatarVersion","class":"OCA\\Talk\\Service\\AvatarService","type":"->"},{"file":"/var/www/nextcloud/apps/spreed/lib/Service/RoomFormatter.php","line":72,"function":"formatRoomV4","class":"OCA\\Talk\\Service\\RoomFormatter","type":"->"},{"file":"/var/www/nextcloud/apps/spreed/lib/Controller/RoomController.php","line":392,"function":"formatRoom","class":"OCA\\Talk\\Service\\RoomFormatter","type":"->"},{"file":"/var/www/nextcloud/apps/spreed/lib/Controller/RoomController.php","line":259,"function":"formatRoom","class":"OCA\\Talk\\Controller\\RoomController","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":230,"function":"getRooms","class":"OCA\\Talk\\Controller\\RoomController","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":137,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/App.php","line":183,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::"},{"file":"/var/www/nextcloud/ocs/v1.php","line":64,"function":"match","class":"OC\\Route\\Router","type":"->"},{"file":"/var/www/nextcloud/ocs/v2.php","line":23,"args":["/var/www/nextcloud/ocs/v1.php"],"function":"require_once"}],"File":"/var/www/nextcloud/lib/private/EmojiHelper.php","Line":45},"CustomMessage":"--"},"id":"648fda1c81f5d"}

Here it is formatted:

[no app in context] Error: Exception: Class "IntlBreakIterator" not found in file '/var/www/nextcloud/lib/private/EmojiHelper.php' line 45 at <<closure>>

0. /var/www/nextcloud/lib/private/AppFramework/App.php line 183
   OC\AppFramework\Http\Dispatcher->dispatch()
1. /var/www/nextcloud/lib/private/Route/Router.php line 315
   OC\AppFramework\App::main()
2. /var/www/nextcloud/ocs/v1.php line 64
   OC\Route\Router->match()
3. /var/www/nextcloud/ocs/v2.php line 23
   require_once("/var/www/nextcloud/ocs/v1.php")

Caused by:

Error: Class "IntlBreakIterator" not found at <<closure>>

 0. /var/www/nextcloud/apps/spreed/lib/Service/AvatarService.php line 344
    OC\EmojiHelper->isValidSingleEmoji()
 1. /var/www/nextcloud/apps/spreed/lib/Service/RoomFormatter.php line 138
    OCA\Talk\Service\AvatarService->getAvatarVersion()
 2. /var/www/nextcloud/apps/spreed/lib/Service/RoomFormatter.php line 72
    OCA\Talk\Service\RoomFormatter->formatRoomV4()
 3. /var/www/nextcloud/apps/spreed/lib/Controller/RoomController.php line 392
    OCA\Talk\Service\RoomFormatter->formatRoom()
 4. /var/www/nextcloud/apps/spreed/lib/Controller/RoomController.php line 259
    OCA\Talk\Controller\RoomController->formatRoom()
 5. /var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php line 230
    OCA\Talk\Controller\RoomController->getRooms()
 6. /var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php line 137
    OC\AppFramework\Http\Dispatcher->executeController()
 7. /var/www/nextcloud/lib/private/AppFramework/App.php line 183
    OC\AppFramework\Http\Dispatcher->dispatch()
 8. /var/www/nextcloud/lib/private/Route/Router.php line 315
    OC\AppFramework\App::main()
 9. /var/www/nextcloud/ocs/v1.php line 64
    OC\Route\Router->match()
10. /var/www/nextcloud/ocs/v2.php line 23
    require_once("/var/www/nextcloud/ocs/v1.php")

GET /ocs/v2.php/apps/spreed/api/v4/room
from hiddenup by username at 2023-06-16T17:26:32+00:00

As far as the console, I get a lot of “jQuery is depcreceted” errors, no image related errors anywhere. Still no icons.

Those errors were right after install. I’ve recreated previews a couple of times, and there are no errors in the logs other than a couple of failed logins from the last 2 days (an old owncloud client trying to sign in)

The issue is resolved by removing the line that enables HEIC support:

  'enabledPreviewProviders' => [
  'OC\\Preview\\HEIC',
],

So this config file works for most file types but not HEIC images:

<?php
$CONFIG = array (
  'instanceid' => 'ocdytz39duu6',
  'passwordsalt' => 'no',
  'secret' => 'no',
  'trusted_domains' =>
  array (
    0 => 'domain.domain',
  ),
  'datadirectory' => '/10tb/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '27.0.0.8',
  'overwrite.cli.url' => 'https://domain.domain',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'bulkupload.enabled' => false,
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'not',
  'dbpassword' => 'no',
  'installed' => true,
  'maintenance' => false,
  'enable_previews' => true,
);

This one works for HEIC images, but nothing else:

<?php
$CONFIG = array (
  'instanceid' => 'ocdytz39duu6',
  'passwordsalt' => 'no',
  'secret' => 'no',
  'trusted_domains' =>
  array (
    0 => 'domain.domain',
  ),
  'datadirectory' => '/10tb/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '27.0.0.8',
  'overwrite.cli.url' => 'https://domain.domain',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'bulkupload.enabled' => false,
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'not',
  'dbpassword' => 'no',
  'installed' => true,
  'maintenance' => false,
  'enable_previews' => true,
  'enabledPreviewProviders' => [
  'OC\\Preview\\HEIC',
],
);

How can I have both?

Looks like I do actually have to list all types.

https://www.reddit.com/r/NextCloud/comments/rwu0sh/heic_preview_support/

Solved.

Fixed config ends with:

  'maintenance' => false,
  'enable_previews' => true,
  'enabledPreviewProviders' =>
  array (
    'OC\Preview\PNG',
    'OC\Preview\JPEG',
    'OC\Preview\GIF',
    'OC\Preview\BMP',
    'OC\Preview\XBitmap',
    'OC\Preview\MP3',
    'OC\Preview\TXT',
    'OC\Preview\MarkDown',
    'OC\Preview\OpenDocument',
    'OC\Preview\Krita',
    'OC\Preview\HEIC',
  ),
);
4 Likes

Perfect. Still wondering what those “privacy concerns” at https://github.com/nextcloud/server/pull/28079 look like (referring to HackerOne).

In my case I used the default enabledPreviewProviders but not configuring this in config.php at all. Once that PR was shipped HEIC preview support therefore got disabled for me. Wondering for a long time.

While it is great to have HEIC preview working again, I really want to clarify what’s the actual privacy/security risk of it e. g. if you expose your NC instance to the internet.

from the hackerone report I mainly see a security risk - imagick starts like a normal child process at the OS level and runs kind of outside of control of Nextcloud. this allows to craft attacks using malicious content embedded in rich formats imagick understands.

privacy is a side effect of the problem as shown in test.heic. if the attacker knows/guess a OS local/internal file name she has no access to it she could create a preview of this file using internal path (e.g. user bob stores a file passwords.txt on his root level alice could access this file using a reference to {nextcloud_files_root}/files/bob/files/password.txt revealing the contents of this file…

1 Like

And the prerequisite is having an attacker being able to upload stuff, right?

So how huge is the risk if you don’t have public upload shares without password/access protection and trust in NC itself (patching thins in time)? Or when people you share folders with are trusted?

I still try to figure out the actual practical impact - or if it’s more like a „if this and this and this happens, then it will be a problem“.