Update auf 30.0.10 schlägt fehl wegen calendar app

Ich wollte meine nextcloud v 30.0.4 auf 30.0.10 aktualisieren.

  • login mit ssh
  • php occ upgrade

Die Ausführung bleibt dann bei der folgenden Meldung stehen:

{"reqId":"wfzVM2eVMXavWDj3Ix5G","level":1,"time":"2025-05-08T14:02:30+00:00","remoteAddr":"","user":"--","app":"updater","method":"","url":"--","message":"\\OC\\Updater::upgradeAppStoreApp: Update app \"calendar\" from appstore","userAgent":"--","version":"30.0.4.1","data":{"app":"updater"}}

Anschliessend deaktiviere ich den maintenance mode, aber es erscheint dann nur die Aufforderung, das Udpate zu starten:

Was soll ich jetzt tun?? Ein erneutes Ausführen des updated, egal ob im GUI oder per command line, bringt mich nur wieder an die gleiche Stelle.

The Basics

  • Nextcloud Server version: (30.0.4)
  • PHP version (e.g, 8.3):
    • 8.1.30
  • Is this the first time you’ve seen this error? (Yes / No):
    • Yes
  • When did this problem seem to first start?
    • when updrading to 30.0.10
  • Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
    • replace me
  • Are you using CloudfIare, mod_security, or similar? (Yes / No)
    • I don’t think so.

Log entries

Nextcloud

Please provide the log entries from your Nextcloud log that are generated during the time of problem (via the Copy raw option from Administration settings->Logging screen or from your nextcloud.log located in your data directory). Feel free to use a pastebin/gist service if necessary.

