Syncing Nextcloud CardDAV with Apple Contacts

Hi all,

I have been trying all week to sync Nextcloud Contacts to Apple Contacts on macOS via CardDAV, but macOS will not pull any contacts. The same Nextcloud Contacts account syncs correctly to an Android device using DAVx⁵, which suggests the server-side data and credentials are OK.

Environment (anonymised)

Nextcloud Contacts hosted on a home server/NAS.

Accessed over HTTPS. In my case this is via a private network overlay (e.g., a tailnet), but the endpoint is reachable from the Mac and has a valid certificate.

Nextcloud is served on a non-standard HTTPS port (not 443).

Authentication is via a Nextcloud app password.

Issue on macOS

I can add the CardDAV account, but the address book remains empty in Apple Contacts.

In some attempts, the Contacts toggle in System Settings, Internet Accounts enables and then automatically disables again.

What I have verified

  1. TLS and connectivity from the Mac are OK

A curl test to the DAV endpoint succeeds with certificate verification.

Hitting the DAV endpoint without credentials returns HTTP 401 and a Basic auth challenge, which is expected.

  1. The address book is populated and accessible

Nextcloud Contacts web UI shows approximately 90 contacts in the address book.

A PROPFIND against the CardDAV address book collection using curl with Basic auth and the app password returns many .vcf entries (so the collection is populated and accessible with the same credentials macOS should be using).

  1. macOS configuration attempts

Tried adding the account in System Settings, Internet Accounts using:

Host and port (with and without https scheme).

The higher-level DAV endpoint (…/remote.php/dav/).

The full address book collection URL (…/remote.php/dav/addressbooks/users/USERNAME/ADDRESSBOOK/).

Where macOS lets me add the account, it still pulls no contacts.

Additional observation

After adding the CardDAV account, macOS shows:

Server address set to the host and port

Port set correctly

Use SSL enabled

Server path often ends up blank (even if I originally entered a deeper DAV URL)

Questions

Are there known issues with Apple Contacts CardDAV against Nextcloud when:

Nextcloud is served on a non-standard port, or

macOS does not correctly retain or use the DAV server path for discovery?

Are there specific endpoints that macOS requires to succeed (for example well-known redirects or principal discovery), even if the address book collection itself is accessible?

If helpful, I can provide anonymised results (status codes only, no URLs) for PROPFIND requests against:

/remote.php/dav/principals/users/USERNAME/

/remote.php/dav/addressbooks/users/USERNAME/

as well as the relevant Nextcloud log errors at the moment macOS attempts to sync.

I have also tried doing this on an iPhone and a separate Macbook with pretty much the same results.

Any help would be greatly appreciated.

Thanks in advance.

Hi,

I guess it’s a bug of the Addressbook app since macOS 26 (macOS 15.7.3 syncs without issue). The Calendar app, even of MacOS 26, syncs fine with the same access credentials (https://__.__/remote.php/dav/principals/users/’name’/)

I’ve found a client app in the store wich syncs without any change on the server (NC 32.0.3 / Apache2 / php8.4).

Let’s hope the bug will be fixed soon.

Kind regards
C.

Having the same issue with 26.3.1 and it’s interesting that the simply discovery (nextcloud.my.tld) works fine without problems but there isn’t any sync - trying the way via https://__.__/remote.php/dav/principals/users/’name’/ also auto-discovers and surprisingly syncs. It’s not that unfamiliar that Apple messes up the DAV-syncs from one update to the other but it’s still quite strange, especially as CalDAV works with the same initial setup without any problems. It’s a surprise bag with every iteration of macOS seemingly…

Hey,

I had exactly the same problem, while syncing worked flawlessly on my mac with MacOSX Sequoia and found the following httpd log-entries:

"PROPFIND /.well-known/carddav HTTP/1.1" 301 746 "-" "macOS/26.5 (25F71) AddressBookCore/2732.600.11"
“PROPFIND / HTTP/1.1” 405 1594 “-” “macOS/26.5 (25F71) AddressBookCore/2732.600.11”
“PROPFIND /principals/ HTTP/1.1” 405 1598 “-” “macOS/26.5 (25F71) AddressBookCore/2732.600.11”

These made me curious if MacOS Contacts doesn’t accept the redirect.
Can you check for a PROPFIND redirect to http-protocol-scheme with curl?

curl -v -X PROPFIND "https://yourserver.com/.well-known/carddav" -H "Depth: 1"

Check for something like:

< location: http://yourserver/remote.php/dav/

If you find a https to http redirect, then MacOS Contacts won’t sync in MacOSX Tahoe anymore. (security reasons?)

I’ve configured a redirect from /.well-known/carddav and /.well-known/caldav to /remote.php/dav/ in my istio-virtual-service. You’ll probably need a similar config in your nginx- or apache-config.

This fixed the syncing issue for me.

I have overwriteprotocol set to https in my (reverse-)config.php, but it seems that this configuration is not used in this case.