I learned to be suspicious of any posts that said things like "This should work!" instead of "Here are step by step instructions for what I actually did that worked for me under these conditions on this date." Things that work for Windows don't necessarily work for Macs. Things that work at one time, don't necessarily work at another time.
Sometimes there was just one little detail missing, obvious afterwards but undocumented and costing an hour or two of messing around to find. Sometimes I gave up on a promising solution (such as radicale) because I just couldn't find that one missing step. That's why complete documentation of someone's experience is so valuable for someone trying to recreate another person's success.
Here's what worked for me (on Jan 2019), a setup that used apache, DAViCal, postfix, dovecot on CentOS 7 in VirtualBox on macOS 10.14:
"Replacement of macOS Server: Calendar, Contacts, and Mail"
It was broken by the end of year due to changes by Apple, requiring the following fix (as of Dec 2019):
"New self-signed SSL Certificate for iOS 13"
Good luck. It's satisfying to get one's own server working, but it might take on-going maintenance.
In hindsight it's probably better to spend the money on a hosted solution.
I'm not as clever as the individual who wrote this useful blog, but in my case I set up an account with Fruux, who offers vcard and vcal as a service. It syncs perfectly across several OSes (on Windows I used eMclient, and on Linux as I mentioned I've struggled). Anyone who wants to avoid setting up custom servers, Fruux handles that part easily.
This afternoon I'll try to see if I can get vdirsyncer and khard working. I really wish the likes of thunderbird and kmail offered better carddav and caldav support. Evolution does, but I'm not a huge fan of Evolution (and not sure why).
Works great with iOS and MacOS out of the box, never had issues with it.
Edit: looks like they found and fixed the issue on their own, I just tried it again and it worked.
Usually when people say they don’t like CalDAV or CardDAV, they mean they don’t like XML, non-GET verbs, and Versit Consortium syntax (none of which are in conflict with REST)?
I’ll admit Versit syntax, with it’s significant whitespace, among other warts, is a bit of a pain.
JMAP is really the same data model as CardDAV and CalDAV, just with different encodings of everything, if that’s what you want.
I finally got the caldav part of it to work for a group of people using various flavors of Mac, Linux, and Windows -- PCs and phones. It was a huge pain in the ass, because each client accepted a different form of base-url-plus-calendar-locator, and some very non-technical users were on the other side of the planet, and it took weeks of trial and error before we got everything working.
Carddav looks hopeless, I can't even something that works between DavX5 on my android phone, and whatever the hell my wife's iPhone needs, and we're in the same room.
The last commit to master on their GitHub repo was yesterday
Here's a dockerfile for Radicale if anyone wants to try it:
CardBook for Thunderbird is another great plugin. Between all those tools, I have cal/contact sync across my Linux boxes and Android devices.
I'm not sure I understand what this means; how does Finder access and sync contacts?