{"reqId":"aB2V7lI92LIiLon-k3pnRgAAADE","level":0,"time":"2025-05-09T05:43:10+00:00","remoteAddr":"145.40.209.143","user":"sdietschi","app":"no app in context","method":"PROPFIND","url":"/remote.php/dav/calendars/sdietschi/","message":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::andX without parameters is deprecated and will throw soon.","userAgent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0","version":"31.0.4.1","exception":{"Exception":"Exception","Message":"No parameters in call to OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder::andX","Code":0,"Trace":[{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Db/CoreQueryBuilder.php","line":1354,"function":"andX","class":"OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Db/CoreQueryBuilder.php","line":1122,"function":"limitInitiatorVisibility","class":"OCA\\Circles\\Db\\CoreQueryBuilder","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Db/CircleRequest.php","line":166,"function":"limitToInitiator","class":"OCA\\Circles\\Db\\CoreQueryBuilder","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Service/CircleService.php","line":538,"function":"getCircles","class":"OCA\\Circles\\Db\\CircleRequest","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Api/v1/Circles.php","line":134,"function":"getCircles","class":"OCA\\Circles\\Service\\CircleService","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/Connector/Sabre/Principal.php","line":546,"function":"joinedCircles","class":"OCA\\Circles\\Api\\v1\\Circles","type":"::"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/CalDavBackend.php","line":360,"function":"getCircleMembership","class":"OCA\\DAV\\Connector\\Sabre\\Principal","type":"->"},{"file":"/home/sites/site100039087/web/***/lib/public/AppFramework/Db/TTransactional.php","line":45,"function":"OCA\\DAV\\CalDAV\\{closure}","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/CalDavBackend.php","line":304,"function":"atomic","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/CalendarProvider.php","line":28,"function":"getCalendarsForUser","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->"},{"file":"/home/sites/site100039087/web/***/lib/private/Calendar/Manager.php","line":187,"function":"getCalendars","class":"OCA\\DAV\\CalDAV\\CalendarProvider","type":"->"},{"function":"OC\\Calendar\\{closure}","class":"OC\\Calendar\\Manager","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/***/lib/private/Calendar/Manager.php","line":176,"function":"array_map"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/AppCalendar/AppCalendarPlugin.php","line":52,"function":"getCalendarsForPrincipal","class":"OC\\Calendar\\Manager","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/AppCalendar/AppCalendarPlugin.php","line":34,"function":"getWrappedCalendars","class":"OCA\\DAV\\CalDAV\\AppCalendar\\AppCalendarPlugin","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/CalendarHome.php","line":118,"function":"fetchAllForCalendarHome","class":"OCA\\DAV\\CalDAV\\AppCalendar\\AppCalendarPlugin","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/DAV/Sharing/Plugin.php","line":185,"function":"getChildren","class":"OCA\\DAV\\CalDAV\\CalendarHome","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"propFind","class":"OCA\\DAV\\DAV\\Sharing\\Plugin","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":1052,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":984,"function":"getPropertiesByNode","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":1664,"function":"getPropertiesIteratorForPath","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":1649,"function":"writeMultiStatus","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":346,"function":"generateMultiStatus","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpPropFind","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/Connector/Sabre/Server.php","line":49,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/Server.php","line":398,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/appinfo/v2/remote.php","line":21,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/remote.php","line":145,"args":["/home/sites/site100039087/web/***/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/home/sites/site100039087/web/***/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php","Line":66,"message":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::andX without parameters is deprecated and will throw soon.","exception":{},"CustomMessage":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::andX without parameters is deprecated and will throw soon."}}
{"reqId":"aB2V7lI92LIiLon-k3pnRgAAADE","level":0,"time":"2025-05-09T05:43:10+00:00","remoteAddr":"145.40.209.143","user":"sdietschi","app":"no app in context","method":"PROPFIND","url":"/remote.php/dav/calendars/sdietschi/","message":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::orX without parameters is deprecated and will throw soon.","userAgent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0","version":"31.0.4.1","exception":{"Exception":"Exception","Message":"No parameters in call to OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder::orX","Code":0,"Trace":[{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Db/CoreQueryBuilder.php","line":1355,"function":"orX","class":"OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Db/CoreQueryBuilder.php","line":1122,"function":"limitInitiatorVisibility","class":"OCA\\Circles\\Db\\CoreQueryBuilder","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Db/CircleRequest.php","line":166,"function":"limitToInitiator","class":"OCA\\Circles\\Db\\CoreQueryBuilder","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Service/CircleService.php","line":538,"function":"getCircles","class":"OCA\\Circles\\Db\\CircleRequest","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/circles/lib/Api/v1/Circles.php","line":134,"function":"getCircles","class":"OCA\\Circles\\Service\\CircleService","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/Connector/Sabre/Principal.php","line":546,"function":"joinedCircles","class":"OCA\\Circles\\Api\\v1\\Circles","type":"::"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/CalDavBackend.php","line":360,"function":"getCircleMembership","class":"OCA\\DAV\\Connector\\Sabre\\Principal","type":"->"},{"file":"/home/sites/site100039087/web/***/lib/public/AppFramework/Db/TTransactional.php","line":45,"function":"OCA\\DAV\\CalDAV\\{closure}","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/CalDavBackend.php","line":304,"function":"atomic","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/CalendarProvider.php","line":28,"function":"getCalendarsForUser","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->"},{"file":"/home/sites/site100039087/web/***/lib/private/Calendar/Manager.php","line":187,"function":"getCalendars","class":"OCA\\DAV\\CalDAV\\CalendarProvider","type":"->"},{"function":"OC\\Calendar\\{closure}","class":"OC\\Calendar\\Manager","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/***/lib/private/Calendar/Manager.php","line":176,"function":"array_map"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/AppCalendar/AppCalendarPlugin.php","line":52,"function":"getCalendarsForPrincipal","class":"OC\\Calendar\\Manager","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/AppCalendar/AppCalendarPlugin.php","line":34,"function":"getWrappedCalendars","class":"OCA\\DAV\\CalDAV\\AppCalendar\\AppCalendarPlugin","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/CalDAV/CalendarHome.php","line":118,"function":"fetchAllForCalendarHome","class":"OCA\\DAV\\CalDAV\\AppCalendar\\AppCalendarPlugin","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/DAV/Sharing/Plugin.php","line":185,"function":"getChildren","class":"OCA\\DAV\\CalDAV\\CalendarHome","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"propFind","class":"OCA\\DAV\\DAV\\Sharing\\Plugin","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":1052,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":984,"function":"getPropertiesByNode","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":1664,"function":"getPropertiesIteratorForPath","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":1649,"function":"writeMultiStatus","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":346,"function":"generateMultiStatus","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpPropFind","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/home/sites/site100039087/web/***/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/Connector/Sabre/Server.php","line":49,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/lib/Server.php","line":398,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/apps/dav/appinfo/v2/remote.php","line":21,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/home/sites/site100039087/web/***/remote.php","line":145,"args":["/home/sites/site100039087/web/***/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/home/sites/site100039087/web/***/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php","Line":87,"message":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::orX without parameters is deprecated and will throw soon.","exception":{},"CustomMessage":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::orX without parameters is deprecated and will throw soon."}}

Configuration

Nextcloud

The output of occ config:list system or similar is best, but, if not possible, the contents of your config.php file from /path/to/nextcloud is fine (make sure to remove any identifiable information!):

{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "***"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "31.0.4.1",
        "overwrite.cli.url": "https:\/\/***",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "maintenance_window_start": 1,
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_sendmailmode": "smtp",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtpauth": 1,
        "mail_smtpsecure": "ssl",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "maintenance": false,
        "theme": "",
        "loglevel": 0,
        "app_install_overwrite": [
            "backup"
        ],
        "updater.secret": "***REMOVED SENSITIVE VALUE***"
    }
}

Apps

The output of occ app:list (if possible).

Enabled:
  - activity: 4.0.0
  - app_api: 5.0.2
  - bruteforcesettings: 4.0.0
  - calendar: 5.1.2
  - circles: 31.0.0
  - cloud_federation_api: 1.14.0
  - comments: 1.21.0
  - contacts: 7.0.1
  - contactsinteraction: 1.12.0
  - dashboard: 7.11.0
  - dav: 1.33.0
  - federatedfilesharing: 1.21.0
  - federation: 1.21.0
  - files: 2.3.1
  - files_downloadlimit: 4.0.0
  - files_pdfviewer: 4.0.0
  - files_reminders: 1.4.0
  - files_sharing: 1.23.1
  - files_trashbin: 1.21.0
  - files_versions: 1.24.0
  - firstrunwizard: 4.0.0
  - logreader: 4.0.0
  - lookup_server_connector: 1.19.0
  - nextcloud_announcements: 3.0.0
  - notifications: 4.0.0
  - oauth2: 1.19.1
  - password_policy: 3.0.0
  - photos: 4.0.0-dev.1
  - privacy: 3.0.0
  - profile: 1.0.0
  - provisioning_api: 1.21.0
  - recommendations: 4.0.0
  - related_resources: 2.0.0
  - serverinfo: 3.0.0
  - settings: 1.14.0
  - sharebymail: 1.21.0
  - support: 3.0.0
  - survey_client: 3.0.0
  - systemtags: 1.21.1
  - text: 5.0.0
  - theming: 2.6.1
  - twofactor_backupcodes: 1.20.0
  - updatenotification: 1.21.0
  - viewer: 4.0.0
  - webhook_listeners: 1.2.0
  - workflowengine: 2.13.0
Disabled:
  - admin_audit: 1.21.0
  - encryption: 2.19.0
  - files_external: 1.23.0
  - suspicious_login: 9.0.1
  - twofactor_nextcloud_notification: 5.0.0
  - twofactor_totp: 13.0.0-dev.0
  - user_ldap: 1.22.0
  - user_status: 1.11.0 (installed 1.11.0)
  - weather_status: 1.11.0 (installed 1.11.0)

OK, ich konnte nun manuell auf nextcloud 31.0.4 aktualisieren.
Die Aktualisierung habe ich nach dieser Anleitung vorgenommen.

Apps Calendar und Contacts problematisch

Die beiden Apps Calendar und Contacts sind weiterhin auf der alten Version. Ein Update bricht ab, egal, ob ich es im GUI starte oder per occ.

Wenn ich das Update starte (egal, welche der beiden Apps), erhalte ich folgende Log-Einträge:

$ php occ app:update calendar
The current PHP memory limit is below the recommended value of 512MB.
calendar new version available: 5.2.3

Die PHP-Memory-Limit-Meldung scheint mir unproblematisch zu sein. Ich kann es beim Hoster leider auch nicht ändern.
Die Meldung der neuen Version deckt sich mit dem, was im GUI angezeigt wird. Jedoch läuft es hier für ca. 2 Minuten nicht weiter, es wird keine weitere Ausgabe produziert.

Das Log data/nextcloud.log zeigt Folgendes:

t $ tail data/nextcloud.log
OK, ich konnte nun manuell auf nextcloud 31.0.4 aktualisieren. 
Die Aktualisierung habe ich nach [dieser Anleitung](https://docs.nextcloud.com/server/latest/admin_manual/maintenance/manual_upgrade.html) vorgenommen.

Apps Calendar und Contacts problematisch

Die beiden Apps Calendar und Contacts sind weiterhin auf der alten Version. Ein Update bricht ab, egal, ob ich es im GUI starte oder per occ.

Wenn ich das Update starte (egal, welche der beiden Apps), erhalte ich folgende Log-Einträge:

$ php occ app:update calendar
The current PHP memory limit is below the recommended value of 512MB.
calendar new version available: 5.2.3

Die PHP-Memory-Limit-Meldung scheint mir unproblematisch zu sein. Ich kann es beim Hoster leider auch nicht ändern.
Die Meldung der neuen Version deckt sich mit dem, was im GUI angezeigt wird. Jedoch läuft es hier für ca. 2 Minuten nicht weiter, danach erscheint folgende Meldung:

{"reqId":"qQ9WBJXZsCldnPaApcUJ","level":3,"time":"2025-05-09T05:55:08+00:00","remoteAddr":"","user":false,"app":"no app in context","method":"","url":"--","message":"cURL error 28: Failed to connect to objects.githubusercontent.com port 443 after 300000 ms: Timeout was reached (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://objects.githubusercontent.com/github-production-release-asset-2e65be/377456681/d5781e01-8110-4acf-9193-25fff62e9036?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20250509%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250509T055001Z&X-Amz-Expires=300&X-Amz-Signature=cd44c88b6df87e97473bb1f1bb2d2ecb5cc43388731cbce56a8b03b1a62f4992&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dcalendar-v5.2.3.tar.gz&response-content-type=application%2Foctet-stream","userAgent":"--","version":"31.0.4.1","exception":{"Exception":"GuzzleHttp\\Exception\\ConnectException","Message":"cURL error 28: Failed to connect to objects.githubusercontent.com port 443 after 300000 ms: Timeout was reached (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://objects.githubusercontent.com/github-production-release-asset-2e65be/377456681/d5781e01-8110-4acf-9193-25fff62e9036?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20250509%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250509T055001Z&X-Amz-Expires=300&X-Amz-Signature=cd44c88b6df87e97473bb1f1bb2d2ecb5cc43388731cbce56a8b03b1a62f4992&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dcalendar-v5.2.3.tar.gz&response-content-type=application%2Foctet-stream","Code":0,"Trace":[{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":205,"function":"createRejection","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":157,"function":"finishError","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php","line":47,"function":"finish","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":142,"function":"__invoke","class":"GuzzleHttp\\Handler\\CurlHandler","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/lib/private/Http/Client/DnsPinMiddleware.php","line":149,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":35,"function":"OC\\Http\\Client\\{closure}","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":31,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":107,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":73,"function":"checkRedirect","class":"GuzzleHttp\\RedirectMiddleware","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/promises/src/FulfilledPromise.php","line":48,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\RedirectMiddleware","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/promises/src/TaskQueue.php","line":52,"function":"GuzzleHttp\\Promise\\{closure}","class":"GuzzleHttp\\Promise\\FulfilledPromise","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/promises/src/Promise.php","line":251,"function":"run","class":"GuzzleHttp\\Promise\\TaskQueue","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/promises/src/Promise.php","line":227,"function":"invokeWaitFn","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/promises/src/Promise.php","line":272,"function":"waitIfPending","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/promises/src/Promise.php","line":229,"function":"invokeWaitList","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/promises/src/Promise.php","line":69,"function":"waitIfPending","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/Client.php","line":189,"function":"wait","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/lib/private/Http/Client/Client.php","line":206,"function":"request","class":"GuzzleHttp\\Client","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/lib/private/Installer.php","line":246,"function":"get","class":"OC\\Http\\Client\\Client","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/<<hidden_url>>/lib/private/Installer.php","line":144,"function":"downloadApp","class":"OC\\Installer","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/core/Command/App/Update.php","line":87,"function":"updateAppstoreApp","class":"OC\\Installer","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/symfony/console/Command/Command.php","line":326,"function":"execute","class":"OC\\Core\\Command\\App\\Update","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/symfony/console/Application.php","line":1078,"function":"run","class":"Symfony\\Component\\Console\\Command\\Command","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/symfony/console/Application.php","line":324,"function":"doRunCommand","class":"Symfony\\Component\\Console\\Application","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/symfony/console/Application.php","line":175,"function":"doRun","class":"Symfony\\Component\\Console\\Application","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/lib/private/Console/Application.php","line":187,"function":"run","class":"Symfony\\Component\\Console\\Application","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/console.php","line":87,"function":"run","class":"OC\\Console\\Application","type":"->"},{"file":"/home/sites/site100039087/web/<<hidden_url>>/occ","line":33,"args":["/home/sites/site100039087/web/<<hidden_url>>/console.php"],"function":"require_once"}],"File":"/home/sites/site100039087/web/<<hidden_url>>/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","Line":275,"message":"cURL error 28: Failed to connect to objects.githubusercontent.com port 443 after 300000 ms: Timeout was reached (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://objects.githubusercontent.com/github-production-release-asset-2e65be/377456681/d5781e01-8110-4acf-9193-25fff62e9036?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20250509%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250509T055001Z&X-Amz-Expires=300&X-Amz-Signature=cd44c88b6df87e97473bb1f1bb2d2ecb5cc43388731cbce56a8b03b1a62f4992&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dcalendar-v5.2.3.tar.gz&response-content-type=application%2Foctet-stream","exception":{},"CustomMessage":"cURL error 28: Failed to connect to objects.githubusercontent.com port 443 after 300000 ms: Timeout was reached (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://objects.githubusercontent.com/github-production-release-asset-2e65be/377456681/d5781e01-8110-4acf-9193-25fff62e9036?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20250509%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250509T055001Z&X-Amz-Expires=300&X-Amz-Signature=cd44c88b6df87e97473bb1f1bb2d2ecb5cc43388731cbce56a8b03b1a62f4992&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dcalendar-v5.2.3.tar.gz&response-content-type=application%2Foctet-stream"}}
calendar couldn't be updated

Was soll ich hier unternehmen?

Warum kannst du es nicht ändern? Du schreibst doch auch folgendes:

also hasst du doch ssh-Zugriff. Dann solltest du doch auch die php.ini erreichen und editieren können. Der genau Pfad kann abweichen. Ich vermute bei dir mal auf /etc/php/8.1/fpm/php.ini Setze den EIntrag auf

memory_limit = 512M

Der ssh-Zugriff beschränkt sich auf spezifische Ordner auf dem shared hoster. Für die php-Konfig sehe ich zwei Kandidaten, die deinem Vorschlag ensprechen:

/etc/php/fpm-php8.2 und fpm-site. Jedoch gehören die dem root, der ich definitiv nicht bin.
So gesehen würde ich das auch erwarten auf einem shared hosting.
An einer Stelle im Kundenbereich wird sogar explizit darauf aufmerksam gemacht, dass man die limits nicht ändern könne, auch nicht mit lokal platzierten php.ini-Konfigs. Dazu müsste man ein “höheres” Abo mieten.

drwxrwx--- 2 root root 4096 Feb  5 10:49 fpm-site<Kunden-ID>
drwxr-xr-x 4 root root 4096 May 17  2024 apache2-php8.1
drwxr-xr-x 4 root root 4096 Aug 12  2024 apache2-php8.2
drwxr-xr-x 4 root root 4096 May 17  2024 apache2-php8.3
drwxr-xr-x 4 root root 4096 May 17  2024 cgi-php8.1
drwxr-xr-x 4 root root 4096 Aug 12  2024 cgi-php8.2
drwxr-xr-x 4 root root 4096 May 17  2024 cgi-php8.3
drwxr-xr-x 4 root root 4096 May 17  2024 cli-php8.1
drwxr-xr-x 4 root root 4096 Aug 12  2024 cli-php8.2
drwxr-xr-x 4 root root 4096 May 17  2024 cli-php8.3
drwxr-xr-x 5 root root 4096 May 17  2024 fpm-php8.1
drwxr-xr-x 5 root root 4096 Aug 12  2024 fpm-php8.2
drwxr-xr-x 5 root root 4096 May 17  2024 fpm-php8.3


Aber aufgrund des logs vermute ich das Problem bei den beiden App-Updates Contacts und Calendar nicht mehr am memory_limit.

Ich könnte die beiden Apps manuell aktualisieren, d.h. die neuen Dateien herunterladen, entpacken und in die Orddner apps/calendar resp. apps/contacts legen. Bin dann aber nicht sicher, ob sich ev. an der DB was geändert hat und nachher die beiden Apps nicht mehr funktionieren?

Also in den letzten Wochen habe ich hier zahlreiche Problemmeldungen und Beiträge zum Thema php memory_limit im Zusammenhang mit Updates von Nextcloud 29 oder 30 auf 31 gelesen.

Das schein ein recht häufiges Problem zu sein. Oft bei Fremd-Hostern, die nicht einmal ssh erlauben. Du hast immerhin ssh, wenn auch mit unzureichenden Rechten.

Ich persönlich finde das mehr als nur verwunderlich, dass es da immer noch Nextcloud-Hoster gibt, die ihre zahlenden Kunden mit weniger als 512M php memory_limit abspeisen. Bereits in einer mehr als drei Jahre alten Installationsanleitung zum Setup von Nextcloud auf Ubuntu 22.04 wurde als Minimum ein php memory_limit von 512M empfohlen.

Ich hoste meine Nextcloud selbst, habe diese 512M und kenne die von dir geschilderten Probleme daher nicht. Wenn ich nun bei einem Hoster wäre, wie du, dafür monatlich bezahlen müsste, dann würde ich mich ziemlich deutlich bei diesem über diese Fehlkonfiguration des php memory_limits beschweren. Sollte der Hoster dann keine Abhilfe herbeiführen würde ich umgehend kündigen und mir einen anderen Hoster suchen.

Ich bin sehr sicher, dass deine Probleme von Hoster verursacht werden, nicht von Nextcloud.

Bis vor wenigen Monaten hatte ich ein anderes (deutlich teureres Hosting) mit ebenfalls 512 MB und es gab auch dort Probleme. 256 MB finde ich auch wenig, zudem kenne ich die nextcloud-Empfehlung von 512 MB, weil sie in der Verwaltung als Warnung auftaucht.
Trotzdem habe ich hier nicht den Eindruck, dass es am memory liegt, zumal der Fehler klar auf einen Timeout bei githubusercontent.com hinweist:

cURL error 28: Failed to connect to objects.githubusercontent.com port 443 after 300000 ms:
Timeout was reached
(see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
for
https://objects.githubusercontent.com/github-production-release-asset-2e65be/...<usw>

(die ganze Meldung ist im oberen post sichtbar.)

Um das memory als Ursache komplett auszuschliessen, könnte ich die gesamte Installation lokal replizieren und dort mit mehr memory prüfen, ob derselbe Fehler auftaucht. Mache ich vielleicht sogar noch.

Erfolgsversprechender scheint mir der Ansatz der manuellen Aktualisierung der beiden Apps contacts und calendar, nur weiss ich nicht, ob ich danach Inkonsistenzen haben werde, wenn ich einfach die Dateien der aktuellen Versionen in die App-Ordner reinkopiere.

contacts und calendar kannst du sehr einfach sichern und danach wieder herstellen. Ganz unabhängig davon ob es da Versionsunterschiede gibt. Lies mal: Nextcloud Backup - Kontakte und Kalender sichern.

Ich persönlich nutze jede Nacht das programmierte Backup mittels Linux Bash Script und sichere contacts und calendar so auf einem anderen Server im LAN. Wie du dem Link entnehmen kannst erfolgt das Backup in standardisierten Dateiformaten

  • *.ics als Kalender-Austauschformat gem. RFC 5545
  • *.vcf als vCard; “Elektronische Visitenkarte” nach RFC 6350

Diese Formate lassen sich später auch problemlos in die Nextcloud wieder importieren.

In Ordnung, vielen Dank, das hilft schon mal weiter!
Die Backups betreffen jedoch nur einen User, glaube ich… wichtig wären mir noch die Kalender der anderen Mitbenutzer (3 weitere User), ohne dass ich deren Passwörter kennen müsste (die sind in den Scripts ja vorausgesetzt).
Ich behelfe mir deswegen mit einem Backup der gesamten DB per mysqldump, aber das ist natürlich viel unspezifischer.
Aber ich sprenge hier den Rahmen meines ursprünglichen Anliegens und würde ggf. einen separaten Thread erstellen.

@adelaar: Danke für den Support , ich markiere deine letzte Antwort als Lösung und würde nochmals ergänzen, wenn ich das Problem lokal nachstellen und lösen konnte.

Kalender und Kontakte der anderen Nutzer ohne Kenntnis der Passwörter solltest du mit calcardbackup sichern können.

Ja, das ist so. Aber Da fallen mir spontan zwei Optionen ein, bei denen du NICHT die Passwörter der anderen User:innen kennen musst.

  • die anderen User:innen sichern selbst lokal auf deren PC/Notebooks. Es gibt ja Skripte für Javascript, Powershell, Linux Bash und Python. Du suchst also ein Skript aus, das für möglichst alle User:innen passt, passt das an Deine Bedürfnisse an und lässt nur Username/Passwort offen. Username/Passwort ergänzen die User:innen selbst bevor sie das Skript ausführen
  • Eine weitere Option besteht in den Anwendungsspezifischen Passwörtern von Nextcloud. Wenn (wie bei uns) die Nextcloud per 2FA (hier TOTP) abgesichert ist, können die User:innen solche Anwendungsspezifischen Passwörter erzeugen. Mittels dieser Anwendungsspezifischen Passwörter könnte dann von dir eine Sicherung stellvertretend für die User:innen durchgeführt werden. Im Anschluss können diese Anwendungsspezifischen Passwörter dann wieder gelöscht werden. Das eigentliche Passwort müsste dir also nicht bekannt gegeben werden.