[3.4.0.24][4.0.1.48] CalDav sync with Nextcloud server fails

REPRODUCIBILITY (% or how often): 100%
BUILD ID = OS VERSION (Settings > About product): 3.4.0.24, 4.0.1.48
HARDWARE (XA2, Xperia 10…): Xperia X (2x)
UI LANGUAGE: English UK
REGRESSION: (compared to previous public release: Yes, No, ?): Yes (compared to 3.1.x.x/3.2.x.x)

DESCRIPTION:

When adding an even either on the Nextcloud or on the phone side, the event is never synced to the other side. Creating the account itself is flakey - took me a lot of trying and re-trying to create the account in the first place (this was much easier in 3.1.x.x). Once created, it is not possible to “Update Calendars”.

PRECONDITIONS:

  • Xperia X freshly flashed with 4.0.1.48
  • Nextcloud 20 server, located in subdirectory on server
  • Freshly created, empty user account on the Nextcloud server
  • The CalDav account is configured as follows:
    • Server address: https://SERVER.DOMAIN/SUBDIRECTORY/
    • WebDAV path: /remote.php/dav/files/USER (only way to get the account created at all)
    • Calendar path: /SUBDIRECTORY/remote.php/dav/calendars/USER
      (Note: this was incorrect in the first version of the post)

STEPS TO REPRODUCE:

  1. Create a new event either in one of the synced calendars on the phone or directly on the Nextcloud server (web interface)
  2. Start a manual sync

Additional:
3) Create or delete a calendar on the Nextcloud server
4) Go to CalDav account and select “Update calendars”

EXPECTED RESULT:

For (1)/(2): event gets synced to the other side
For (3)/(4): new calendar shows up on phone, deleted calendars are deleted

ACTUAL RESULT:

For (1)/(2): events are not synced, logging shows errors.
For (3)/(4): calendars are not updated. “Update calendars” results in error message: “Server response did not provide user details for specified username”

ADDITIONAL INFORMATION:

  • This was originally seen with SailfishOS 3.4.0.24 on another Xperia X with the server still at Nextcloud 19. Syncing on that phone was working fine at least up until 3.1.x.x/3.2.x.x and I think it started failing with 3.3.x.x. Definitely fails with 3.4.0.24.
  • Syncing calendars with the Nextcloud 20 server works without issues with Thunderbird on a Linux desktop and with DavX5 under Android. Account creation in both cases works without issues (contrary to Sailfish). I did note that the Android DAV-app uses the /.well-known/caldav approach (which is configured correctly on the server) - Sailfish never seems to access that at all according to the server logs.
  • I did try to use a Nextcloud account instead of CalDav, but that’s even more difficult to set up and fails in pretty much the same way when syncing
Server log from a sync attempt

default nnn.nnn.nnn.nnn - - [01/Mar/2021:22:45:15 +0100] “PROPFIND / HTTP/1.1” 200 0 “” “Mozilla/5.0”
default nnn.nnn.nnn.nnn - - [01/Mar/2021:22:45:16 +0100] “PROPFIND /SUBDIRECTORY/remote.php/dav/calendars/USER/ HTTP/1.1” 401 0 “” “Mozilla/5.0”
default nnn.nnn.nnn.nnn - - [01/Mar/2021:22:45:16 +0100] " " 400 0 “” “”
default nnn.nnn.nnn.nnn - - [01/Mar/2021:22:45:16 +0100] “REPORT /SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/ HTTP/1.1” 207 0 “” “Mozilla/5.0”
default nnn.nnn.nnn.nnn - - [01/Mar/2021:22:45:17 +0100] “PUT /SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/F1498EC9-7F67-46B8-B0A2-61FE8AFCFAB3.ics HTTP/1.1” 503 0 “” “Mozilla/5.0”
default nnn.nnn.nnn.nnn - - [01/Mar/2021:22:45:17 +0100] “REPORT /SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/ HTTP/1.1” 503 0 “” “Mozilla/5.0”

msyncd log from such an attempt

