Cron-Dienst läuft nicht mehr - Nextcloud auf einem Synology NAS

Lieber Support,

ich habe folgendes Problem:
Bei mir läuft Nextcloud auf einem Synology NAS DS920+. Diese ist auf dem neuesten Stand.
Nextcloud ist mit PHP Version 8.2 installiert. Eine neuere gibt es bei Synology noch nicht. Die Version der Nextcloud ist 31.0.6.
Beim Systemscan kommt die Meldung: Letzte Hintergrund-Jobausführung lief Vor 8 Monaten. Etwas scheint nicht in Ordnung zu sein. Check the background job settings.
Ich habe hierzu einen Dienst in Synology eingerichtet, der das eigentlich beheben sollte, es aber nicht tut:
bash
sudo -u http /volume1/web/nextcloud/occ background:job

Dieser wird jede Stunde ausgeführt.

Wo könnte das Problem liegen?

edit:
Folgende Meldung kommt, wenn ich diesen Befehl in der Konsole ausführe:
An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurre d in the driver: could not find driver in /volume1/web/nextcloud/lib/private/DB/ Connection.php:237
Stack trace:
#0 /volume1/web/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(458): OC\DB\ Connection->connect()
#1 /volume1/web/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(416): Doctri ne\DBAL\Connection->getDatabasePlatformVersion()
#2 /volume1/web/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(323): Doctri ne\DBAL\Connection->detectDatabasePlatform()
#3 /volume1/web/nextcloud/lib/private/DB/Connection.php(903): Doctrine\DBAL\Conn ection->getDatabasePlatform()
#4 /volume1/web/nextcloud/lib/private/DB/ConnectionAdapter.php(235): OC\DB\Conne ction->getDatabaseProvider()
#5 /volume1/web/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(96): OC\D B\ConnectionAdapter->getDatabaseProvider()
#6 /volume1/web/nextcloud/lib/private/AppConfig.php(1226): OC\DB\QueryBuilder\Qu eryBuilder->expr()
#7 /volume1/web/nextcloud/lib/private/AppConfig.php(243): OC\AppConfig->loadConf ig(NULL, false)
#8 /volume1/web/nextcloud/lib/private/AppConfig.php(1366): OC\AppConfig->searchV alues(‘enabled’, false, 2)
#9 /volume1/web/nextcloud/lib/private/App/AppManager.php(136): OC\AppConfig->get Values(false, ‘enabled’)
#10 /volume1/web/nextcloud/lib/private/App/AppManager.php(157): OC\App\AppManage r->getInstalledAppsValues()
#11 /volume1/web/nextcloud/lib/private/legacy/OC_App.php(188): OC\App\AppManager ->getInstalledApps()
#12 /volume1/web/nextcloud/lib/private/AppFramework/Bootstrap/Coordinator.php(48 ): OC_App::getEnabledApps()
#13 /volume1/web/nextcloud/lib/base.php(675): OC\AppFramework\Bootstrap\Coordina tor->runInitialRegistration()
#14 /volume1/web/nextcloud/lib/base.php(1171): OC::init()
#15 /volume1/web/nextcloud/console.php(28): require_once(‘/volume1/web/ne…’)
#16 /volume1/web/nextcloud/occ(33): require_once(‘/volume1/web/ne…’)

Wie kann ich das beheben und ist das das Problem, warum dieser Cron nicht läuft?

Ich weiß nicht, wie Du auf diesen occ-Befehl kommst, um einen Cron-Dienst auszuführen.
Bei mir läuft es seit etlichen Jahren mit dem ganz normalen Aufruf der cron.php.

sudo -u http php82 /volume1/web/nextcloud/cron.php
1 Like

Danke für den Befehl. Habe ihn getestet und da kommt folgende Fehlermeldung:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in /volume1/web/nextcloud/lib/private/App/AppStore/Fetcher/Fetcher.php on line 100
Wo kann ich diese Memory Size ändern?

Eventuell ist Dein PHP-Profil noch nicht richtig konfiguriert.
Versuch einmal vorab, ob der nachfolgende Befehl zum Erfolg führt.

sudo -u http php82 -d memory_limit=512M -f /volume1/web/nextcloud/cron.php

Wenn ja, dann musst Du Dein PHP-Profil für die Nextcloud anpassen.
memory_limit von 128M auf 1G oder 2G je nach verfügbarem RAM

Es hat jetzt zwar lange gedauert, aber der Befehl hat funktioniert. Danke dir!

Trage ich den jetzt bei der Aufgabe in Synology ein oder läuft das jetzt automatisch?

Kurz: Ja

Lang: Wenn Du die notwendigen Vorarbeiten in Deinem PHP-Profil erledigt hast, dann musst Du dem Befehl nicht immer das Speicherlimit mitgeben, daher würde auch der normale Befehl ausreichen.

Also im Aufgabenplaner als Benutzer root alle 5 Minuten den Befehl ausführen.

Da die Nextcloud hier nicht als native Instanz auf einem Synology NAS empfohlen wird, schau Dich eventuell auch einmal im Synology-Forum um oder auch bei MariusHosting.

Für eine native Nextcloud-Instanz auf einem NAS musst Du wesentlich mehr tun, als nur die Nextcloud zu installieren.

Also einen cronjob oder systemd timer, muss man auch auf einer Standard Linux Distro manuell einrichten, wenn man Nextcloud nativ installiert. :wink:

@Nasivin Kenne mich mit Synology nicht wirklich aus, aber folgendes ist warscheinlich die Lösung:

Siehe auch hier: Synology: Make Cron Job Work With Nextcloud – Marius Hosting

Das Problem bei einer nativen Installation auf einem NAS ähnelt jenem bei Installationen auf Webhosting-Plattformen. Grundsätzlich funktioniert es, allerdings gibt es je nach Plattform gewisse Einschränkungen. Hinzu kommt, dass sich die meisten Anleitungen, die man im Internet findet, sowie auch die offizielle Dokumentation auf normale Linux-Distributionen wie Debian oder Ubuntu beziehen. Was man dort liest, kann man dann in der Regel nicht einfach 1:1 copy&paste übernehmen, sondern muss es für die genutzte Plattform anpassen.

1 Like