.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