[D] unknown:0 - Starting Log At : QDateTime(2021-03-01 21:49:59.413 CET Qt::TimeSpec(LocalTime))
[D] unknown:0 - Primary profile path set to “/home/defaultuser/.cache/msyncd”
[D] unknown:0 - Secondary profile path set to “/etc/buteo/profiles”
[D] unknown:0 - Primary profile path set to “/home/defaultuser/.cache/msyncd”
[D] unknown:0 - Secondary profile path set to “/etc/buteo/profiles”
[D] unknown:0 - Starting msyncd
[D] unknown:0 - Registered to D-Bus
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - Network status:
[D] unknown:0 - Online:: true
[D] unknown:0 - Connection:: 2
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - Network status:
[D] unknown:0 - Online:: true
[D] unknown:0 - Connection:: 2
[D] unknown:0 - Starting/Resuming server plug-ins
[D] unknown:0 - Registered sync backup to D-Bus
[D] unknown:0 - Primary profile path set to “/home/defaultuser/.cache/msyncd”
[D] unknown:0 - Secondary profile path set to “/etc/buteo/profiles”
[D] unknown:0 - Synchronizer::getBackUpRestoreState
[D] unknown:0 - Sync externally is off for profile: “caldav-sync-32”
[D] unknown:0 - Synchronizer::getBackUpRestoreState
[D] unknown:0 - Sync externally is off for profile: “carddav.Contacts-32”
[D] unknown:0 - lastSync: QDateTime(2021-03-01 21:10:51.000 CET Qt::TimeSpec(LocalTime))
[D] unknown:0 - aPrevSync “Mon Mar 1 21:10:51 2021” Last Configured Time “Sat Feb 27 20:33:35 2021” CurrentDateTime QDateTime(2021-03-01 21:49:59.580 CET Qt::TimeSpec(LocalTime))
[D] unknown:0 - Sync interval defined as 30
[D] unknown:0 - numberOfInterval: 2 interval time 30
[D] unknown:0 - next non rush hour sync is at:: QDateTime(2021-03-01 22:10:51.000 CET Qt::TimeSpec(LocalTime))
[D] unknown:0 - nextSync “Mon Mar 1 22:10:51 2021”
[D] unknown:0 - BackgroundSync::set() profile name = “syncemail-19” with frequency 20 minutes, waiting.
[D] unknown:0 - Synchronizer::getBackUpRestoreState
[D] unknown:0 - Sync externally is off for profile: “syncemail-19”
[D] unknown:0 - No profiles interested in SOC
[D] unknown:0 - Entering event loop
[D] unknown:0 - AccountsHelper::registerAccountListener() is disabled! Not listening to change signals for account: 32
[D] unknown:0 - AccountsHelper::registerAccountListener() is disabled! Not listening to change signals for account: 19
[D] unknown:0 - AccountsHelper::registerAccountListener() is disabled! Not listening to change signals for account: 1
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - Synchronizer::getBackUpRestoreState
[D] unknown:0 - Start sync requested for profile: “caldav-sync-32”
[D] unknown:0 - Synchronizer::getBackUpRestoreState
[D] unknown:0 - Starting sync with profile “caldav-sync-32”
[D] unknown:0 - Disable sync on change: false false
[D] unknown:0 - Starting oop plugin “caldav-sync-32”
[D] unknown:0 - Starting process “/usr/lib/buteo-plugins-qt5//oopp/caldav-client” with plugin name “caldav” and profile name “caldav-sync-32”
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - Network status:
[D] unknown:0 - Online:: true
[D] unknown:0 - Connection:: 2
[D] unknown:0 - attempting to register dbus service: “com.buteo.msyncd.plugin.caldav-sync-32”
[D] unknown:0 - Plugin “caldav” with profile “caldav-sync-32” registered at dbus “com.buteo.msyncd.plugin.caldav-sync-32” and path /
[D] unknown:0 - Process “/usr/lib/buteo-plugins-qt5//oopp/caldav-client” started with pid 4387
[D] unknown:0 - Client plug-in runner initialized
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - Network status:
[D] unknown:0 - Online:: true
[D] unknown:0 - Connection:: 2
[D] unknown:0 - sync-ui dbus interface is getting called
[D] unknown:0 - Sync session started
[D] unknown:0 - ClientPluginRunner started thread for plugin: “caldav-sync-32” , returning: true
[D] unknown:0 - attempt to start sync session due to network session opened succeeded.
[D] unknown:0 - Primary profile path set to “/home/defaultuser/.cache/msyncd”
[D] unknown:0 - Secondary profile path set to “/etc/buteo/profiles”
[D] unknown:0 - Sync status changed for account “32”
[D] unknown:0 - Initiating config…
[D] unknown:0 - Sync running for 32
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - Init done. Continuing with sync
[D] unknown:0 - Authenticated!
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - “Depth : 1”
[D] unknown:0 - “Prefer : return-minimal”
[D] unknown:0 - “Content-Length : 93”
[D] unknown:0 - “Content-Type : application/xml; charset=utf-8”
[D] unknown:0 - “URL = https://user:pass@SERVER.DOMAIN/
[D] unknown:0 - “Request : PROPFIND”
[D] unknown:0 - “<d:propfind xmlns:d=“DAV:”> <d:prop> <d:current-user-principal /> </d:prop></d:propfind>”
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - Process PROPFIND response.
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - “PROPFIND response status code: 200”
[D] unknown:0 - “PROPFIND response headers:”
[D] unknown:0 - “\tCache-Control : no-store, no-cache, must-revalidate”
[D] unknown:0 - “\tConnection : keep-alive”
[D] unknown:0 - “\tContent-Type : text/html; charset=utf-8”
[D] unknown:0 - “\tDate : Mon, 01 Mar 2021 20:50:14 GMT”
[D] unknown:0 - “\tExpires : Thu, 19 Nov 1981 08:52:00 GMT”
[D] unknown:0 - “\tPragma : no-cache”
[D] unknown:0 - “\tServer : OpenBSD httpd”
[D] unknown:0 - “\tSet-Cookie : CMSSESSID75f371c43060=cc3q8lamoro1b0tnl8d513i8hs; path=/”
[D] unknown:0 - “\tStrict-Transport-Security : max-age=15768000; preload”
[D] unknown:0 - “\tTransfer-Encoding : chunked”
[D] unknown:0 - “\tX-Powered-By : PHP/7.2.34”
[D] unknown:0 - “PROPFIND response data:”
[D] unknown:0 - “”
[D] unknown:0 - “<html xmlns=“http://www.w3.org/1999/xhtml” xml:lang=“en” lang=“en”>”
[D] unknown:0 - “”
[…long list of HTML from index.php in server root deleted - no idea why this is even showing up here??..]
[D] unknown:0 - " "
[D] unknown:0 - “”
[D] unknown:0 - “---------------------------------------------------------------------”
[W] unknown:0 - Cannot find the calendar root for this user, guess it from account.
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - “Depth : 1”
[D] unknown:0 - “Prefer : return-minimal”
[D] unknown:0 - “Content-Length : 220”
[D] unknown:0 - “Content-Type : application/xml; charset=utf-8”
[D] unknown:0 - “URL = https://user:pass@SERVER.DOMAIN/SUBDIRECTORY/remote.php/dav/calendars/USER/
[D] unknown:0 - “Request : PROPFIND”
[D] unknown:0 - “<d:propfind xmlns:d=“DAV:” xmlns:a=“http://apple.com/ns/ical/”> <d:prop> <d:resourcetype /> <d:current-user-principal /> <d:current-user-privilege-set /> <d:displayname /> <a:calendar-color /> </d:prop></d:propfind>”
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - Process PROPFIND response.
[W] unknown:0 - The “PROPFIND” operation failed with error: QNetworkReply::NetworkError(ProtocolInvalidOperationError) : 401
[W] unknown:0 - “PROPFIND” request failed. 401 “Network request failed with QNetworkReply::NetworkError: 302”
[W] unknown:0 - Cannot list calendars, fallback to stored ones in account.
[D] unknown:0 - found notebook: “dd4763d6-398f-4fd1-8c03-6db11971f97e” for remote calendar: “/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/”
[D] unknown:0 - Start quick sync for notebook: “dd4763d6-398f-4fd1-8c03-6db11971f97e” between QDateTime(2020-09-01 20:50:15.319 UTC Qt::TimeSpec(UTC)) to QDateTime(2022-03-01 20:50:15.319 UTC Qt::TimeSpec(UTC)) , sync changes since QDateTime(2021-03-01 20:47:57.000 UTC Qt::TimeSpec(UTC))
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - “Depth : 1”
[D] unknown:0 - “Prefer : return-minimal”
[D] unknown:0 - “Content-Length : 302”
[D] unknown:0 - “Content-Type : application/xml; charset=utf-8”
[D] unknown:0 - “URL = https://user:pass@SERVER.DOMAIN/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/
[D] unknown:0 - “Request : REPORT”
[D] unknown:0 - “<c:calendar-query xmlns:d=“DAV:” xmlns:c=“urn:ietf:params:xml:ns:caldav”><d:prop><d:getetag /></d:prop><c:filter><c:comp-filter name=“VCALENDAR”><c:comp-filter name=“VEVENT”> <c:time-range start=“20200901T205015Z” end=“20220301T205015Z” /></c:comp-filter></c:comp-filter></c:filter></c:calendar-query>”
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - Process REPORT response for server path “/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/”
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - “REPORT response status code: 207”
[D] unknown:0 - “REPORT response headers:”
[D] unknown:0 - “\tCache-Control : no-store, no-cache, must-revalidate”
[D] unknown:0 - “\tConnection : keep-alive”
[D] unknown:0 - “\tContent-Security-Policy : default-src ‘none’;”
[D] unknown:0 - “\tContent-Type : application/xml; charset=utf-8”
[D] unknown:0 - “\tDate : Mon, 01 Mar 2021 20:50:15 GMT”
[D] unknown:0 - “\tExpires : Thu, 19 Nov 1981 08:52:00 GMT”
[D] unknown:0 - “\tPragma : no-cache”
[D] unknown:0 - “\tReferrer-Policy : no-referrer”
[D] unknown:0 - “\tServer : OpenBSD httpd”
[D] unknown:0 - “\tSet-Cookie : oc_sessionPassphrase=gVM%2BDWMGpVRFgHk4DOY9y9Wng5T3FazMKBh2QqqQWdy3iSyzA%2BQ%2BIcqVyeAStwglfjiSaHaJIxKQmr%2B0DaEzg5VSNFM1%2B3y7%2Fwmldm9n0Kh5nNqzEL%2BrTHKGYfl7TSr%2B; path=/SUBDIRECTORY; secure; HttpOnly”
[D] unknown:0 - “oc7z3h5oa5ry=2n9jnmdf7cl0mj4k6odi23uuk2; path=/SUBDIRECTORY; secure; HttpOnly”
[D] unknown:0 - “cookie_test=test; expires=Mon, 01-Mar-2021 21:50:15 GMT; Max-Age=3600”
[D] unknown:0 - “\tStrict-Transport-Security : max-age=15768000; preload”
[D] unknown:0 - “\tTransfer-Encoding : chunked”
[D] unknown:0 - “\tVary : Brief,Prefer”
[D] unknown:0 - “\tX-Content-Type-Options : nosniff”
[D] unknown:0 - “\tX-Download-Options : noopen”
[D] unknown:0 - “\tX-Frame-Options : SAMEORIGIN”
[D] unknown:0 - “\tX-Permitted-Cross-Domain-Policies : none”
[D] unknown:0 - “\tX-Powered-By : PHP/7.2.34”
[D] unknown:0 - “\tX-Robots-Tag : none”
[D] unknown:0 - “\tX-XSS-Protection : 1; mode=block”
[D] unknown:0 - “REPORT response data:<?xml version=\"1.0\"?>”
[D] unknown:0 - “<d:multistatus xmlns:d=“DAV:” xmlns:s=“http://sabredav.org/ns” xmlns:cal=“urn:ietf:params:xml:ns:caldav” xmlns:cs=“http://calendarserver.org/ns/” xmlns:oc=“http://owncloud.org/ns” xmlns:nc=“http://nextcloud.org/ns"><d:response><d:href>/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/2BFFE60B-4F5E-4144-A451-526950BE8F8C.ics</d:href><d:propstat><d:prop><d:getetag>"8c264d59ab24c3510c1e582daf8cc1c9”</d:getetag></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response><d:response><d:href>/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/e69d23fe-6fe9-491a-885d-23617dda6bba.ics</d:href><d:propstat><d:prop><d:getetag>“cb9254ce4b16e3755354b32a27fb0f15”</d:getetag></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response></d:multistatus>”
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - fetch etags finished with result: 0 “”
[D] unknown:0 - Process tags for server path “/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/”
[D] unknown:0 - have new local addition: “F1498EC9-7F67-46B8-B0A2-61FE8AFCFAB3” “”
[D] unknown:0 - have new remote addition: “/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/2BFFE60B-4F5E-4144-A451-526950BE8F8C.ics”
[D] unknown:0 - have new remote addition: “/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/e69d23fe-6fe9-491a-885d-23617dda6bba.ics”
[D] unknown:0 - Calculated local A/M/R: 1 / 0 / 0
[D] unknown:0 - Calculated remote A/M/R: 2 / 0 / 0
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - “Depth : 1”
[D] unknown:0 - “Prefer : return-minimal”
[D] unknown:0 - “Content-Length : 365”
[D] unknown:0 - “Content-Type : application/xml; charset=utf-8”
[D] unknown:0 - “URL = https://user:pass@SERVER.DOMAIN/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/
[D] unknown:0 - “Request : REPORT”
[D] unknown:0 - “<c:calendar-multiget xmlns:d=“DAV:” xmlns:c=“urn:ietf:params:xml:ns:caldav”><d:prop><d:getetag /><c:calendar-data /></d:prop><d:href>/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/2BFFE60B-4F5E-4144-A451-526950BE8F8C.ics</d:href><d:href>/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/e69d23fe-6fe9-491a-885d-23617dda6bba.ics</d:href></c:calendar-multiget>”
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - upsyncing local changes: A/M/R: 1 / 0 / 0
[D] unknown:0 - Uploading incidence 0 via PUT for uid: “F1498EC9-7F67-46B8-B0A2-61FE8AFCFAB3”
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - “If-None-Match : *”
[D] unknown:0 - “Content-Length : 3259”
[D] unknown:0 - “Content-Type : text/calendar; charset=utf-8”
[D] unknown:0 - “URL = https://user:pass@SERVER.DOMAIN/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/F1498EC9-7F67-46B8-B0A2-61FE8AFCFAB3.ics
[D] unknown:0 - “Request : PUT”
[D] unknown:0 - "BEGIN:VCALENDAR "
[D] unknown:0 - "PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN "
[D] unknown:0 - "VERSION:2.0 "
[D] unknown:0 - "X-KDE-ICAL-IMPLEMENTATION-VERSION:1.0 "
[D] unknown:0 - "BEGIN:VTIMEZONE "
[D] unknown:0 - "TZID:Europe/Amsterdam "
[D] unknown:0 - "BEGIN:DAYLIGHT "
[D] unknown:0 - "TZNAME:NST "
[D] unknown:0 - "TZOFFSETFROM:+001932 "
[D] unknown:0 - "TZOFFSETTO:+011932 "
[D] unknown:0 - "DTSTART:19160501T234028 "
[D] unknown:0 - "RDATE:19160501T234028 "
[D] unknown:0 - "RDATE:19170417T014028 "
[D] unknown:0 - "RDATE:19180402T014028 "
[D] unknown:0 - "RDATE:19190408T014028 "
[D] unknown:0 - "RDATE:19200406T014028 "
[D] unknown:0 - "RDATE:19210405T014028 "
[D] unknown:0 - "RDATE:19220327T014028 "
[D] unknown:0 - "RDATE:19230602T014028 "
[D] unknown:0 - "RDATE:19240331T014028 "
[D] unknown:0 - "RDATE:19250606T014028 "
[D] unknown:0 - "RDATE:19260516T014028 "
[D] unknown:0 - "RDATE:19270516T014028 "
[D] unknown:0 - "RDATE:19280516T014028 "
[D] unknown:0 - "RDATE:19290516T014028 "
[D] unknown:0 - "RDATE:19300516T014028 "
[D] unknown:0 - "RDATE:19310516T014028 "
[D] unknown:0 - "RDATE:19320523T014028 "
[D] unknown:0 - "RDATE:19330516T014028 "
[D] unknown:0 - "RDATE:19340516T014028 "
[D] unknown:0 - "RDATE:19350516T014028 "
[D] unknown:0 - "RDATE:19360516T014028 "
[D] unknown:0 - "RDATE:19370523T014028 "
[D] unknown:0 - "END:DAYLIGHT "
[D] unknown:0 - "BEGIN:STANDARD "
[D] unknown:0 - "TZNAME:AMT "
[D] unknown:0 - "TZOFFSETFROM:+011932 "
[D] unknown:0 - "TZOFFSETTO:+001932 "
[D] unknown:0 - "DTSTART:19161001T224028 "
[D] unknown:0 - "RDATE:19161001T224028 "
[D] unknown:0 - "RDATE:19170918T024028 "
[D] unknown:0 - "RDATE:19181001T024028 "
[D] unknown:0 - "RDATE:19190930T024028 "
[D] unknown:0 - "RDATE:19200928T024028 "
[D] unknown:0 - "RDATE:19210927T024028 "
[D] unknown:0 - "RDATE:19221009T024028 "
[D] unknown:0 - "RDATE:19231008T024028 "
[D] unknown:0 - "RDATE:19241006T024028 "
[D] unknown:0 - "RDATE:19251005T024028 "
[D] unknown:0 - "RDATE:19261004T024028 "
[D] unknown:0 - "RDATE:19271003T024028 "
[D] unknown:0 - "RDATE:19281008T024028 "
[D] unknown:0 - "RDATE:19291007T024028 "
[D] unknown:0 - "RDATE:19301006T024028 "
[D] unknown:0 - "RDATE:19311005T024028 "
[D] unknown:0 - "RDATE:19321003T024028 "
[D] unknown:0 - "RDATE:19331009T024028 "
[D] unknown:0 - "RDATE:19341008T024028 "
[D] unknown:0 - "RDATE:19351007T024028 "
[D] unknown:0 - "RDATE:19361005T024028 "
[D] unknown:0 - "END:STANDARD "
[D] unknown:0 - "BEGIN:DAYLIGHT "
[D] unknown:0 - "TZNAME:+0120 "
[D] unknown:0 - "TZOFFSETFROM:+011932 "
[D] unknown:0 - "TZOFFSETTO:+0120 "
[D] unknown:0 - "DTSTART:19370701T224028 "
[D] unknown:0 - "RDATE:19370701T224028 "
[D] unknown:0 - "END:DAYLIGHT "
[D] unknown:0 - "BEGIN:STANDARD "
[D] unknown:0 - "TZNAME:+0020 "
[D] unknown:0 - "TZOFFSETFROM:+0120 "
[D] unknown:0 - "TZOFFSETTO:+0020 "
[D] unknown:0 - "DTSTART:19371004T024028 "
[D] unknown:0 - "RDATE:19371004T024028 "
[D] unknown:0 - "RDATE:19381003T024000 "
[D] unknown:0 - "RDATE:19391009T024000 "
[D] unknown:0 - "END:STANDARD "
[D] unknown:0 - "BEGIN:DAYLIGHT "
[D] unknown:0 - "TZNAME:+0120 "
[D] unknown:0 - "TZOFFSETFROM:+0020 "
[D] unknown:0 - "TZOFFSETTO:+0120 "
[D] unknown:0 - "DTSTART:19380516T014000 "
[D] unknown:0 - "RDATE:19380516T014000 "
[D] unknown:0 - "RDATE:19390516T014000 "
[D] unknown:0 - "END:DAYLIGHT "
[D] unknown:0 - "BEGIN:DAYLIGHT "
[D] unknown:0 - "TZNAME:CEST "
[D] unknown:0 - "TZOFFSETFROM:+0020 "
[D] unknown:0 - "TZOFFSETTO:+0200 "
[D] unknown:0 - "DTSTART:19400516T234000 "
[D] unknown:0 - "RDATE:19400516T234000 "
[D] unknown:0 - "END:DAYLIGHT "
[D] unknown:0 - "BEGIN:STANDARD "
[D] unknown:0 - "TZNAME:CET "
[D] unknown:0 - "TZOFFSETFROM:+0200 "
[D] unknown:0 - "TZOFFSETTO:+0100 "
[D] unknown:0 - "DTSTART:19790930T030000 "
[D] unknown:0 - "RRULE:FREQ=YEARLY;UNTIL=19961027T030000;BYDAY=-1SU;BYMONTH=9 "
[D] unknown:0 - "END:STANDARD "
[D] unknown:0 - "BEGIN:STANDARD "
[D] unknown:0 - "TZNAME:CET "
[D] unknown:0 - "TZOFFSETFROM:+0200 "
[D] unknown:0 - "TZOFFSETTO:+0100 "
[D] unknown:0 - "DTSTART:19971026T030000 "
[D] unknown:0 - "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 "
[D] unknown:0 - "END:STANDARD "
[D] unknown:0 - "BEGIN:STANDARD "
[D] unknown:0 - "TZNAME:CET "
[D] unknown:0 - "TZOFFSETFROM:+0200 "
[D] unknown:0 - "TZOFFSETTO:+0100 "
[D] unknown:0 - "DTSTART:19421103T024000 "
[D] unknown:0 - "RDATE:19421103T024000 "
[D] unknown:0 - "RDATE:19431004T020000 "
[D] unknown:0 - "RDATE:19441002T020000 "
[D] unknown:0 - "RDATE:19450916T020000 "
[D] unknown:0 - "RDATE:19770925T030000 "
[D] unknown:0 - "RDATE:19781001T030000 "
[D] unknown:0 - "RDATE:19950924T030000 "
[D] unknown:0 - "END:STANDARD "
[D] unknown:0 - "BEGIN:DAYLIGHT "
[D] unknown:0 - "TZNAME:CEST "
[D] unknown:0 - "TZOFFSETFROM:+0100 "
[D] unknown:0 - "TZOFFSETTO:+0200 "
[D] unknown:0 - "DTSTART:19810329T020000 "
[D] unknown:0 - "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 "
[D] unknown:0 - "END:DAYLIGHT "
[D] unknown:0 - "BEGIN:DAYLIGHT "
[D] unknown:0 - "TZNAME:CEST "
[D] unknown:0 - "TZOFFSETFROM:+0100 "
[D] unknown:0 - "TZOFFSETTO:+0200 "
[D] unknown:0 - "DTSTART:19430329T010000 "
[D] unknown:0 - "RDATE:19430329T010000 "
[D] unknown:0 - "RDATE:19440403T010000 "
[D] unknown:0 - "RDATE:19450402T010000 "
[D] unknown:0 - "RDATE:19770403T020000 "
[D] unknown:0 - "RDATE:19780402T020000 "
[D] unknown:0 - "RDATE:19790401T020000 "
[D] unknown:0 - "RDATE:19800406T020000 "
[D] unknown:0 - "END:DAYLIGHT "
[D] unknown:0 - "END:VTIMEZONE "
[D] unknown:0 - "BEGIN:VEVENT "
[D] unknown:0 - "DTSTAMP:20210301T204745Z "
[D] unknown:0 - "CREATED:20210301T204745Z "
[D] unknown:0 - "UID:F1498EC9-7F67-46B8-B0A2-61FE8AFCFAB3 "
[D] unknown:0 - "LAST-MODIFIED:20210301T204745Z "
[D] unknown:0 - "SUMMARY:Test "
[D] unknown:0 - "DTSTART;TZID=Europe/Amsterdam:20210301T220000 "
[D] unknown:0 - "DTEND;TZID=Europe/Amsterdam:20210301T230000 "
[D] unknown:0 - "TRANSP:OPAQUE "
[D] unknown:0 - "END:VEVENT "
[D] unknown:0 - "END:VCALENDAR "
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - PUT request finished: QNetworkReply::NetworkError(ServiceUnavailableError)
[D] unknown:0 - “---------------------------------------------------------------------”
[D] unknown:0 - “PUT response status code: 503”
[D] unknown:0 - “PUT response headers:”
[D] unknown:0 - “\tCache-Control : no-store, no-cache, must-revalidate”
[D] unknown:0 - “\tConnection : keep-alive”
[D] unknown:0 - “\tContent-Security-Policy : default-src ‘self’; script-src ‘self’ ‘nonce-bkswOHYxRWg0cGN1aklITnpsdkFIRVFqRU8xY1JyOW0rK1M4K1ZLNkUyWT06LzU1cjJTdDFzc1owbzhpK3ZEcVJWejRNV29RZGRJc2ZtcWplbGd2WVhRTT0=’; style-src ‘self’ ‘unsafe-inline’; frame-src *; img-src * data: blob:; font-src ‘self’ data:; media-src *; connect-src *; object-src ‘none’; base-uri ‘self’;”
[D] unknown:0 - “\tContent-type : text/html; charset=UTF-8”
[D] unknown:0 - “\tDate : Mon, 01 Mar 2021 20:50:15 GMT”
[D] unknown:0 - “\tExpires : Thu, 19 Nov 1981 08:52:00 GMT”
[D] unknown:0 - “\tPragma : no-cache”
[D] unknown:0 - “\tReferrer-Policy : no-referrer”
[D] unknown:0 - “\tServer : OpenBSD httpd”
[D] unknown:0 - “\tSet-Cookie : nc_sameSiteCookielax=true; path=/SUBDIRECTORY; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=lax”
[D] unknown:0 - “nc_sameSiteCookiestrict=true; path=/SUBDIRECTORY; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=strict”
[D] unknown:0 - “\tStrict-Transport-Security : max-age=15768000; preload”
[D] unknown:0 - “\tTransfer-Encoding : chunked”
[D] unknown:0 - “\tX-Content-Type-Options : nosniff”
[D] unknown:0 - “\tX-Download-Options : noopen”
[D] unknown:0 - “\tX-Frame-Options : SAMEORIGIN”
[D] unknown:0 - “\tX-Permitted-Cross-Domain-Policies : none”
[D] unknown:0 - “\tX-Powered-By : PHP/7.2.34”
[D] unknown:0 - “\tX-Robots-Tag : none”
[D] unknown:0 - “\tX-XSS-Protection : 1; mode=block”
[D] unknown:0 - “---------------------------------------------------------------------”
[W] unknown:0 - The “PUT” operation failed with error: QNetworkReply::NetworkError(ServiceUnavailableError) : 401
[W] unknown:0 - “PUT” request failed. 401 “Network request failed with QNetworkReply::NetworkError: 403”
[D] unknown:0 - Process REPORT response for server path “/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/”
[W] unknown:0 - The “REPORT” operation failed with error: QNetworkReply::NetworkError(ServiceUnavailableError) : 401
[W] unknown:0 - “REPORT” request failed. 401 “Network request failed with QNetworkReply::NetworkError: 403”
[D] unknown:0 - report request finished with result: 401 “Network request failed with QNetworkReply::NetworkError: 403”
[D] unknown:0 - Notebook sync finished. Total agents: 1
[W] unknown:0 - CalDAV sync failed: 503 “unable to fetch all upstream changes”
[D] unknown:0 - New network state: true New type: “WLAN” ( 2 )
[D] unknown:0 - Session finished: “caldav-sync-32” , status: 3
[D] unknown:0 - Clean up session for profile “caldav-sync-32”
[D] unknown:0 - Stopping the OOP process for “caldav”
[D] unknown:0 - Process “/usr/lib/buteo-plugins-qt5//oopp/caldav-client” finished with exit code 15
[D] unknown:0 - Sync status changed for account “32”
[D] unknown:0 - lastSync: QDateTime(2021-03-01 21:50:14.000 CET Qt::TimeSpec(LocalTime))
[D] unknown:0 - lastSync: QDateTime( Qt::TimeSpec(LocalTime))

