External Storage giving an internal sever error

[/details]

Nextcloud version : 27.1.4
Operating system and version : Raspbian Bullseye
Apache or nginx version : Apache 2.4.56
PHP version 8.2

The issue you are facing:
I have mounted an external hard drive to my raspberry pi. I have also enabled the external storage app in Nextcloud. However, when I go to /Administration Tools/External Storage, I get an Internal Server Error message.

Is this the first time you’ve seen this error? : Y

Steps to replicate it:

  1. Install Nextcloud on a raspberry Pi using https://pimylifeup.com/raspberry-pi-nextcloud-server/
  2. Enable the external storage app
  3. Try to access the Nextcloud external storage administration tool

The output of your Nextcloud log in Admin > Logging:

[index] Error: Exception: hash_hkdf(): Argument #2 ($key) cannot be empty in file '/var/www/nextcloud/lib/private/Security/Crypto.php' line 160 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/lib/base.php line 1068
   OC\Route\Router->match()
3. /var/www/nextcloud/index.php line 36
   OC::handleRequest()

Caused by:

ValueError: hash_hkdf(): Argument #2 ($key) cannot be empty at <<closure>>

 0. /var/www/nextcloud/lib/private/Security/Crypto.php line 160
    hash_hkdf()
 1. /var/www/nextcloud/lib/private/Security/Crypto.php line 134
    OC\Security\Crypto->decryptWithoutSecret("*** sensitive parameters replaced ***")
 2. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 526
    OC\Security\Crypto->decrypt("*** sensitive parameters replaced ***")
 3. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 506
    OCA\Files_External\Service\DBConfigService->decryptValue("*** sensitive parameters replaced ***")
 4. <<closure>>
    OCA\Files_External\Service\DBConfigService->OCA\Files_External\Service\{closure}("*** sensitive parameters replaced ***")
 5. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 504
    array_map()
 6. <<closure>>
    OCA\Files_External\Service\DBConfigService->createKeyValueMap("*** sensitive parameters replaced ***")
 7. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 482
    array_map()
 8. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 417
    OCA\Files_External\Service\DBConfigService->getConfigForMounts()
 9. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 157
    OCA\Files_External\Service\DBConfigService->getMountsFromQuery()
10. /var/www/nextcloud/apps/files_external/lib/Service/StoragesService.php line 88
    OCA\Files_External\Service\DBConfigService->getAdminMounts()
11. /var/www/nextcloud/apps/files_external/lib/Service/StoragesService.php line 144
    OCA\Files_External\Service\StoragesService->readDBConfig()
12. /var/www/nextcloud/apps/files_external/lib/Service/StoragesService.php line 194
    OCA\Files_External\Service\StoragesService->readConfig()
13. /var/www/nextcloud/apps/files_external/lib/Service/StoragesService.php line 203
    OCA\Files_External\Service\StoragesService->getAllStorages()
14. /var/www/nextcloud/apps/files_external/lib/Settings/Admin.php line 66
    OCA\Files_External\Service\StoragesService->getStorages()
15. /var/www/nextcloud/apps/settings/lib/Controller/CommonSettingsTrait.php line 129
    OCA\Files_External\Settings\Admin->getForm()
16. /var/www/nextcloud/apps/settings/lib/Controller/AdminSettingsController.php line 83
    OCA\Settings\Controller\AdminSettingsController->formatSettings()
17. /var/www/nextcloud/apps/settings/lib/Controller/CommonSettingsTrait.php line 149
    OCA\Settings\Controller\AdminSettingsController->getSettings()
18. /var/www/nextcloud/apps/settings/lib/Controller/AdminSettingsController.php line 68
    OCA\Settings\Controller\AdminSettingsController->getIndexResponse()
19. /var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php line 230
    OCA\Settings\Controller\AdminSettingsController->index()
20. /var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php line 137
    OC\AppFramework\Http\Dispatcher->executeController()
21. /var/www/nextcloud/lib/private/AppFramework/App.php line 183
    OC\AppFramework\Http\Dispatcher->dispatch()
22. /var/www/nextcloud/lib/private/Route/Router.php line 315
    OC\AppFramework\App::main()
23. /var/www/nextcloud/lib/base.php line 1068
    OC\Route\Router->match()
24. /var/www/nextcloud/index.php line 36
    OC::handleRequest()

