.ocdata, "Dein Datenverzeichnis ist ungültig" altbekanntes Thema

Moin Leute,

Dieses Thema wurde hier schon Mehrfach behandelt und es gibt im www auch tausende Workarrounds, die für die betreffenden User Zielführend waren, allerdings nicht für mich, weswegen ich mich nun Hoffnungsvoll an euch wende.

Nextcloud 24.0.4.1 lief bis heute ca. zwei Wochen auf einem Debian11 LXC von Proxmox mit PHP 8.1 und einem Apache2 (v2.4) Webserver. Nach einem Neustart des Servers (DL180 Gen9) folgte besagter Fehler.
Das Datenverzeichnis wird von OMV via NFS mit dem Container verbunden, die Rechte sind entsprechend gesetzt (rwxrws—), owner ist www-data.

Das NFS-Laufwerk wurde folgendermaßen eingebunden:

192.168.0.101:/export/pve-nextcloud /mnt/nc-share nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Ich habe, wie schon oben geschrieben, bisher keine Lösung für dieses Problem finden können, bis auf eine Neuinstallation.

letzter Logeintrag der Nextcloud:

{"reqId":"vCkbe8rBdjEaLDbHWPnw","level":3,"time":"2022-09-17T09:52:09+00:00","remoteAddr":"","user":"--","app":"PHP","method":"","url":"--","message":"dns_get_record(): A temporary server error occurred. at 
/var/www/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php#57","userAgent":"--","version":"24.0.4.1","exception":{"Exception":"Error","Message":"dns_get_record(): A temporary server error occurred. at 
/var/www/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php#57","Code":0,"Trace":[{"function":"onError","class":"OC\\Log\\ErrorHandler","type":"::"},
{"file":"/var/www/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php","line":57,"function":"dns_get_record"},
{"file":"/var/www/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php","line":74,"function":"soaRecord","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php","line":128,"function":"dnsResolve","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":35,"function":"OC\\Http\\Client\\{closure}","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->","args":["*** sensitive parameters replaced ***"]},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":31,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":63,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php","line":75,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":331,"function":"__invoke","class":"GuzzleHttp\\HandlerStack","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":168,"function":"transfer","class":"GuzzleHttp\\Client","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":187,"function":"requestAsync","class":"GuzzleHttp\\Client","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Http/Client/Client.php","line":218,"function":"request","class":"GuzzleHttp\\Client","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Updater/VersionCheck.php","line":131,"function":"get","class":"OC\\Http\\Client\\Client","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Updater/VersionCheck.php","line":92,"function":"getUrlContent","class":"OC\\Updater\\VersionCheck","type":"->"},
{"file":"/var/www/nextcloud/apps/updatenotification/lib/Notification/BackgroundJob.php","line":106,"function":"check","class":"OC\\Updater\\VersionCheck","type":"->"},
{"file":"/var/www/nextcloud/apps/updatenotification/lib/Notification/BackgroundJob.php","line":91,"function":"checkCoreUpdate","class":"OCA\\UpdateNotification\\Notification\\BackgroundJob","type":"->"},
{"file":"/var/www/nextcloud/lib/private/BackgroundJob/Job.php","line":54,"function":"run","class":"OCA\\UpdateNotification\\Notification\\BackgroundJob","type":"->"},
{"file":"/var/www/nextcloud/lib/private/BackgroundJob/TimedJob.php","line":60,"function":"execute","class":"OC\\BackgroundJob\\Job","type":"->"},
{"file":"/var/www/nextcloud/cron.php","line":151,"function":"execute","class":"OC\\BackgroundJob\\TimedJob","type":"->"}],"File":"/var/www/nextcloud/lib/private/Log/ErrorHandler.php","Line":92,"CustomMessage":"--"}}

Nextcloud config.php