(Edits: fixed wrong Calendar path, improved formatting)

Calendar path: /SUBDIRECTORY/remote.php/dav/files/USER

Thats the path to webdav (== files), not caldav. The resource is within /remote.php/caldav/calendars/$USERID/, but a working .well-known setup should take care of this.

Well spotted, however, unfortunately, that was a mistake in copying it over into this posting - on the phone, the path is using calendars. My apologies for the confusion!

The .well-known set-up unfortunately never comes into play - according to my server logs, the Sailfish Phones never seem to access it (whereas Android DavX5 does), not even when I create the account.

Just a hint to make your OP more readable:
Sub list elements can be denoted using one * character only. And if you choose the cog wheel in the editor, you can select ‘hide details’ as a wrapper for your console log.

2 Likes

For comparison, here’s a log-excerpt from a sync attempt between the Android-phone (DavX5) and the same server:

Android-Sync

default nnn.nnn.nnn.mmm - - [03/Mar/2021:22:04:17 +0100] “PROPFIND /SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/ HTTP/1.1” 207 0 “” “DAVx5/3.3.8-ose (2021/01/13; dav4jvm; okhttp/
4.9.0) Android/10”
default nnn.nnn.nnn.mmm - - [03/Mar/2021:22:04:49 +0100] “PROPFIND /SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/ HTTP/1.1” 207 0 “” “DAVx5/3.3.8-ose (2021/01/13; dav4jvm; okhttp/
4.9.0) Android/10”
default nnn.nnn.nnn.mmm - - [03/Mar/2021:22:04:51 +0100] “PUT /SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/c6752bac-e8ee-41d3-8bfd-045e88af9bc7.ics HTTP/1.1” 201 0 “” “DAVx5/3.3.
8-ose (2021/01/13; dav4jvm; okhttp/4.9.0) Android/10”
default nnn.nnn.nnn.mmm - - [03/Mar/2021:22:04:51 +0100] “PROPFIND /SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/ HTTP/1.1” 207 0 “” “DAVx5/3.3.8-ose (2021/01/13; dav4jvm; okhttp/
4.9.0) Android/10”
default nnn.nnn.nnn.mmm - - [03/Mar/2021:22:04:51 +0100] “REPORT /SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/ HTTP/1.1” 207 0 “” “DAVx5/3.3.8-ose (2021/01/13; dav4jvm; okhttp/4.
9.0) Android/10”