GET /nextcloud/index.php/settings/admin/externalstorages
from 192.168.0.163 by @thepas at 2023-11-24T17:01:47+00:00
[core] Error: ValueError: hash_hkdf(): Argument #2 ($key) cannot be empty at <<closure>>

 0. /var/www/nextcloud/lib/private/Security/Crypto.php line 160
    hash_hkdf()
 1. /var/www/nextcloud/lib/private/Security/Crypto.php line 134
    OC\Security\Crypto->decryptWithoutSecret("*** sensitive parameters replaced ***")
 2. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 526
    OC\Security\Crypto->decrypt("*** sensitive parameters replaced ***")
 3. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 506
    OCA\Files_External\Service\DBConfigService->decryptValue("*** sensitive parameters replaced ***")
 4. <<closure>>
    OCA\Files_External\Service\DBConfigService->OCA\Files_External\Service\{closure}("*** sensitive parameters replaced ***")
 5. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 504
    array_map()
 6. <<closure>>
    OCA\Files_External\Service\DBConfigService->createKeyValueMap("*** sensitive parameters replaced ***")
 7. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 482
    array_map()
 8. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 417
    OCA\Files_External\Service\DBConfigService->getConfigForMounts()
 9. /var/www/nextcloud/apps/files_external/lib/Service/DBConfigService.php line 112
    OCA\Files_External\Service\DBConfigService->getMountsFromQuery()
10. /var/www/nextcloud/apps/files_external/lib/Service/UserGlobalStoragesService.php line 194
    OCA\Files_External\Service\DBConfigService->getMountsForUser()
11. /var/www/nextcloud/apps/files_external/lib/Config/ConfigAdapter.php line 109
    OCA\Files_External\Service\UserGlobalStoragesService->getAllStoragesForUser()
12. /var/www/nextcloud/lib/private/Files/Config/MountProviderCollection.php line 89
    OCA\Files_External\Config\ConfigAdapter->getMountsForUser()
13. /var/www/nextcloud/lib/private/Files/Config/MountProviderCollection.php line 138
    OC\Files\Config\MountProviderCollection->getMountsFromProvider()
14. /var/www/nextcloud/lib/private/Files/SetupManager.php line 215
    OC\Files\Config\MountProviderCollection->addMountForUser()
15. /var/www/nextcloud/lib/private/Files/SetupManager.php line 318
    OC\Files\SetupManager->OC\Files\{closure}("*** sensitive parameters replaced ***")
16. /var/www/nextcloud/lib/private/Files/SetupManager.php line 214
    OC\Files\SetupManager->setupForUserWith()
17. /var/www/nextcloud/lib/private/legacy/OC_Util.php line 111
    OC\Files\SetupManager->setupForUser()
18. /var/www/nextcloud/apps/files_versions/lib/Storage.php line 840
    OC_Util::setupFS()
19. /var/www/nextcloud/apps/files_versions/lib/Command/Expire.php line 60
    OCA\Files_Versions\Storage::expire()
20. /var/www/nextcloud/lib/private/Command/CommandJob.php line 35
    OCA\Files_Versions\Command\Expire->handle()
21. /var/www/nextcloud/lib/private/BackgroundJob/Job.php line 54
    OC\Command\CommandJob->run()
22. /var/www/nextcloud/lib/private/BackgroundJob/QueuedJob.php line 47
    OC\BackgroundJob\Job->execute()
23. /var/www/nextcloud/cron.php line 177
    OC\BackgroundJob\QueuedJob->execute()

GET /nextcloud/cron.php
from 192.168.0.163 at 2023-11-24T17:02:27+00:00

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

<?php
$CONFIG = array (
  'instanceid' => 'ocxxxxxxx',
  'passwordsalt' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'trusted_domains' => 
  array (
    0 => 'MY_IP_ADDRESS',
  ),
  'datadirectory' => '/var/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '27.1.4.1',
  'overwrite.cli.url' => 'https://MY_IP_ADDRESS/nextcloud',
  'dbname' => 'NastyPiDB',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'oc_username',
  'dbpassword' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'installed' => true,
  'updater.secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'maintenance' => false,
  'theme' => '',
  'loglevel' => 2,
);

Is this a brand-new installation?

No previously configured users or database restores or anything like that?

Does the secret field in your config.php contain a real string? (I understand you redacted it; just want to make sure it actually contains something and isn’t empty).

Thank you for your reply

I had an old installation, but the version I was running had reached end of life. I had tried updating step by step, but some of the dependencies (php) needed to be updated so I decided to uninstall and start again.

I was using a different username before, however I have since removed the previous users from the MariaDB table “oc_users”

The ‘secret’ field in the ‘config.php’ file contains a real string, I just replaced it with ‘xxxxx…x’

Pls let me know if there is anything else I should be doing (or not have done for this matter…)

Best,
Panayiotis