Why doesn't calendar sync to iOS work?

Following the instructions here I installed nextcloud on an Ubuntu 16.04 server using the snap package. I synced the calendar to my Android phone and to my Ubuntu desktop. I now also made an account for my girlfriend and want to sync the calendar to her iPhone. I followed the steps I found in the documentation here, but unfortunately it doesn’t work.

It first says “Cannot Connect Using SSL” (even though I configured ssl with letsencrypt, which works perfect from both the browser and with syncing to my Android phone). If I click “Continue” it checks for non-ssl connection, which fails with a message saying “Unable to verify account information”.

I triple checked the credentials and the url, and they’re absolutely correct. I also included my username in the url as instructed.

Following the troubleshooting instructions here I then tried the following urls (with both http and https):

After this I tried the tips in this frustration filled post, and some variations of it, but that didn’t work either. In that post he talks about the fact that Letsencrypt isn’t support by Apple (why, Apple, why?). So could it be that because I use letsencrypt, and I have a redirect from http to https, that this doesn’t work? If so, how could I disable the redirect from http to https? I checked, but neither apache nor nginx is installed on the server. I guess the snap includes a server, but I have no experience with Snaps so far, so their kind of a black box for me.

Does anybody know what could be wrong or how I can further debug this? All tips are welcome!

Check if service-discovery is working: visit with a browser https://cloud.myserver.com/.well-known/caldav
This should redirect you to the webdav interface and after entering user credentials you should see “This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.”

If this is working, do that on the iOS device:
Settings -> “accounts+passwords” -> “add account” -> “other” -> “add caldav account”

As server enter only the domain name nothing else (in your example this would be “cloud.myserver.com”). Also enter username and password for the nextcloud user and hit “proceed” in the upper right corner.

With working service-discovera iOS will automatically discover the proper url. Letsencrypt is no problem for iOS - it works here without any issues for the last year or so.

Good luck!

1 Like

I thought I tried your tips a while back but today I tried it again, and now it worked. Thanks a million!

1 Like

I’ve got exactly the same problem as you described below, but when I try to add the caldav account I get the following error:
Verbindung über SSL unmöglich…
In English:
Cannot connect using SSL

I read about some Problems with SSL Certificates while syncing Reminders on IOS 13 but they said, calendar sync works…

I’ve got an valid Let’s encrypt certificate but it sounds like Apple don’t want to accept this…

There should not be any problems with a Let’s encrypt certificate since they meet apples requirements (well…, at least mine does).

Could you describe how exactly you tried to add the caldav account to iOS?

I tried several things in Settings -> “accounts+passwords” -> “add account” -> “other” -> “add caldav account”
In the Sever line I tried:

But every time I try it with SSL it says “Cannot connect via SSL” and without SSL it says something like, “user can’t be authorized”. Which could be an effect of the “enforce https” in my nc settings.

Is service discovery working?

Yes, service discovery is working.
I think the URL is right and there’s something with the Certificate…

https://support.apple.com/en-us/HT210176 (stricter certificate checking since ios 13)
All points agree with the Let’s encrypt certificate i think. Only in the third one I am not sure…
I am using Nextcloudpi running in a docker on my QNAP-NAS. The Docker changes it’s Mac-Adress every reboot.
So the portforwarding on my FritzBox isn’t done with the Mac-Adress but with the static IP set in Docker.
Is it possible that Apples “certificate-checing” thinks this is an security lack of the certificate?

Is there an way to find out what the problem of IOS with the certificate is? Log file?

I hope you could understand what i want to say with my bad english… :-3
Much thanks to this point…

I am also using a Let’s encrypt certificate and it does satisfy Apples requirements for iOS13.

I don’t think so.

The webservers log file might give more hints. Make sure to delete eventually existing caldav-accounts of your Nextcloud from iOS, then add a caldav-account exactly like described here. Only post the loglines from the device you are trying to setup within 3 backticks (see “CODE BLOCKS → 2)”).

Thanks for your help but did it on a other way…
I set up a new container an gave it a hostname and a static Mac-Adress in the container station settings.
And that was it…
Now the portforwarding in my router isn’t only linked to the IP-Adress but also to the Mac-Adress and I think that was the problem. Because IOS could’t be sure of the identity of my Nextcloud because of no static IP.
So calendar and also the reminder sync. works without problems.

1 Like

I’ve been having the same issue… so I deleted the Apple Contact Book off of my MAC and starting to watch the apache Access Logs for signs of life…

Eventually I broke up the server address and the Contact book address as follows:

Server Address: domain.tld
Server Path: /remote.php/dav/principals/users/username/

(keep in mind, if your nextcloud implementation is not in the root, (as Nextcloud suggests it shouldn’t be), you should add that to the beginning of the server path. In my case the server path was: /nc/remote.php/dav/principals/users/username/

Beyond that, I selected SSL and entered the port 443.

After a few seconds, I noticed the contacts started to synchronize.

Hope that helps anyone else experiencing the same or similar issue.

Good luck!

1 Like

Most valuable answer !!! Thank you