What I notice is that the same type of PUT is used - and succeeds. To me, that looks as if something that the Sailfish phone does before the PUT is confusing the server, therefore causing the PUT to fail. When I look at the same log for Sailfish, I also notice that it starts with “PROPFIND / HTTP/1.1”, which looks strange to me, as the Nextcloud-server resides in SUBDIRECTORY.

No progress here - I wonder whether anyone has CalDav working with Sailfish 4.0 and a Nextcloud server running in a subdirectory. @dcaliste - can I provide any additional information to help?

Do you have the sync log from SailfishOS device ? See https://sailfishos.org/wiki/CalDAV_and_CardDAV_Community_Contributions to gather such logs.

Even better, could you create an account on such server for me ? Mind that this is a totally private initiative, I’m not working for Jolla. Send me a PM if you agree.

2 Likes

Yes is the answer to your question. I do. Mine runs as https://192.168.1.65/nextcloud and it works … but not without a lot of cursing from me when trying to make it work!

The way I’ve made it work is to specify the address as https://192.168.1.65/nextcloud/remote.php/dav/ and then in Advanced settings I specify the address path as /nextcloud/remote.php/dav/ and the Calendar path as /nextcloud/remote.php/dav/calendars/chris/

It may not be the correct way for the purists but it works for me

1 Like