<?php
$CONFIG = array (
  'instanceid' => 'geheim',
  'passwordsalt' => 'geheim',
  'secret' => 'geheim',
  'trusted_domains' => 
  array (
    0 => 'nc.domain.de',
    1 => '192.168.0.110',
  ),
  'trusted_proxies' => 
  array (
    0 => '192.168.0.113',
  ),
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'filelocking.enabled' => 'true',
  'redis' => 
  array (
    'host' => '/var/run/redis/redis.sock',
    'port' => 0,
    'timeout' => 0.0,
  ),
  'default_phone_region' => 'DE',
  'datadirectory' => '/mnt/nc-share/nextcloud/nc_data',
  'dbtype' => 'mysql',
  'version' => '24.0.4.1',
  'overwrite.cli.url' => 'https://nc.domain.de',
  'dbname' => 'ncdb',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'ncdbuser',
  'dbpassword' => 'geheim',
  'installed' => true,
  'mail_smtpmode' => 'smtp',
  'mail_sendmailmode' => 'smtp',
);

Falls noch etwas fehlen sollte, bitte bescheid geben, ich reiche es dann nach.

Grüße
Kochi

EDIT:

occ files:scan --all brachte folgendes ergebnis:

root@Nextcloud:~# sudo -u www-data php /var/www/nextcloud/occ files:scan --all
Starting scan for user 1 out of 3 (Admin)
Starting scan for user 2 out of 3 (user1)
Starting scan for user 3 out of 3 (user2)
+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 282     | 13315 | 00:00:09     |
+---------+-------+--------------+

Heißt für mich er hat zumindest Lesezugriff, warum er aber die .ocdata nicht finden kann ist mir ein Räzel.
Weiterhin habe ich ein Cronjob laufen, der alle 5min die cron.php aufruft und den backgroundjob entsprechend eingestellt:

sudo -u www-data php /var/www/nextcloud/occ background:cron

Moin,

das Problem wurde gelöst!

Es lag daran, das der Webserver gestartet wurde, bevor der Mountpoint da war.
Sobald ich also den Container neu startete und die Webseite aufrufen wollte kam der .ocdata-Fehler. Ich habe daraufhin den apache2.service so angepasst, das er wartet, bis das Laufwerk gemountet ist und dann den Service startet.

Falls es Member mit ähnlichen Fehlern gibt, hier eine kurze Anleitung:

Sucht zuerst mittels systemctl list-units --type=mount den Mountpoint.
In meinem Fall sieht der Output folgendermaßen aus:

root@Nextcloud:~# systemctl list-units --type=mount
  UNIT                                LOAD   ACTIVE SUB     DESCRIPTION
  -.mount                             loaded active mounted Root Mount
  mnt-nc\x2dshare.mount               loaded active mounted /mnt/nc-share

Als nächstes müsst Ihr den Service finden und bearbeiten. Bei mir liegt der Service in

/etc/systemd/system/multi-user.target.wants/apache2.service

In welchem Ordner er bei euch liegt kann man mittels systemctl disable apache2.service herausfinden. Nicht vergessen den Service danach wieder mit enable zu aktivieren, sonst startet der Apache nich beim Start der VM.

Bearbeitet danach den Service mit einem Editor eurer Wahl und fügt die Zeile Requires=mnt-nc\x2dshare.mount und unter After= ans Ende mnt-nc\x2dshare.mount.
Die Datei sieht dann so aus:

[Unit]
Description=The Apache HTTP Server
Requires=mnt-nc\x2dshare.mount
After=network.target remote-fs.target nss-lookup.target mnt-nc\x2dshare.mount
Documentation=https://httpd.apache.org/docs/2.4/

[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl graceful-stop
ExecReload=/usr/sbin/apachectl graceful
KillMode=mixed
PrivateTmp=true
Restart=on-abort

[Install]
WantedBy=multi-user.target

Speichern und und den Editor verlassen.

Anschließend den Container oder die VM neu starten.
Beim erneuten Aufrufen der Seite sollte der .ocdata-Fehler verschwunden sein.

Grüße Kochi