The synclog is included in the bug report above under “ADDITIONAL INFORMATION” -> " msyncd log from such an attempt". I’ll see what I can do about an account. Many thanks for your help! (I totally failed to realise that you do not work for Jolla :flushed:, which makes me appreciate your help all the more)

Thanks for that - I’ll try that as well tonight! That was with a CalDav-account, not the Nextcloud-integration, right?

My bad, I missed it somehow. I’m looking at it at the moment, but failed to notice anything obvious. I’ll do some further search on the Internet tomorrow to see why the PUT is failing. The PROPFIND are not important, they are some pocking to get the calendar paths, which is failing at the moment, but such kind of failure are ignored by the sync plugin. I’m not encline to think that they could put the server in a way that would make the PUT fails, while it would not without the initial PROPFIND poking.

1 Like

That’s for the Nextcloud Account as listed under Accounts -> Advanced settings -> Calendar path.

For completeness, this is how I’ve setup all the others for Nextcloud :-
WebDAV path is /nextcloud/remote.php/dav/files/chris
Address book is /nextcloud/remote.php/dav/
Images is /nextcloud/remote.php/dav/files/chris/Photos
Backup path is /nextcloud/remote.php/dav/files/chris/Sailfish OS/Backups but that fails each month when I ask it to do a backup so I do it to Dropbox instead.

I didn’t see any point in creating a CalDAV and CardDAV account if I could make the Nextcloud system work properly.

Now if only we had Avahi running on Sailfish I wouldn’t need to specify the IP address and could instead use ubuntuoc.local which everything else, including my iPhone, can connect to.

1 Like

Thanks!

The main reason I used that approach was that I have read about the issues of the Nextcloud-integration with subdirectories - and even after searching, it was still not clear to me whether that had been resolved by Jolla or not. The CalDav-integration was working, at least up until 3.2, so I went with that first. If there is any chance to get the Nextcould-integration working instead, that would of course be a bonus.

The server is replying with an error 503 on the PUT, which corresponds to a server error (as far as I know). I’m wondering if the sent data are responsible…

Could you try to send PUT requests with curl ? Something like:

  • curl -X PUT -u login:password -F "Content-Type : text/calendar; charset=utf-8" -F "file=@plop.ics" http://example.com/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/, changing of course your login and password, the destination URL and the name of the file used to store the data.

Can you try with these two sets of data:

Full data

BEGIN:VCALENDAR
PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN
VERSION:2.0
X-KDE-ICAL-IMPLEMENTATION-VERSION:1.0
BEGIN:VTIMEZONE
TZID:Europe/Amsterdam
BEGIN:DAYLIGHT
TZNAME:NST
TZOFFSETFROM:+001932
TZOFFSETTO:+011932
DTSTART:19160501T234028
RDATE:19160501T234028
RDATE:19170417T014028
RDATE:19180402T014028
RDATE:19190408T014028
RDATE:19200406T014028
RDATE:19210405T014028
RDATE:19220327T014028
RDATE:19230602T014028
RDATE:19240331T014028
RDATE:19250606T014028
RDATE:19260516T014028
RDATE:19270516T014028
RDATE:19280516T014028
RDATE:19290516T014028
RDATE:19300516T014028
RDATE:19310516T014028
RDATE:19320523T014028
RDATE:19330516T014028
RDATE:19340516T014028
RDATE:19350516T014028
RDATE:19360516T014028
RDATE:19370523T014028
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:AMT
TZOFFSETFROM:+011932
TZOFFSETTO:+001932
DTSTART:19161001T224028
RDATE:19161001T224028
RDATE:19170918T024028
RDATE:19181001T024028
RDATE:19190930T024028
RDATE:19200928T024028
RDATE:19210927T024028
RDATE:19221009T024028
RDATE:19231008T024028
RDATE:19241006T024028
RDATE:19251005T024028
RDATE:19261004T024028
RDATE:19271003T024028
RDATE:19281008T024028
RDATE:19291007T024028
RDATE:19301006T024028
RDATE:19311005T024028
RDATE:19321003T024028
RDATE:19331009T024028
RDATE:19341008T024028
RDATE:19351007T024028
RDATE:19361005T024028
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:+0120
TZOFFSETFROM:+011932
TZOFFSETTO:+0120
DTSTART:19370701T224028
RDATE:19370701T224028
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:+0020
TZOFFSETFROM:+0120
TZOFFSETTO:+0020
DTSTART:19371004T024028
RDATE:19371004T024028
RDATE:19381003T024000
RDATE:19391009T024000
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:+0120
TZOFFSETFROM:+0020
TZOFFSETTO:+0120
DTSTART:19380516T014000
RDATE:19380516T014000
RDATE:19390516T014000
END:DAYLIGHT
BEGIN:DAYLIGHT
TZNAME:CEST
TZOFFSETFROM:+0020
TZOFFSETTO:+0200
DTSTART:19400516T234000
RDATE:19400516T234000
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19790930T030000
RRULE:FREQ=YEARLY;UNTIL=19961027T030000;BYDAY=-1SU;BYMONTH=9
END:STANDARD
BEGIN:STANDARD
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19971026T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:STANDARD
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19421103T024000
RDATE:19421103T024000
RDATE:19431004T020000
RDATE:19441002T020000
RDATE:19450916T020000
RDATE:19770925T030000
RDATE:19781001T030000
RDATE:19950924T030000
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:DAYLIGHT
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19430329T010000
RDATE:19430329T010000
RDATE:19440403T010000
RDATE:19450402T010000
RDATE:19770403T020000
RDATE:19780402T020000
RDATE:19790401T020000
RDATE:19800406T020000
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20210301T204745Z
CREATED:20210301T204745Z
UID:F1498EC9-7F67-46B8-B0A2-61FE8AFCFAB3
LAST-MODIFIED:20210301T204745Z
SUMMARY:Test
DTSTART;TZID=Europe/Amsterdam:20210301T220000
DTEND;TZID=Europe/Amsterdam:20210301T230000
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

Without timezone definition

BEGIN:VCALENDAR
PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN
VERSION:2.0
BEGIN:VEVENT
DTSTAMP:20210301T204745Z
CREATED:20210301T204745Z
UID:F1498EC9-7F67-46B8-B0A2-61FE8AFCFAB3
LAST-MODIFIED:20210301T204745Z
SUMMARY:Test
DTSTART:20210301T220000
DTEND:20210301T230000
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

Notice that to be compliant, the file should be saved with DOS end of lines.

I’ve changed the way the timezone is exposed some versions ago because the implementation in OpenXchange server was having issues with the former version. Maybe it is raising an issue with Nextcloud ?

1 Like

Thanks - I will try that some time between tonight and the weekend and will let you know asap.

Unfortunately, that does not seem to be supported by Nextcloud - I get back

<?xml version="1.0" encoding="utf-8"?>

<d:error xmlns:d=“DAV:” xmlns:s=“http://sabredav.org/ns”>
<s:exception>Sabre\DAV\Exception\Conflict</s:exception>
<s:message>PUT is not allowed on non-files.</s:message>
</d:error>

I’ve also tried curl -X PUT -u login:password -F "Content-Type : text/calendar; charset=utf-8" -F "file=@plop.ics" http://example.com/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/plop.ics
but that resulted in

<?xml version="1.0" encoding="utf-8"?>

<d:error xmlns:d=“DAV:” xmlns:s=“http://sabredav.org/ns”>
<s:exception>Sabre\DAV\Exception\UnsupportedMediaType</s:exception>
<s:message>This resource only supports valid iCalendar 2.0 data. Parse error: This parser only supports VCARD and VCALENDAR files</s:message>
</d:error>
To make certain that this was not due to me messing up the file while copying from the forum, I also tried the same with an appointment that I had previously downloaded from the same Nextcloud calendar, but same result.

I tried this approach as well, while only enabling calendars and setting the paths as you described. Unfortunately, that also failed with “Could not create account. Check sign-in details and try again. Authentication failed for URL: https://SERVER//SUBDIRECTORY/remote.php/dav/ocs/v2.php/cloud/user”. On the server, I get this in the log:
default nnn.nnn.nnn.nnn - - [18/Mar/2021:22:17:35 +0100] "GET /SUBDIRECTORY/remote.php/dav/ocs/v2.php/cloud/user HTTP/1.1" 404 0 "" "Mozilla/5.0"
Normally, the ocs directory is at the root of SUBDIRECTORY - are you using any rewrites with regard to ocs?

Sorry, my curl-foo is really bad. I didn’t try it actually with my own caldav provider to see if it was working, but rely on Internet suggestions. My bad. Spending a bit more time this morning on trials and errors with mailbox.org, here is a command that works for it and may work for Nextcloud servers :
curl -i -u LOGIN:PASSWORD -T plop.ics https://example.com/SUBDIRECTORY/remote.php/dav/calendars/USER/reminders/

Hopefully we can sort all this out. Let’s try.

1 Like

The directory structure for my setup looks like this - /var/www/html/nextcloud/ocs/ so no, I’m not.

This one works - for both versions of the ICS file you posted earlier (though I put one in a new calendar due to ID conflict). So, that does not seem to explain the 503 I get when trying to sync with the phone. I also dove into the nextcloud.log once more in the hope of finding some entries that correspond to the 503s in the web server log from the failed sync attempts, but no such luck, unfortunately.